Ask HN: Are older programming books useful?
24 comments
Huge, huge amounts of kudos to you to ask here about this.
My advice to a librarian buying programming books: just stop!
There is a deluge of crap that is simply full of wrong information. So even when the topic is still fresh and relevant, those books are still wrong. An expert in the area could have a spot-the-error field day with most of it.
To be able to know what the nuggets of gold are in all the dirt, you'd have to have a background in it, or have access to a consultant who does. I would say, multiple consultants due to the amount of stuff that is out there. You can easily find heavily experienced developers who have no clue at all about a vast amount of stuff that they don't work with.
The valuable books that will stand the tests of time might not even be of interest to the public library audience; they may be more at home in a university library.
Basically, the public library is not a good venue for conveying up-to-date programming information that focuses on doing specific tasks with specific versions of tools on specific platforms. It's not a good use of the library's budget, staff time and space to be on that treadmill at all. Making effectively purchases in this area (skimming the cream of what's out there) requires knowledge that librarians typically don't have, and even if you manage to pick out the momentarily good stuff, a lot of it will have to be prematurely discarded to make space for new material.
My advice to a librarian buying programming books: just stop!
There is a deluge of crap that is simply full of wrong information. So even when the topic is still fresh and relevant, those books are still wrong. An expert in the area could have a spot-the-error field day with most of it.
To be able to know what the nuggets of gold are in all the dirt, you'd have to have a background in it, or have access to a consultant who does. I would say, multiple consultants due to the amount of stuff that is out there. You can easily find heavily experienced developers who have no clue at all about a vast amount of stuff that they don't work with.
The valuable books that will stand the tests of time might not even be of interest to the public library audience; they may be more at home in a university library.
Basically, the public library is not a good venue for conveying up-to-date programming information that focuses on doing specific tasks with specific versions of tools on specific platforms. It's not a good use of the library's budget, staff time and space to be on that treadmill at all. Making effectively purchases in this area (skimming the cream of what's out there) requires knowledge that librarians typically don't have, and even if you manage to pick out the momentarily good stuff, a lot of it will have to be prematurely discarded to make space for new material.
Can’t that be said almost verbatim about any academic field?
It can't even be said about the academic side of computing.
Programming books aren't academics; they are about the entirely arbitrary and ever-changing conventions of some stuff that is made up of pure information, which someone pulled out of thin air.
An actual computer science text from 1990 can be very useful; so could a book about electronics from 1990, or mechanical engineering.
A programmming book from 1990 is like the repair manual or schematics for some appliance from 1990. Except in the case of the appliance from 1990, at least it was similar to many others: a repair manual for another make and model could actually be useful. We have to imagine a world in which two refrigerators have absolutely nothing in common; the parts look completely different, are hooked up differently and have different names.
Programming books aren't academics; they are about the entirely arbitrary and ever-changing conventions of some stuff that is made up of pure information, which someone pulled out of thin air.
An actual computer science text from 1990 can be very useful; so could a book about electronics from 1990, or mechanical engineering.
A programmming book from 1990 is like the repair manual or schematics for some appliance from 1990. Except in the case of the appliance from 1990, at least it was similar to many others: a repair manual for another make and model could actually be useful. We have to imagine a world in which two refrigerators have absolutely nothing in common; the parts look completely different, are hooked up differently and have different names.
I just mean there’s tons of shit books published in every field. Computers probably have 10x more, but it’s not a new phenomenon.
Look at medical books that make it into libraries. Same for psychology or any social science. Tons of history books fall into editorializing so similar can be said of them.
And for technical books, (woodworking, drawing, knitting, sewing, etc) they tend to fall into cycles of fads with books that are basically clones of each other.
Look at medical books that make it into libraries. Same for psychology or any social science. Tons of history books fall into editorializing so similar can be said of them.
And for technical books, (woodworking, drawing, knitting, sewing, etc) they tend to fall into cycles of fads with books that are basically clones of each other.
It depends. As you can imagine, a lot of the more practical books focused on specific technologies are going to be out of date within a few years at most. This is especially true the younger the technology is. Something like Lindy's Law (https://en.wikipedia.org/wiki/Lindy_effect) probably applies -- the longer a technology has been around, the longer in the future you can expect it to be around. Things like C and SQL are no longer changing that quickly, even though they are still widely used.
That said, there are a lot of "programming" books that are more technology-independent and contain more "timeless" knowledge about the art and craft of programming (and more fundamentally, computer science). If you want to make sure that your purchases stand the test of time, look for those. You can find a lot of them by searching sites like HN, Reddit, and Stack Overflow for lists of the best computer science and software engineering books. A few examples that tend to show up on these lists:
- Bentley, "Programming Pearls"
- Kernighan and Pike, "The Practice of Programming"
- McConnell, "Code Complete"
- Brooks, "The Mythical Man-Month"
- Abelson and Sussman, "Structure and Interpretation of Computer Programs"
- Gamma et al., "Design Patterns"
- Fowler, "Refactoring"
- Kernighan and Ritchie, "The C Programming Language"
just to list a few off the top of my head.
That said, there are a lot of "programming" books that are more technology-independent and contain more "timeless" knowledge about the art and craft of programming (and more fundamentally, computer science). If you want to make sure that your purchases stand the test of time, look for those. You can find a lot of them by searching sites like HN, Reddit, and Stack Overflow for lists of the best computer science and software engineering books. A few examples that tend to show up on these lists:
- Bentley, "Programming Pearls"
- Kernighan and Pike, "The Practice of Programming"
- McConnell, "Code Complete"
- Brooks, "The Mythical Man-Month"
- Abelson and Sussman, "Structure and Interpretation of Computer Programs"
- Gamma et al., "Design Patterns"
- Fowler, "Refactoring"
- Kernighan and Ritchie, "The C Programming Language"
just to list a few off the top of my head.
Knuth, “The Art of Computer Programming”
And don't forget Knuth's "Literate Programming." I didn't agree with every stylistic decision Knuth made, but reading it led me to clarifing some of my own thoughts.
Let me +1 the previous SICP (Structure and Interpretation of Computer Programs) and Mythical Man Month. I also like DeMarco's PeopleWare. And Loeliger's "Threaded Interpreted Languages." I bought a copy of Doug Kaye's "Loosely Coupled Systems" from bettereorldbooks.com and it looks like it was a library book that should never have been taken out of circulation. It discusses an important aspect of software design that gets little love in the mainstream. I also got a copy of Yourdon's "Structured Design," which was originally released just as OOP was getting big. But... it still contains numerous pearls of wisdom suitable for both OOP and Functional programmers.
Let me +1 the previous SICP (Structure and Interpretation of Computer Programs) and Mythical Man Month. I also like DeMarco's PeopleWare. And Loeliger's "Threaded Interpreted Languages." I bought a copy of Doug Kaye's "Loosely Coupled Systems" from bettereorldbooks.com and it looks like it was a library book that should never have been taken out of circulation. It discusses an important aspect of software design that gets little love in the mainstream. I also got a copy of Yourdon's "Structured Design," which was originally released just as OOP was getting big. But... it still contains numerous pearls of wisdom suitable for both OOP and Functional programmers.
Thanks for the list! We do have some of these, and I'll check on adding the rest to my cart.
I think a considerable amount of what I'm looking at is the more ephemeral type of book, so I feel a bit better doing a more vicious weeding. Thanks!
I think a considerable amount of what I'm looking at is the more ephemeral type of book, so I feel a bit better doing a more vicious weeding. Thanks!
Tasks specific books age very quickly, and are easily replaced by googling.
Books about learning programming for beginners or just about a language have a longer shelf life. Some people like to work through them chapter by chapter as a course, and they can be particularly useful to kids in smartphone only houses who don't have day to day access to a PC.
There are, as others mentioned, lots of "theory" books that are ageless. How To Solve It: Modern Heuristics for example. But these are most useful to professionals and university students honestly. There are also pop-science type books like Algorithms To Live By or Invisible Women that are interesting to a wider audience but don't directly teach skills.
The problem with throwing all the task specific books in the trash is that they do provide some kind of a bridge between the very basics and actually doing something useful. Users don't want to learn python, they want to Automate The Boring Stuff or do machine learning or whatever. I think pointing them at the latest ebooks for that stuff might be best. If my local library let me e-borrow the latest packtpub and oriely books that would be awesome.
One thing I find wierd as I get into harder, more architectural problems, is that as an industry we spent decades thinking about stuff, creating standards, and writing books about stuff, and no one reads them. We prefer to invent wheels again because it feels more like progress than reading books.
Books about learning programming for beginners or just about a language have a longer shelf life. Some people like to work through them chapter by chapter as a course, and they can be particularly useful to kids in smartphone only houses who don't have day to day access to a PC.
There are, as others mentioned, lots of "theory" books that are ageless. How To Solve It: Modern Heuristics for example. But these are most useful to professionals and university students honestly. There are also pop-science type books like Algorithms To Live By or Invisible Women that are interesting to a wider audience but don't directly teach skills.
The problem with throwing all the task specific books in the trash is that they do provide some kind of a bridge between the very basics and actually doing something useful. Users don't want to learn python, they want to Automate The Boring Stuff or do machine learning or whatever. I think pointing them at the latest ebooks for that stuff might be best. If my local library let me e-borrow the latest packtpub and oriely books that would be awesome.
One thing I find wierd as I get into harder, more architectural problems, is that as an industry we spent decades thinking about stuff, creating standards, and writing books about stuff, and no one reads them. We prefer to invent wheels again because it feels more like progress than reading books.
In that vein, this is a great one for a library: https://en.m.wikipedia.org/wiki/Code:_The_Hidden_Language_of...
The second edition is coming out soon.
The second edition is coming out soon.
Great question and many great suggestions here! If I was the librarian facing your task, I would probably try to collect books that 1) cover different programming language paradigms, and 2) books that teach you how to think differently, using a computer language as a medium.
In this regard, I would add "The AWK Programming Language" by Aho, Kernighan and Weinberger. Published in 1988, but it was an excellent introduction to computing for a layman like me around a decade ago. Clear, concise writing; really teaches you to think. Still relevant in 2022, especially considering that awk has gained some attention in recent years. Great warm-up to approaching C via K&R. Can't go wrong with Brian Kernighan as a teacher, I guess.
Another worthwhile book is "Modern Perl, Fourth Edition" by chromatic (2015): https://pragprog.com/titles/swperl/modern-perl-fourth-editio...
Also, "Higher Order Perl" by Mark Jason Dominus (2005). Functional programming techniques with Perl; also ticks the "general thinking book" box. Lots of praise on Amazon: https://www.amazon.com/Higher-Order-Perl-Transforming-Progra...
Leo Brodie's "Starting Forth" and "Thinking Forth" probably also count as timeless classics in the "thinking book" section.
Lastly, see also Seymour Papert's books "Mindstorms: Children, Computers, and Powerful Ideas" (1980) and "The Children's Machine: Rethinking School in the Age of the Computer" (1993). These are brilliant for anybody who's interested in thinking and learning, or the Logo programming language that Papert developed.
In this regard, I would add "The AWK Programming Language" by Aho, Kernighan and Weinberger. Published in 1988, but it was an excellent introduction to computing for a layman like me around a decade ago. Clear, concise writing; really teaches you to think. Still relevant in 2022, especially considering that awk has gained some attention in recent years. Great warm-up to approaching C via K&R. Can't go wrong with Brian Kernighan as a teacher, I guess.
Another worthwhile book is "Modern Perl, Fourth Edition" by chromatic (2015): https://pragprog.com/titles/swperl/modern-perl-fourth-editio...
Also, "Higher Order Perl" by Mark Jason Dominus (2005). Functional programming techniques with Perl; also ticks the "general thinking book" box. Lots of praise on Amazon: https://www.amazon.com/Higher-Order-Perl-Transforming-Progra...
Leo Brodie's "Starting Forth" and "Thinking Forth" probably also count as timeless classics in the "thinking book" section.
Lastly, see also Seymour Papert's books "Mindstorms: Children, Computers, and Powerful Ideas" (1980) and "The Children's Machine: Rethinking School in the Age of the Computer" (1993). These are brilliant for anybody who's interested in thinking and learning, or the Logo programming language that Papert developed.
The growing interest in retrocomputing is making old programming books invaluable, especially those about 1970s and 1980s microcomputer systems and languages. For example, I'm reading lots of books about Intel 8080 and Z80 Assembly programming, as well as CP/M.
Yeah, old python 2 books might not be worth anything now, but I love ancient tomes about batch files, OS/2, perl, or fortran. Even old linux books can be great to flip through.
Anything with early web stuff is also really interesting. The ones with long lists of URLs in the back (even with them being mostly long dead), chapters on archie or gopher/veronica... it's very cool history. Books from the early days of the internet when it was all potential and exploration, before greed and surveillance capitalism set in, are both nostalgic and inspiring.
Anything with early web stuff is also really interesting. The ones with long lists of URLs in the back (even with them being mostly long dead), chapters on archie or gopher/veronica... it's very cool history. Books from the early days of the internet when it was all potential and exploration, before greed and surveillance capitalism set in, are both nostalgic and inspiring.
I have Peter Norton’s Programmer's Guide to the IBM PC sitting on my bookshelf and pull it out occasionally and it really hits a certain spot for me.
It’s a remarkable book and it’s tremendously satisfying to read.
If you’re interested, you can download the early 1990’s version of Microsoft Bookshelf for DOS and it’s included on there.
It’s a remarkable book and it’s tremendously satisfying to read.
If you’re interested, you can download the early 1990’s version of Microsoft Bookshelf for DOS and it’s included on there.
The most solid fundamentals have been mostly true throughout great software. Even older books can hold a great deal of wisdom.
Engineers now seem to lean on books less, I think it is a great way to learn about tech and programming. Quick searches are mostly optimized to solve one issue. For a bigger scope, I have had great experiences with reading books, including older ones.
Some older titles I have really enjoyed are: Mythical Man Month Code Complete II The Psychology of Computer Programming Joel On Software Rapid Development
Engineers now seem to lean on books less, I think it is a great way to learn about tech and programming. Quick searches are mostly optimized to solve one issue. For a bigger scope, I have had great experiences with reading books, including older ones.
Some older titles I have really enjoyed are: Mythical Man Month Code Complete II The Psychology of Computer Programming Joel On Software Rapid Development
One of the problems I often have is that people are not writing books for the languages I like to write in anymore. Often a book from 2012 or 2014 is the best I can get. So bear in mind, unless you have something better coming in on the same topic, and especially if it's still circulating, leave it be!
I read and reference older programming books regularly in two areas: Perl and HTML/JavaScript/CSS. Perl has high degree of backwards compatibility, and the Web stuff is helpful for building compatibly with older and retro browsers. Another area where older books are helpful to me is shell scripting. On the other hand, for languages which change and break backwards compatibility regularly, such as Python, not as useful.
Books on my shelf that got /more/ generally useful with a bunch of years passing since I bought them.
Simply Scheme, Structure and Interpretation of Computer Programs, How to Design Programs.
They're a hundred times easier to get going with the exercises using racket than the incredible faff it used to be when purchased, especially with SICP.
Maybe if the book is good enough the wider community supports it?
Then there's K&R C, K&Pike, Richard Stevens, of which any edition from the last 20 years is still pretty useful. Although there must be something better than K&R for C by now - the example programming style can be improved upon while still appreciating its considerable strengths. In that general direction Van Der Linden's "Expert C" and "The C Puzzle Book" remain fantastic books to grok C and low level programming.
The Wrox "Professional Assembly Language" is both out of date (32 bit x86) and still about your best bet, update it and play with the x86-64 abi docs, a download of the intel optimisation manual, "Hackers Delight" and http://aggregate.org/MAGIC/
Simply Scheme, Structure and Interpretation of Computer Programs, How to Design Programs.
They're a hundred times easier to get going with the exercises using racket than the incredible faff it used to be when purchased, especially with SICP.
Maybe if the book is good enough the wider community supports it?
Then there's K&R C, K&Pike, Richard Stevens, of which any edition from the last 20 years is still pretty useful. Although there must be something better than K&R for C by now - the example programming style can be improved upon while still appreciating its considerable strengths. In that general direction Van Der Linden's "Expert C" and "The C Puzzle Book" remain fantastic books to grok C and low level programming.
The Wrox "Professional Assembly Language" is both out of date (32 bit x86) and still about your best bet, update it and play with the x86-64 abi docs, a download of the intel optimisation manual, "Hackers Delight" and http://aggregate.org/MAGIC/
Some older books might be useful, though I'm not sure how useful older python books might be.
Since you're a librarian, may I suggest some books you might want to consider keeping (not all of these are programming books per se):
Designing Data Intensive Applications, by Martin Kleppmann
K&R for C
K&R The Practice of Programming
The Art of Unix Programming, by Eric S. Raymond
The Cathedral and the Bazaar, by Eric S. Raymond
Code: The Hidden Language of Computer Hardware and Software, by Charles Petzold
The Soul of a New Machine, by Tracy Kidder
The Idea Factory, by Pepper White
The Little Schemer, by Friedman and Felleisen
SICP, by Sussman and Abelson
Introduction to Algorithms, CLRS
The Algorithm Design Manual, by Steven
Introduction to the Theory of Computation, by Michael Sipser
The "dinosaur book", "dragon book" etc.
Since you're a librarian, may I suggest some books you might want to consider keeping (not all of these are programming books per se):
Designing Data Intensive Applications, by Martin Kleppmann
K&R for C
K&R The Practice of Programming
The Art of Unix Programming, by Eric S. Raymond
The Cathedral and the Bazaar, by Eric S. Raymond
Code: The Hidden Language of Computer Hardware and Software, by Charles Petzold
The Soul of a New Machine, by Tracy Kidder
The Idea Factory, by Pepper White
The Little Schemer, by Friedman and Felleisen
SICP, by Sussman and Abelson
Introduction to Algorithms, CLRS
The Algorithm Design Manual, by Steven
Introduction to the Theory of Computation, by Michael Sipser
The "dinosaur book", "dragon book" etc.
Unlikely.
I’m moving in the coming days and I couldn’t give away books that are 5 years or older. They ended up at Goodwill.
Some books age better but these are usually books on the fundamentals of CS or software engineering; not programming tutorials.
I’m moving in the coming days and I couldn’t give away books that are 5 years or older. They ended up at Goodwill.
Some books age better but these are usually books on the fundamentals of CS or software engineering; not programming tutorials.
The old-school method of learning from books has many advantages over articles on the Internet. But, unfortunately, we must admit that books are no longer relevant. In programming, for example, frameworks are updated almost every day, and yesterday's experienced professionals are forced to retrain again.
I see a compromise solution is to start with books if you are a total zero in programming. And, with understanding, switch to modern sources of information as soon as possible.
I see a compromise solution is to start with books if you are a total zero in programming. And, with understanding, switch to modern sources of information as soon as possible.
I think it depends a lot on the language. Some languages are very stable and backward-compatible, like Perl, tcl or common lisp. Old books would be very helpful for them. Other languages, like Python, change a lot with a couple releases, so old books would not be very helpful. As others reminded, some books are timeless, because they deal with the fundamentals of programming, not specific languages.
Sure. I have a book about Basic from the 1980s. Obviously when I got it, the book was way outdated, but served as a nice introduction to programming in general and what to expect. (I was six at the time. Didn't realize the full extent of the book.)
Every once in a while I'll get a customer who is using older versions of a language. I keep my old books for these guys, especially after having to repurchase a few books used on amz.
Other than clear version changes (like Python 2 to Python 3), are older programming books still useful? The majority of the books span from around 2014 to the present, and they're all still circulating.
Thanks! (And thank you for the book recommendations posted here as well, I have definitely purchased some of them for our collection.)