Hacker News new | past | comments | ask | show | jobs | submit login
Papers Every Programmer Should Read (objectmentor.com)
189 points by soundsop on Feb 27, 2009 | hide | past | favorite | 14 comments

I'm surprised he didn't add Fred Brooks's "No Silver Bullet". It and the essays in "The Mythical Man Month" should really be required reading for anyone working on large projects, imho.

http://www.virtualschool.edu/mon/SoftwareEngineering/BrooksN... http://en.wikipedia.org/wiki/The_Mythical_Man-Month

Would add Guy Steele's "Growing a Language":


I have to say that watching the video of the original presentation gives a stronger impression than reading the transcript. Here's the video: http://video.google.com/videoplay?docid=-8860158196198824415

I'd add the book "Thinking Forth", which I just read again recently:


The ideas present - which are much more craftsmanlike than an academic paper - are easy to absorb by skimming, and they're still relevant even after 20 years of research/fashion trends in programming.

Plus Forth itself is, in a lot of ways, the living embodiment of the YAGNI principle, which can make it look uncomfortably-to-incomprehensibly spartan to outsiders.

Thanks for the recommendation. I had never heard of Forth, except as a buzzword, until I heard a local hacker give a short explanation of Factor, which is largely inspired by Forth:


I played with the demo a bit. It's very interesting. Even in the first few minutes you can sense the potential power of its super-spartan stack-based syntax, though if you're the kind of person who hates Lisp because it doesn't have the C syntax your head will probably explode at the sight of Factor or Forth.

Reflections on Trusting Trust by Ken Thompson is an absolute must read...

The "common knowledge" of the IT industry is not a some language or notations, but a logic (not a common logic, but a science) and mathematics.

While considered as "abstract" and "having nothing to do with reality", /proper/ branches of mathematics capture many aspects of programming, so new languages/technologies/whatewer are not perceived as a "reinventing the Foo from the last century", but as a "another appilcation of Bar from the Baz field", which is much more fruitful comparison, due to depth of the mathematics itself.

There are a lot of upvotes to this post, however not a lot of discussion on the papers mentioned. I am curious how many have read these papers, and the value they provide. Reading all of these seems like a time investment and I am trying to gauge it's worth.

I'll be honest: I've only read two of these, the papers by Thompson and by Gabriel. These were both fairly quick reads, if I recall correctly. Another three, those by Parnas, by Landin, and by Backus, have been on my "to read" list for a long time.

I read "Reflections on Trusting Trust" several years ago, and recall that it seemed clever, but not especially deep. It probably wouldn't make my top 10 list, if I had one. Then again, I'm not really a systems guy, so it may just be personal bias.

On the hand, I'm a Lisper, and so Gabriel's paper, colloquially known as the "Worse is Better" paper, is a must read. I do agree that it's worthwhile reading for programmers at large. If you enjoy it, I also highly recommend Gabriel's book "Patterns of Software" (available in PDF from his website). (Note: although this book does have something to do with the "patterns movement", Gabriel is pretty much a contrarian to the what you might call the "Gang of Four" school, so don't let any preconceptions you might have about their book and its reception put you off Gabriel's writings.)

Am a bit surprised at the omission of the Lambda papers. http://library.readscheme.org/page1.html

"What Every Programmer Should Know About Memory" http://people.redhat.com/drepper/cpumemory.pdf

(more good stuff at: http://people.redhat.com/~drepper/)

Knuth: Selected Papers on Computer Science


I'm surprised nobody mentioned "What Every Computer Scientist Should Know About Floating Point Arithmetic" by David Goldberg: http://docs.sun.com/source/806-3568/ncg_goldberg.html

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact