5 ms·
Going through the list: Code Complete: First ed 1993 Prag Prog: 1999 SICP: 80s? K&R C: ditto CLRS: 1990 Refactoring: 1999? GoF DP: 1994 Mythical Man Mon
by phillmv 15y ago
Going through the list:
Code Complete: First ed 1993
Prag Prog: 1999
SICP: 80s?
K&R C: ditto
CLRS: 1990
Refactoring: 1999?
GoF DP: 1994
Mythical Man Month: late 70s, 80s?
TAOCP: Decades ago, and not a serious suggestion
Dragon book: 1986
GEB: 80s was it?
Programming Pearls: 1999
CODE: 1999
Off the top items in that list, only two have them have been published in the last TWELVE years, which in our industry is at least two full generations.
I don't know about you guys but that makes me a little sad. I think somethings have changed a lot in the last 20 years. I refuse to believe that Brooks had the last word on project management several generations ago.
I accept the notion that "the more things change, the more they stay the same" but I can't help but think this Greatest Hits List couldn't be improved somewhat.
- riffraff 15y agoit is somewhat reasonable that older books have more people who read them and learned from them, the effect of a book written more recently may yet be small but will be important later. (Cue van gogh related factoids)
- neilk 15y agoGiven that JavaScript and Python are very mainstream now, we need some sort of text that covers functional techniques for the average programmer in scripting languages. SICP is dated and doesn't really match what modern languages can do. Mark-Jason Dominus' "Higher-Order Perl" is fantastic, but unfortunately specific to a language that's most programmers are not choosing in 2011. There was an attempt at a JavaScript port. Maybe someone should take that up again.
- spacemanaki 15y ago> SICP is dated and doesn't really match what modern languages can do. I disagree. There's over 200 pages before they even introduce mutation and impure functions. Later they touch on the thorny problems that mutation creates when they touch on concurrent programming. There's sections on building lazy streams which are core parts of Clojure and Haskell. And I don't think there's a more accessible intro compilers and programming languages text than chapters 3 and 4. While there might be other places to learn about functional programming to apply to working in Python and JavaScript, SICP is a fine place to learn the fundamentals. In some ways, I would say modern programming languages are just starting to catch up to SICP. (yes I know Haskell is pretty old, and disclaimer: I'm a huge fan of SICP)
- neilk 15y ago> I disagree. There's over 200 pages before they even introduce mutation and impure functions. That's kind of the point. I tend to be the one defending SICP on this board, but only for someone who wants the very particular kind of education SICP brings. Meanwhile, over in languages people are using, you don't have the option of living without mutation. Time to learn how to protect yourself, or not, with closures. Recursion has a bigger speed and space penalty. You need to tell people when to use maps and folds and when not to. SICP doesn't really do combinators, and they are very useful in JS. Also, a lot of libraries in JS use chaining, so a grounding in their theory (maybe even a discussion of monads à la Haskell) might be very fruitful. SICP has nothing like that. Callbacks are everywhere in JS programming, so a discussion of how to avoid spaghetti would be good. Latency is a much bigger deal for JS -- how to balance very fast local resources with potentially never-returning remote resources -- and techniques for beating that are not to be found in SICP, as far as I remember. And of course there's no discussion at all of UI or media in SICP.
- yvdriess 15y ago> SICP is dated and doesn't really match what modern languages can do. You really need to elaborate on that. Especially given how Guido could have used reading SICP when implementing Python and how Brendon was thoroughly inspired by Scheme (and I assume SICP) for Javascript.
- Pedrom 15y ago> SICP is dated and doesn't really match what modern languages can do. I always think SICP as math applied to CS and math never gets old :) I am reading it after 9 years as a professional programmer and I am having so much fun! It is giving me new ways (o reminding me forgotten ways because my first language was Scheme) to think about problems and I am totally using those skills in my job. I will recommend SICP to any beginner that wants to become a serious programmer, maybe not because the language and programming style but the way it teaches how to attack problems. Sometimes the journey is more important than the destination :)
- dubya 15y ago"TAOCP: Decades ago, and not a serious suggestion"? TAOCP is not even finished. My copy of volume 4a is copyright 2011. Although it's definitely not something every programmer should read, it's a fantastic resource when you run into a really, really hard problem. I think it's also a great source for recreational programming problems if you like that sort of thing.
- Silhouette 15y agoThere's an element of inevitability here. It is natural that the most widely applicable material was written long ago, because the basic problems were solved long ago as well. Today's problems tend to be more specialised, which means even a brilliant book about how to solve them isn't going to be as widely influential. Something accessible to mere mortals about functional programming probably has the best chance today, given the increasing penetration of related ideas into mainstream programming languages, but while there are some brilliant presenters working in that field, their focus is still typically far too academic for mainstream interest. Something about non-traditional databases, distributed systems, and why certain key problems can't be solved and there are necessarily always trade-offs, might also be applicable to many programmers today, but again I know of no natural figurehead to write a definitive book on the subject. The drop-off in top-notch books also correlates pretty well with the rise of the WWW as a mainstream information source. Of all subjects, computing is one of the fastest evolving and perhaps the most natural candidate to find a home for new information on Web pages rather than paper. It's tough to write a book that won't date scarily quickly today, again partly because of the specialism aspect, but a Web page stays up-to-date for as long as you care to update it. What's left? Lowest-common-denominator commodity books: X For Dummies, Learn Y in Z hours, the latest unsupported advocacy from some "Agile trainer", and occasionally a printed snapshot of an interesting web site as it was six months ago when the publishing process was started. Not exactly the kind of material written by the industry giants and sagely academics of 20 years ago, alas.
- ggchappell 15y ago> Off the top items in that list, only two have them have been published in the last TWELVE years, which in our industry is at least two full generations. > I don't know about you guys but that makes me a little sad. It doesn't make me sad at all. It says that computer programming is not just about the latest whiz-bang tool. Rather, the field has a core of worthwhile, enduring knowledge that does not become obsolete just because you switch to a new language/framework/platform/whatever. And this core is worth spending time and effort to learn, because it is not going to go out of date.
- deleted 15y ago[deleted]
- rguzman 15y agothis is just a reflection of the fact that now we can use the internet to spread ideas and this audience are/were the earliest adopters. in 5-10 years (or even now, maybe?) people will be talking about what single blog post is the single most influential post every programmer should read.
- mdsatbom 15y agoEuclid's Elements: 300BC Many of the books above focus on the fundamentals which is what makes them classics. Also, The second edition of Programming Pearls was around 1999. The first edition was much earlier.