Here’s a series of blog posts by Scott Rosenberg, each introducing and discussing one important historical paper on software or computers. Useful as pointers to the papers, at least! Commonly enough, the papers haven’t been read or understood by people who’ve heard of the titles, and contain rather more than the title implies - as a good paper should!
There are comments too, although I haven’t yet read them. I see @cjs is one of the commentators.
Here’s a selection which caught my eye:
Code Reads #1: Frederick Brooks’ The Mythical Man-Month
Code Reads #2: Dijkstra’s “Go To Statement Considered Harmful” (a paper retitled by Wirth, apparently)
Code Reads #3: Edsger Dijkstra’s “The Humble Programmer”
Code Reads #4: Dijkstra’s “Notes on Structured Programming”
Code Reads #5: Knuth’s “Structured Programming with go to Statements”
Code Reads #7: Parnas’s “Star Wars” paper
Code Reads #9: John Backus, “Can Programming Be Liberated…?”
Code Reads #10: Guy Steele, “Growing a Language”
I think I landed on this series because I’d very recently had another look at Steele’s 1977 paper Lambda: The Ultimate GOTO, a paper which has a more complicated title than I remembered (Debunking the ‘Expensive Procedure Call’ Myth, or, Procedure Call Implementations Considered Harmful, or, Lambda: The Ultimate GOTO) and which tells us that structured programming was still controversial, and even argued against, as late as the latter half of the seventies, and - surely related - in some cases a simple procedure call could push hundreds of bytes onto the stack and cost nearly two hundred microseconds. So, our judgement can be biased by bad experience. All the more reason to try to learn from others, and from history.