Domain: accu.org
Stories and comments across the archive that link to accu.org.
Comments · 78
-
Re:The Practice of Programming
I got no problem with the other titles, but Writing Solid Code is crap. Not even because of "lol, microsoft" but because it's actually crap.
-
Re:Normal people don't need faster computers
Check it out:
They also have a discussion list. I think it would be a good idea to see if anyones interested in a "wikibooks" project, i.e. people contribute small articles, and over-time the community edits it into something cohesive.
http://en.wikibooks.org/wiki/WB:FB
When dealing with teaching, one should teach from the ground up. I've seen way too many programming books that assume previous knowledge and most are really bad. I like the zero-to-hero mentality, where you take someone knowing nothing all the way through. But when you write an article that assumes previous knowledge, you outline for others where they should go, what they should read if they are just starting. Too much knowledge is too fragmented, most peoples knowledge is highly fragmented, they need to know all the necessary concepts in order to further understand and use someones understanding, each link in the chain should ideally be easily linked to and found. Since when most people need to start at the beginning and work their way up, and frequently go back and forth for areas they are weak in.
I've been trying to find good 'self-teaching' resources for a while to take someone from absolutely zip understanding all the way through step-by-step, because much programming and programmers, unfortunately have started way too far up the abstraction chain and have little to zip understanding of what is going on.
Andre lamothe has some interesting things going on here, as he too was frustrated by 'dumb developers'
-
Criticism on C++ Primer Plus
This book is often criticized, and it should not be confused with the C++ Primer by Stanley Lippman, a real C++ expert. I found two reviews on ACCU:
http://accu.org/index.php/book_reviews?url=view.xqy?review=cp003131
http://accu.org/index.php/book_reviews?url=view.xqy?review=cp001702Neither review recommends this book. Francis Glassborow even said "there is nothing in this book that is appropriate to the needs of someone learning C++ in the twenty-first century". Brian Bramer was kinder, and said "this a very readable book with clear up-to-date explanations
... Suitable for beginner self- teaching who finds the more academic books hard to read", but he also mentioned it was heavily C-based, and did not talk enough about STL. In fact, the author also wrote C Primer Plus, and that may explain something. -
Criticism on C++ Primer Plus
This book is often criticized, and it should not be confused with the C++ Primer by Stanley Lippman, a real C++ expert. I found two reviews on ACCU:
http://accu.org/index.php/book_reviews?url=view.xqy?review=cp003131
http://accu.org/index.php/book_reviews?url=view.xqy?review=cp001702Neither review recommends this book. Francis Glassborow even said "there is nothing in this book that is appropriate to the needs of someone learning C++ in the twenty-first century". Brian Bramer was kinder, and said "this a very readable book with clear up-to-date explanations
... Suitable for beginner self- teaching who finds the more academic books hard to read", but he also mentioned it was heavily C-based, and did not talk enough about STL. In fact, the author also wrote C Primer Plus, and that may explain something. -
One book I recommendTSP: Coaching Development Teams by Watts Humphrey of the Carnegie Mellon Software Engineering Institute. I picked up this book when I was interviewing for a team leader position. It discusses the Team Software Process.
Humphrey has written quite a few books on software engineering and management, and you would do well to read the lot of them. However, most software engineers would probably find his methodology too formal, as most programmers I know prefer a loose, casual working style. But there's no doubt that the SEI's methods are worthwhile when quality and reliability is important.
Also, before buying any technical book, check to see if the Associaton of C and C++ Users has reviewed it - try typing "management" into the search for their. (I'm afraid their book review server is down just now but I expect it will be back up soon.)
The ACCU makes a point of reviewing books that they suspect might be stinkers, so they can write reviews that warn you away from books that suck.
-
Book reviews
Look at the ACCU book reviews, preferably by subject for books on Algorithms and Data structures (there's a lot of overlap). -
Book reviews
Look at the ACCU book reviews, preferably by subject for books on Algorithms and Data structures (there's a lot of overlap). -
Book reviews
Look at the ACCU book reviews, preferably by subject for books on Algorithms and Data structures (there's a lot of overlap). -
Book reviews
Look at the ACCU book reviews, preferably by subject for books on Algorithms and Data structures (there's a lot of overlap). -
ACCU Reviews
Always a good idea to check the book review at ACCU before you buy any book. The reviewers here are mostly experts in the subject matter.
-
Re:Where are the following?
C++: The Complete Reference by Herbert Schildt
Haven't read Schildt's C++ book but his C Book used to be notorious.
Check Seeb's review
Most of these errors must have been corrected by now, however.
Also check the ACCU reviews
MFC Programming from the GROUND UP 2nd Ed by Herbert Schildt [Not Recommended] (Reviewed Jul 1999)
C++ from the Ground Up (2nd ed) by Herbert Schildt [Not Recommended] (Reviewed Mar 1998)
Java Programmers Reference by Joe O'Neil & Herbert Schildt [Not Recommended] (Reviewed Mar 1998)
Windows NT 4 Programming from the Ground Up by Herbert Schildt [Not Recommended] (Reviewed May 1998)
C++ from the Ground Up by Herbert Schildt [Not Recommended] (Reviewed Sep 1998)
Expert C++ by Herbert Schildt [Not Recommended] (Reviewed Sep 1998)
STL Programming from the Ground Up by Herbert Schildt [Not Recommended] (Reviewed Jan 2000)
C: The Complete Reference 4ed by Herbert Schildt (Reviewed Jul 2000)
C/C++ Programmer's Reference 2ed. by Herbert Schildt (Reviewed Sep 2000)
Most of his books have a "Not recommended" review. -
ACCU in the UK
The ACCU, which is primarily UK-based but has a US chapter, produces a bi-monthly magazine that is primarily focused on C and C++, but also covers Java and Python. It also has excellent book reviews and runs a cracking conference (in the UK) every year.
-
zerg
I like Dr. Dobbs Journal, C/C++ Users Journal, Communications of the ACM and IEEE CGA.
If you haven't heard of DDJ or CUJ before, give them both a try. DDJ covers all sorts of stuff and (as an example) the October '05 CUJ had the best accidental intro to template metaprogramming I've ever seen.
One of CACM's selling points is that the articles are regularly featured on slashdot. :p
IMO, IEEE CGA is much more useful to me than any of ACM's SIGGRAPH stuff. This is only relevant if you're into computer graphics at all.
I'm thinking of joining the Association of C/C++ Users for it's C-Vu journal, I dunno.
I read 2600 for the hell of it.
Your mileage will vary. -
Comprehensive List of Book ReviewsA wise and learned former colleague pointed me at the Association of C and C++ Users book reviews when I asked about getting a modern C++ book.
Don't let the name of the Association mislead you, they deal with many other programming languages and subjects too.
-
ACCU conference slides informationThe ACCU requests that speakers provide a pdf of their slides which are then made available via the ACCU site (this pdf is not on the conference CD, so I guess Coplein might not have supplied it yet; cutoff was two weeks ago).
Coplein also ran a lunchtime birds of a feather session which was very well attended. I was running a parallel session involving a psychology experiment and only had 11 people show up (last year my 40 question packs ran out).
Herb Sutters talk was also very popular (the pdf of his slides is on the conference CD, as is the pdf of Angelika Langers interesting 60+ slides on wildcards in Java).
-
Recommended Reading: Quality Web SystemsI haven't read it yet, but it's review at the Association of C and C++ Users says it's good. It emphasizes the importance of validating any data received over the network, especially not to trust it.
-
Recommended Reading: Quality Web SystemsI haven't read it yet, but it's review at the Association of C and C++ Users says it's good. It emphasizes the importance of validating any data received over the network, especially not to trust it.
-
Herb is a genius
Herb Sutter, the author of the article, is a voice worth respecting. He's chair of the C++ standards committee, and although he now works for Microsoft, he isn't actually evil. He's Canadian, for a start. He is also actively steering the Microsoft C++ compiler towards standards compliance, and he even managed to get a room full of C & C++ programmers to give a spontaneous round of applause to the guy that implemented partial specialisation in MSVC++. That was at the ACCU conference in 2003.
-
Re:Anyone recommend c# books/tuts for beginners?
I hope that book is better than his dreadful Teach Yourself C++ in 10 minutes, which really put me off the author.
-
C++ Books
If you are looking for C++ book recommendations, here are the best two web sites that I know of:
www.accu.org/bookreviews/public/index
This is probably the most complete and accurate list of C/C++ book reviews you are ever likely to find. Unlike the reviews you find on places like amazon.com which are written by the unwashed masses, these reviews are written by the experts who really do know a good book from a bad one!
www.cs.technion.ac.il/users/yechiel/CS/BadBooksC+C ++
This won't tell you which book(s) to buy, but which one's to avoid! -
You can't be serious.
The Que book is littered with omissions and errors. If you want to learn C++, start with the free Bruce Eckel e-book Thinking in C++, then move on to the Meyers trio, the Sutter pair, Gang of Four, Dewhurst, Alexandrescu, then Agile Software Development, in that order.
See Accu's booklist, EfNet #c++'s book list, or Yechiel Kimchi's list of bad books for opposing opinions. -
Richard Burgess's "Developing Your Own 32-Bit OS"
Richard Burgess's "Developing Your Own 32-Bit Operating System":http://www.amazon.com/exec/obidos/ASIN/0672306557
Used to be published by SAMS, but they no longer list it. Now available as an online download./ http://www.accu.org/bookreviews/public/reviews/d/
d 000481.htm
-
Writing correct code in C++
What are your views on the difficulty of writing correct code in C/C++ versus say Java or C#?
The question wasn't directed to me, but I hope you won't mind if I chime in here.
Modern C++ allows you to cut out whole classes of errors by following just a few simple rules. If you're interested, here are some starting points to consider.
- You should almost never use a "raw" array. Arrays are a primitive, low-level tool. In higher level code, they are best replaced by container classes. The standard library provides several useful basic cases: vector, string, list and map are perhaps the most useful. These are all more powerful and safer than raw arrays.
- You should almost never use a "raw" pointer. For many tasks where pointers were used in C, references are a cleaner and safer solution in C++. For simple dynamic memory allocation, "smart pointer" classes are both more powerful and safer: the standard library provides the somewhat limited auto_ptr, and several more are widely available. For complex data structures involving many indirections, smart pointers are a good starting point, and may be enough even in quite complicated cases. If not, you can build your own tools using the same ideas, and then use these in your higher level code.
- Understand the "resource acquisition is initialisation" idiom, and use it religiously. It's mentioned in several of the better textbooks, and I'm sure a quick web search will find you an explanation. This idiom is the basic reason why containers and smart pointers are safer than the raw equivalents. Using it always will pretty much guarantee that you never leak a resource -- memory or otherwise -- from a C++ program again.
- Read Josuttis's book on the standard library.
- Visit Boost. There are many wonderful toys here, some fixing basic limitations the standard library forgot, some useful general purpose tools (such as various smart pointers, as mentioned above) and some just awesomely powerful extensions (full blown libraries for regular expressions, expression templates, and other goodies).
If you're interested in learning how to program C++ safely, cleanly and efficiently, I promise you that all of the above are worthwhile investments of your time. When you're done, you'll find it even more offensive that so many C++ programs have memory leaks, buffer over-run vulnerabilities and seg faults through following NULL pointers. Your programs won't, though.
-
C/C++ book anti-recommendationNever buy a book by Herbert Schildt. They are typically full of errors and programming pitfalls that make experienced coders and language lawyers cringe.
Some people like his writing style but tutorial and reference books are not novels. It is unacceptable when they are full of mistakes especially when the author does not understand his own errors and appears authoritative to those that do not know an better yet and are just learning the ropes.
This is not a flame, it is important to warn everybody about some BAD C/C++ books out there. You can read more about the opinions of Schildt's books at the ACCU book reviews. The alt.comp.lang.learn.c-c++ FAQ has more info on why not to use his books. In particular The Annotated Annotated C Standard lists many of the problems in Schildt's The Annotated C Standard including errors in the transcription of the standard itself.
-
The first edition ...
... is reviewed here, at the 'net's largest C++-oriented book review site. This review is decidedly in the negative, although Steve Oualline is given a chance to issue a response which is worth reading.
It seems that the 2nd edition of this book may have brought forward some previous problems. I have the first edition but never liked it, never thought it really achieved it's goals.
If you're looking for an uncompromisingly amazing first book on C++, please check out Accelerated C++ by Andrew Koenig and Barbara Moo. This is how I learned C++ and, by using the concepts of teaching core language skills alongside library concepts and best practices in OOP, it truly accelerates the process. Amazing. -
The first edition ...
... is reviewed here, at the 'net's largest C++-oriented book review site. This review is decidedly in the negative, although Steve Oualline is given a chance to issue a response which is worth reading.
It seems that the 2nd edition of this book may have brought forward some previous problems. I have the first edition but never liked it, never thought it really achieved it's goals.
If you're looking for an uncompromisingly amazing first book on C++, please check out Accelerated C++ by Andrew Koenig and Barbara Moo. This is how I learned C++ and, by using the concepts of teaching core language skills alongside library concepts and best practices in OOP, it truly accelerates the process. Amazing. -
Re:Bullschildt
Visit ACCU's book corner for some opinions about Schildt and his well-liked books. Well, a lot of people like the Bible or Star Wars... wether it helps them a lot in practice is another question.
-
They're at the Association of C & C++ UsersOne of the nice things about the Association of C and C++ Users book reviews section is that they actively seek out bad technical books to review in order to warn people against them.
If you're thinking of buying a technical book, it's well worth your while to check out its ACCU review just in case it turns out to be a stinker.
Here's an example of a "not recommended" review.
here's a "highly recommended" review.
I don't expect that the ACCU will be reviewing works of fiction, but they do reviews on quite a wide variety of subjects and not just C and C++.
The ACCU has some great mailing lists too. If you program in C, C++, C# or Java, you really should join.
-
They're at the Association of C & C++ UsersOne of the nice things about the Association of C and C++ Users book reviews section is that they actively seek out bad technical books to review in order to warn people against them.
If you're thinking of buying a technical book, it's well worth your while to check out its ACCU review just in case it turns out to be a stinker.
Here's an example of a "not recommended" review.
here's a "highly recommended" review.
I don't expect that the ACCU will be reviewing works of fiction, but they do reviews on quite a wide variety of subjects and not just C and C++.
The ACCU has some great mailing lists too. If you program in C, C++, C# or Java, you really should join.
-
They're at the Association of C & C++ UsersOne of the nice things about the Association of C and C++ Users book reviews section is that they actively seek out bad technical books to review in order to warn people against them.
If you're thinking of buying a technical book, it's well worth your while to check out its ACCU review just in case it turns out to be a stinker.
Here's an example of a "not recommended" review.
here's a "highly recommended" review.
I don't expect that the ACCU will be reviewing works of fiction, but they do reviews on quite a wide variety of subjects and not just C and C++.
The ACCU has some great mailing lists too. If you program in C, C++, C# or Java, you really should join.
-
They're at the Association of C & C++ UsersOne of the nice things about the Association of C and C++ Users book reviews section is that they actively seek out bad technical books to review in order to warn people against them.
If you're thinking of buying a technical book, it's well worth your while to check out its ACCU review just in case it turns out to be a stinker.
Here's an example of a "not recommended" review.
here's a "highly recommended" review.
I don't expect that the ACCU will be reviewing works of fiction, but they do reviews on quite a wide variety of subjects and not just C and C++.
The ACCU has some great mailing lists too. If you program in C, C++, C# or Java, you really should join.
-
They're at the Association of C & C++ UsersOne of the nice things about the Association of C and C++ Users book reviews section is that they actively seek out bad technical books to review in order to warn people against them.
If you're thinking of buying a technical book, it's well worth your while to check out its ACCU review just in case it turns out to be a stinker.
Here's an example of a "not recommended" review.
here's a "highly recommended" review.
I don't expect that the ACCU will be reviewing works of fiction, but they do reviews on quite a wide variety of subjects and not just C and C++.
The ACCU has some great mailing lists too. If you program in C, C++, C# or Java, you really should join.
-
Re:ACCU.org
Link to ACCU.
-
Why I don't like big computer booksI take issue with the statement in the post:
We all want 'big books'
My experience has overwhelmingly been that big computer books are a poor investment. I guess big books sell better, which is why one sees so many in the bookstores, but I have learned to skip over them and look for the little books.Why?
Big computer books are often filled with fluff, such as large illustrations, fancy typography or sidebars that don't add much meat.
What is really worse is that it takes a lot more work for a writer to explain a complex point concisely. I imagine it also takes more works for the editors to cut down on material that doesn't really add value to the book. My experience is that the big computer books are often poorly written.
Also, I don't have enough time to read all the technical books. It simply takes less time to read a compact, well-written book than a big, verbose tome. There's also the problem of fitting a bunch of big computer books on my limited bookshelf space.
I have observed that there seem to be an awful lot of big books for windows & web programming, and Java programming. The situation seems quite a bit better for C++ programming, with such slim books as Scott Meyers' "Effective C++".
There are long books which are worthwhile, but the ones that are both big and good are covering a topic that is very broad and detailed, for example Foley, Van Dam, Feiner and Hughes' "Computer Graphics".
My wife wanted to learn to use cascading stylesheets for her web design. The bookstore had two books, a small one by O'Reilly and a much larger one that seemed to cover the same material but had lots of fancy typography and illustrations and verbose text. In the end she chose the O'Reilly book, and after using it to design a website for some friends of ours she said she was very glad to have gotten the O'Reilly book.
Finally, I'd like to suggest that before you purchase a new technical book, check to see if there is a review of it at the Association of C and C++ Users book reviews section.
-
Why I don't like big computer booksI take issue with the statement in the post:
We all want 'big books'
My experience has overwhelmingly been that big computer books are a poor investment. I guess big books sell better, which is why one sees so many in the bookstores, but I have learned to skip over them and look for the little books.Why?
Big computer books are often filled with fluff, such as large illustrations, fancy typography or sidebars that don't add much meat.
What is really worse is that it takes a lot more work for a writer to explain a complex point concisely. I imagine it also takes more works for the editors to cut down on material that doesn't really add value to the book. My experience is that the big computer books are often poorly written.
Also, I don't have enough time to read all the technical books. It simply takes less time to read a compact, well-written book than a big, verbose tome. There's also the problem of fitting a bunch of big computer books on my limited bookshelf space.
I have observed that there seem to be an awful lot of big books for windows & web programming, and Java programming. The situation seems quite a bit better for C++ programming, with such slim books as Scott Meyers' "Effective C++".
There are long books which are worthwhile, but the ones that are both big and good are covering a topic that is very broad and detailed, for example Foley, Van Dam, Feiner and Hughes' "Computer Graphics".
My wife wanted to learn to use cascading stylesheets for her web design. The bookstore had two books, a small one by O'Reilly and a much larger one that seemed to cover the same material but had lots of fancy typography and illustrations and verbose text. In the end she chose the O'Reilly book, and after using it to design a website for some friends of ours she said she was very glad to have gotten the O'Reilly book.
Finally, I'd like to suggest that before you purchase a new technical book, check to see if there is a review of it at the Association of C and C++ Users book reviews section.
-
Many good C++ links + a warning or two
The problem with on-line C++ is that many people who claim to write about it don't know their subject, and consequently write superficially correct code that actually sucks. I'm sorry to name names, but the much-recommended-here CPlusPlus.com is one such site; their "Hello, world!" program at the start of their isn't even correct. I'd give sites like that a miss if you're seriously interested in learning C++.
One good source of information about C++ (and many other programming-related subjects) on-line is the related Usenet newsgroups, particularly the group specifically for learners if you're just starting out, or the moderated C++ group for more advanced subjects.
Many of these groups also have helpful FAQs, available (as usual) via the Internet FAQ Consortium. Again, for those just starting out, I'd particularly recommend the alt.comp.lang.learn.c-c++ FAQ, which has links to helpful on-line resources, free compilers, etc.
There are a few web sites of which anyone in the C++ field should be aware.
- You can get generally pretty sound book reviews for thousands of books on these and related subjects at the Association of C and C++ Users web site.
- Herb Sutter's web site has lots of informative and thought-provoking C++ articles by one of the guys who's advanced C++ programming technique a lot in recent years.
- Similarly, Scott Meyers' publications page has many worth-reading articles on C++.
- It would be remiss not to mention Boost, a collection of very good general-purpose C++ libraries. If you can't see how to do something with the standard stuff, the answer -- or a useful idea to find it -- may well be here.
There are a few decent on-line references to the standard library:
- Dinkumware make a standard library implementation, which is shipped with Visual C++ amongst other things, and provide some helpful documentation on-line. (NB: The version that shipped with VC++ 6 was flawed in many horrible ways, but that wasn't really Dinkumware's fault given the compiler limitations at the time when they wrote that library; please don't judge them by that alone.)
- SGI's implementation of the "STL" parts of the C++ standard library is excellent, and well-documented on-line.
About the only decent on-line C++ tutorial I know of the electronic version of Bruce Eckel's "Thinking in C++" books. You can find a complete copy of these, and several of his other books, at his books web site. (He also has books on Java, C#, Python amongst other things, and all of his work I've read has been reasonably good.)
-
some quickies...
PHP: PHP.net
Comments: If you've got a programming background, this website is all you need. If you don't have a programming background, an introductory book and this website is all you need.
HTML, Javascript, DHTML, XML, DTD, etc.: W3Schools.com
Comments: Good introductions to a ton of topics on the left-hand side.
SQL: SQLCourse.com
Comments: The first place I ever pointed my students to for SQL and probably the perfect quick source for anything up until the level of stored procedures, transactions, etc., which vary depending on the DB implementation anyway.
C++/C/Java textbooks: ACCU.org
Comments: Lots of book reviews on a bunch of topics. To be honest, I still haven't seen a website that covers these three languages as well as good books do.
After all this, hone your google and google.groups skills and you should be able to solve any problem. -
Re:This guy is hard core
Most of [chomsky's] Linguistics stuff is getting dated now, too.
Questions for the AC:Ever heard of context-free languages? yacc grammars? parsing ?
Thought so.
-
Linux Quality Database and Other ThoughtsI'm a very ardent supporter of Free Software in concept. However, while there are many excellent examples of high quality Free Software products, there are even more that are of very poor quality, and the confusing patchwork produced by integrating this jumble into a typical Linux installation leaves a great deal to be desired.
I'm very impressed with the work of the kernel developers, but when I first joined the linux-kernel mailing list to resolve a bug when I started testing the 2.3 kernels a few months before 2.4 shipped, I found the process of reporting a bug and making sure it got fixed quite intimidating. I think it takes more intestinal fortitude than most people who might otherwise want to help the developers are likely to have.
That's why I started The Linux Quality Database.
My original concept was to provide a powerful bug database to enable end users to conveniently file more useful and informative bug reports, combined with sophisticated search facilities to aid the kernel developers in looking up bug reports.
For example, one might be able to search by the values of kernel
.config file entries as well as hardware that is or isn't present in the user's system. This isn't something you can do with bugzilla, although possibly it could be extended to do so.Unfortunately the dot-com crash happened and I had to bust my ass just to survive so I haven't got anywhere with the bug database yet.
But I also had the idea of using the site to educate other programmers, testers and users about how they can improve the quality of all Free Software, not just the kernel. So I started writing articles on various topics as they occured to me and posting them in the articles section. All my articles are under the GNU Free Documentation license. The Open Source Development Lab mirrors a couple of them and I'm quite stoked to report has made Japanese translations.
I invite others to contribute articles or advice, and of course since the articles are under the GFDL you are welcome to republish them elsewhere or include them in distributions of Linux or other software.
The articles available so far are:
- Why We Should All Test the New Linux Kernel
- Using Test Suites to Validate the Linux Kernel
- Use Validators and Load Generators to Test Your Web Applications
- Pointers to C++ Member Functions
I think it's important to take personal responsibility for improving software quality. Rather than griping about Microsoft, your managers or your coworkers, strive to write better code yourself, educate your coworkers (for example by writing articles like I do), and stand up for yourself when the management attempts to bully you into writing bad code.
Don't just try hard. That's like pushing against a stone wall. Learn better practices, and also reflect upon past experiences in your own work and that of others to understand what works well and what doesn't.
In the last couple of years I have found that adopting unit testing and automated functional testing, as well as frequent use of assertions has enormously improved the quality of my own work.
They have also improved my productivity and made my experience of developing it much more pleasant. It's also impressed my clients because my code works so much better than that developed by their own programmers in house, so that despite their urgency to get code into production yesterday, they have been very supportive of my automated testing strategy and my high personal standards for quality - and they are starting to adopt some of what I do into their own process.
The best book I have found for teaching automated testing is John Lakos' Large Scale C++ Software Design. While much of it is of course C++ specific, the majority of it applies to any language.
One important thing to understand is that programs that have a rat's nest of dependencies between modules are difficult if not impossible to unit test - Lakos details methods to quantify, understand and manage dependencies within a program, not only to aid testing, but to enable module reuse (so modules can be used in other programs without dragging everything else along), aiding comprehension by developers and speeding build times.
-
Some more suggestions....
The OReilly CD bookshelves are really really good value for money, and the space saving on a bookshelf is nothing short of phenomenal (in addition to searchable pages and indexing)
Not all of them are of the same quality, though.. as mentioned earlier, the Perl CD bookshelf is excellent, I'd also highly recommend the Oracle PL/SQL bookshelf (for anyone interested in doing database programming in particular)..
In addition to Code Complete, Rapid Development is also a great book for anyone in the IT industry (this is also written by Steve McConnell).. another couple of great programming books are written by Steve somebody (McGuire ? yup, google tells me that's right.. link here )
Another book highly recommended to me is The Pragmatic programmer, although I haven't gotten hold of a copy yet
:).. You've also missed out some literature on Extreme Programming which might come in handy...and here's the link for the FreeBSD book, mentioned earlier... -
Please Link to ACCU Book Reviews SectionEveryone, I'd like to strongly urge that when you mention a programming book online, not just in this discussion, but in any web page you write or even in email or the Usenet News, that you check the Association of C and C++ Users Book Reviews section, and if you find that the book is in there, provide a link to its review.
The ACCU makes review copies of books available to its members for free, and then the members write reviews that are printed first in the members' magazines, and then archived on the web for all to see. Because these reviews are written by working engineers, they tend to be pretty direct, to the point, and best of all they make it really clear when they recommend against a bad book.
To save you some clicking, here are some links to some of its sections:
- Reviews arranged by subject
- Reviews arranged by Title
- Reviews arranged by author
- Reviews of Highly Recommended Books
- Highly Recommended books on Advanced C
- Highly Recommended books on Java
The ACCU welcomes programmers in "any language the uses curly braces" (like C# and Java) and the reviews cover books on a wide variety of subjects, even awk and astronomy, so do check there even if your book is not on C or C++.
-
Please Link to ACCU Book Reviews SectionEveryone, I'd like to strongly urge that when you mention a programming book online, not just in this discussion, but in any web page you write or even in email or the Usenet News, that you check the Association of C and C++ Users Book Reviews section, and if you find that the book is in there, provide a link to its review.
The ACCU makes review copies of books available to its members for free, and then the members write reviews that are printed first in the members' magazines, and then archived on the web for all to see. Because these reviews are written by working engineers, they tend to be pretty direct, to the point, and best of all they make it really clear when they recommend against a bad book.
To save you some clicking, here are some links to some of its sections:
- Reviews arranged by subject
- Reviews arranged by Title
- Reviews arranged by author
- Reviews of Highly Recommended Books
- Highly Recommended books on Advanced C
- Highly Recommended books on Java
The ACCU welcomes programmers in "any language the uses curly braces" (like C# and Java) and the reviews cover books on a wide variety of subjects, even awk and astronomy, so do check there even if your book is not on C or C++.
-
Please Link to ACCU Book Reviews SectionEveryone, I'd like to strongly urge that when you mention a programming book online, not just in this discussion, but in any web page you write or even in email or the Usenet News, that you check the Association of C and C++ Users Book Reviews section, and if you find that the book is in there, provide a link to its review.
The ACCU makes review copies of books available to its members for free, and then the members write reviews that are printed first in the members' magazines, and then archived on the web for all to see. Because these reviews are written by working engineers, they tend to be pretty direct, to the point, and best of all they make it really clear when they recommend against a bad book.
To save you some clicking, here are some links to some of its sections:
- Reviews arranged by subject
- Reviews arranged by Title
- Reviews arranged by author
- Reviews of Highly Recommended Books
- Highly Recommended books on Advanced C
- Highly Recommended books on Java
The ACCU welcomes programmers in "any language the uses curly braces" (like C# and Java) and the reviews cover books on a wide variety of subjects, even awk and astronomy, so do check there even if your book is not on C or C++.
-
Please Link to ACCU Book Reviews SectionEveryone, I'd like to strongly urge that when you mention a programming book online, not just in this discussion, but in any web page you write or even in email or the Usenet News, that you check the Association of C and C++ Users Book Reviews section, and if you find that the book is in there, provide a link to its review.
The ACCU makes review copies of books available to its members for free, and then the members write reviews that are printed first in the members' magazines, and then archived on the web for all to see. Because these reviews are written by working engineers, they tend to be pretty direct, to the point, and best of all they make it really clear when they recommend against a bad book.
To save you some clicking, here are some links to some of its sections:
- Reviews arranged by subject
- Reviews arranged by Title
- Reviews arranged by author
- Reviews of Highly Recommended Books
- Highly Recommended books on Advanced C
- Highly Recommended books on Java
The ACCU welcomes programmers in "any language the uses curly braces" (like C# and Java) and the reviews cover books on a wide variety of subjects, even awk and astronomy, so do check there even if your book is not on C or C++.
-
Please Link to ACCU Book Reviews SectionEveryone, I'd like to strongly urge that when you mention a programming book online, not just in this discussion, but in any web page you write or even in email or the Usenet News, that you check the Association of C and C++ Users Book Reviews section, and if you find that the book is in there, provide a link to its review.
The ACCU makes review copies of books available to its members for free, and then the members write reviews that are printed first in the members' magazines, and then archived on the web for all to see. Because these reviews are written by working engineers, they tend to be pretty direct, to the point, and best of all they make it really clear when they recommend against a bad book.
To save you some clicking, here are some links to some of its sections:
- Reviews arranged by subject
- Reviews arranged by Title
- Reviews arranged by author
- Reviews of Highly Recommended Books
- Highly Recommended books on Advanced C
- Highly Recommended books on Java
The ACCU welcomes programmers in "any language the uses curly braces" (like C# and Java) and the reviews cover books on a wide variety of subjects, even awk and astronomy, so do check there even if your book is not on C or C++.
-
Please Link to ACCU Book Reviews SectionEveryone, I'd like to strongly urge that when you mention a programming book online, not just in this discussion, but in any web page you write or even in email or the Usenet News, that you check the Association of C and C++ Users Book Reviews section, and if you find that the book is in there, provide a link to its review.
The ACCU makes review copies of books available to its members for free, and then the members write reviews that are printed first in the members' magazines, and then archived on the web for all to see. Because these reviews are written by working engineers, they tend to be pretty direct, to the point, and best of all they make it really clear when they recommend against a bad book.
To save you some clicking, here are some links to some of its sections:
- Reviews arranged by subject
- Reviews arranged by Title
- Reviews arranged by author
- Reviews of Highly Recommended Books
- Highly Recommended books on Advanced C
- Highly Recommended books on Java
The ACCU welcomes programmers in "any language the uses curly braces" (like C# and Java) and the reviews cover books on a wide variety of subjects, even awk and astronomy, so do check there even if your book is not on C or C++.
-
Please Link to ACCU Book Reviews SectionEveryone, I'd like to strongly urge that when you mention a programming book online, not just in this discussion, but in any web page you write or even in email or the Usenet News, that you check the Association of C and C++ Users Book Reviews section, and if you find that the book is in there, provide a link to its review.
The ACCU makes review copies of books available to its members for free, and then the members write reviews that are printed first in the members' magazines, and then archived on the web for all to see. Because these reviews are written by working engineers, they tend to be pretty direct, to the point, and best of all they make it really clear when they recommend against a bad book.
To save you some clicking, here are some links to some of its sections:
- Reviews arranged by subject
- Reviews arranged by Title
- Reviews arranged by author
- Reviews of Highly Recommended Books
- Highly Recommended books on Advanced C
- Highly Recommended books on Java
The ACCU welcomes programmers in "any language the uses curly braces" (like C# and Java) and the reviews cover books on a wide variety of subjects, even awk and astronomy, so do check there even if your book is not on C or C++.
-
Please Link to ACCU Book Reviews SectionEveryone, I'd like to strongly urge that when you mention a programming book online, not just in this discussion, but in any web page you write or even in email or the Usenet News, that you check the Association of C and C++ Users Book Reviews section, and if you find that the book is in there, provide a link to its review.
The ACCU makes review copies of books available to its members for free, and then the members write reviews that are printed first in the members' magazines, and then archived on the web for all to see. Because these reviews are written by working engineers, they tend to be pretty direct, to the point, and best of all they make it really clear when they recommend against a bad book.
To save you some clicking, here are some links to some of its sections:
- Reviews arranged by subject
- Reviews arranged by Title
- Reviews arranged by author
- Reviews of Highly Recommended Books
- Highly Recommended books on Advanced C
- Highly Recommended books on Java
The ACCU welcomes programmers in "any language the uses curly braces" (like C# and Java) and the reviews cover books on a wide variety of subjects, even awk and astronomy, so do check there even if your book is not on C or C++.
-
Please Link to ACCU Book Reviews SectionEveryone, I'd like to strongly urge that when you mention a programming book online, not just in this discussion, but in any web page you write or even in email or the Usenet News, that you check the Association of C and C++ Users Book Reviews section, and if you find that the book is in there, provide a link to its review.
The ACCU makes review copies of books available to its members for free, and then the members write reviews that are printed first in the members' magazines, and then archived on the web for all to see. Because these reviews are written by working engineers, they tend to be pretty direct, to the point, and best of all they make it really clear when they recommend against a bad book.
To save you some clicking, here are some links to some of its sections:
- Reviews arranged by subject
- Reviews arranged by Title
- Reviews arranged by author
- Reviews of Highly Recommended Books
- Highly Recommended books on Advanced C
- Highly Recommended books on Java
The ACCU welcomes programmers in "any language the uses curly braces" (like C# and Java) and the reviews cover books on a wide variety of subjects, even awk and astronomy, so do check there even if your book is not on C or C++.
-
John Lakos: Large Scale C++ Software DesignI strongly recommend John Lakos' Large Scale C++ Software Design to any programmer, not just C++ programmers. Here are the Amazon and Association of C and C++ Users Book Review pages about it.
While of course much of it is C++ specific, there is a great deal of information that applies to nearly any language. Most notable are his discussions of analyzing dependencies, and extensive discussion on resolving circular dependencies, and software "Design for Testability" (Unit Testing discussed much earlier than eXtreme Programming came along, as well as "White Box" testing.)
Lakos used to work for Mentor Graphics, an electronic CAD software vendor. Mentor was one of the first companies to adopt C++ for the development of large production systems back in the 80's, and their first attempts were collosal disasters. But surprisingly they didn't give up, instead they worked out a detailed methodology for doing successful and productive C++ development.
It has helped me immensely in my work, and I am on a quiet campaign to get all of my client's programmers to read it.
My page Avoiding Unnecessary Header File Inclusion is based on the ideas in Lakos book, if you want a detailed example of why this is worthwhile reading. (That part is C++ specific, though.)
About dependencies:
A well-designed program will have a "dependency graph" that has no cycles in it. This allows components of the programs to stand on their own, depending on at most a few other modules. This aids comprehension by developers, and also aids testing.
What this means is that many components of a program will depend either on nothing else at all, or at most on standard libraries. Then at the next level up, there will be some components that depend only on the components at the first level or the zeroth level (the standard libraries). You can continue up this way, with components depending only on levels below them.
This aids both reusability and unit testing. Reusability because a component can be taken elsewhere and only requires the few components it depends on to work, and unit testing because you can build test executables by linking in only a few dependencies. It also aids testing because you can be sure a component is tested if you have a test for the component directly, and tests for each of its dependencies.
Poorly designed (and all-too-common) programs have dependency cycles. That is, the graph of module dependencies is not acycling, and you cannot link a module in its own test harness without taking a lot of junk with it. Maybe it even requires the entire program. Really bad programs will have a great many cycles in their dependency graphs.
There are quite a few techniques for managing these dependencies, a few C++ specific but many of them language-independent. Lakos catalogs many of them.
About unit testing:
Probably most people here are at least passingly familiar with unit testing. But Lakos has a strategy for making the effort to write tests manageble while still getting good test coverage.
First, you "levelize" your program (that is, create an acyclic dependency graph for your program).
Then, for each module, you make the assumption that the dependencies are already tested, and write the test for the module itself so that it only intentionally tests the code which is actually part of the module under test. You don't try to test the dependencies "through" a module that is at a layer above them.
This makes the amount of test code scale linearly with the number of modules, and also moderates the requirements for the effort a test must make.
While complete test coverage requires a unit test for each module, it is not really necessary to write the tests for the lowest levels first (although that is probably the best strategy).
In an automated test run, though, one should generally run the lowest level tests first.
Finally, Lakos discusses how one could write automated tools for doing dependency analysis. One can do this for C++ by basing it on Open Source tools like mkdep.