A public forum for discussing the design of software, from the user interface to the code architecture. Now closed.
I am interested in hearing the collective's opinions on what books about the "Design of Software" are worth reading. I am collecting books of this type and slowly going through them.
Here are mine so far:
Refactoring, Martin Fowler - good and applicable
Design Patterns - good as well. Forgot how good, though largely applicable only to certain languages.
Introduction to Algorithms, Cormen, et. al. - read parts of this book, but not the whole thing.
Structure and Interpretation of Computer Programs - MIT's intro CS book. Very interesting. Like it, though it seems oddly different way of thinking about CS from what I was initially taught. Still, it seems worth doing, if for nothing than a new perspective. Just barely into it though.
Peopleware - DeMarco - haven't read
Art of Programming - haven't read
Any others? I'm looking for practical and esoteric.
Friday, September 17, 2004
For normal algorithms, I suggest Aho, etc's _The Design and Analysis of Computer Algorithms_. It's slim and direct, regardless of its age.
I am not a big fan of SICP, since it's very much into "purity." But it's great if you like non-mainstream concepts. Here's two different sets of lectures, from the authors and ArsDigitaU.
Minksy's _Computation: Finite and Infinite Machines_ is much better written than today's Sipser/etc books on computation. He's really dragging his heels on scanning in the book though. Nothing on context-free languages though; mentioned that Chomsky's doing work in that area.
AI books are underrated. Russell/Norvig's AIMA is very readable, and uses no language in particular. AI is basically anything which isn't known yet; once it's known, it simply becomes programming. So what I've seen of its history is as rich as anywhere else in computerdom I've seen. I really like how AI uses the best tools available for expressing algorithms; everyday loops, functional programming, etc.
Norvig's PAIP is also good, though you'll want to know a little bit about Common Lisp. I personally like it more than SICP because it's more multiparadigm; it uses domain-specific languages, iteration, etc.
Again with normal algorithms, Bentley's _Programming Pearls_ is good to read.
For multiprogramming, I hear Andrews' book is good. I have a copy but never got around to reading it. ;) Maybe I'll do it after learning "concurrency oriented programming" with Erlang.
Tayssir John Gabbour
Saturday, September 18, 2004
Pragmatic Programmer - Andy Hunt & Dave Thomas (not the Wendy's guy)
It's a very good language/architecture agnostic analysis of the fundamental principles that should exist within your design and decisions.
Code Compelete - both by McConnell
I'm almost done with RD and it's a more detailed look at good practices and how to defend, support, and implement them. I've just started CC, but it's recommended nearly everywhere.
Add to that list:
Patterns of Enterprise Architecture by Martin Fowler. It's a great book.
Monday, September 20, 2004
Thanks for the answers. I've read some of the recommendations in earlier times. Code Complete and Pragmatic Programmer are two of my favorites.
I've read the Extreme Programming introduction book by Kent Beck, but the only thing I've really taken out of it is the testing before you write. Even that I'm not as good as I should be.
I'll try the Norvig book. As I mentioned, SICP was recommended, and I find it useful for the different perspective. I figured if it was used at MIT, it might be worth something, and I admit a fondness for Scheme.
Thanks all for the good recommendations! Are there any about examples of good software design?
Monday, September 20, 2004
I found "Design Patterns Explained" by Shalloway and Trott to be a great introduction to the GoF patterns, even better for beginners than GoF itself.
For C++ programmers, everything by Stroustrup, Sutter, and Meyers should be required. In addition to many C++ implementation details and idioms, they cover solid program design principles in general (and not just strictly OO). Sutter is also essential for indoctrinating C++ programmers into the philosophy of exception safety, which is as integral to program and interface design as any other concept.
I'm currently working through "Advanced Perl Programming" and "Perl 6 and Parrot" from O'Reilly. Whether or not you're into Perl or have the liberty to use it, those books introduce concepts that can really get the creative juices boiling.
This topic is archived. No further replies will be accepted.Other recent topics
Powered by FogBugz