
Papers Every Programmer Should Read - soundsop
http://blog.objectmentor.com/articles/2009/02/26/10-papers-every-programmer-should-read-at-least-twice
======
marksutherland
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://www.virtualschool.edu/mon/SoftwareEngineering/BrooksNoSilverBullet.html)
<http://en.wikipedia.org/wiki/The_Mythical_Man-Month>

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

<http://www.cs.virginia.edu/~evans/cs655/readings/steele.pdf>

~~~
mgedmin
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>

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

<http://thinking-forth.sourceforge.net/>

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.

~~~
mechanical_fish
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:

<http://factorcode.org/>

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.

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

~~~
Oatmeat
For the lazy:

pdf:
[http://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thomps...](http://www.ece.cmu.edu/~ganger/712.fall02/papers/p761-thompson.pdf)

html: <http://cm.bell-labs.com/who/ken/trust.html>

------
dottedmag
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.

------
nadim
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.

~~~
jdale27
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.)

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

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

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

------
anewaccountname
Knuth: Selected Papers on Computer Science

[http://www.amazon.com/Selected-Computer-Science-Language-
Inf...](http://www.amazon.com/Selected-Computer-Science-Language-
Information/dp/1881526917)

------
mgedmin
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>

