The Artima Developer Community
Sponsored Link

Notes from Underfoot
Top Notchitude
by Ken Arnold
May 13, 2003
...Wherein we explore what makes a paper Top Notch, primarily by example.


Some papers in Computer Science are somehow transcendent. They combine striking insight with clear and bright writing. They change how you think about things. They are a pleasure to read again and again. You tell your friends about them: "Gotta read this!"

Here are most of my Top Notch papers. What are yours?

"Growing a Language", Guy Steele. OOPSLA '98, Invited Talk, 10/22/98
This is a very powerful idea, coached in language that is inspired by its point. I won't tell you either the trick or the point, any more than I will tell you the ending of Matrix Reloaded. (Well, okay, the butler did it, but you didn't hear it here.) I actually don't completely agree with his conclusion, but that must never get in the way of an important idea so perfectly expressed.
"Reflections on Trusting Trust", Ken Thompson, Communication of the ACM, Vol. 27, No. 8, August 1984, pp. 761-763
How does writing the C compiler in C bear on security issues? Well, it does. (I would have preferred to cite, but it's an OCR version of the text, and it's flakey (as it admits), so this is the one I could find that wasn't.)
"Why Pascal is Not My Favorite Programming Language", Brian W. Kernighan, April 2, 1981, AT&T Bell Laboratories
Pascal itself is not a major issue these days, but this paper sets up an important mode of analysis for languages in general (hey, I cited it in my first blog entry, so it must be important.-). In fact, one could argue that the entire paper is really a setup for the second-to-last paragraph, which is a deep point well worth inscribing as a generalized observation, not just about Pascal. In fact, it ties very neatly back to Guy Steele's point.
"No Silver Bullet", Frederick P. Brooks, Jr., Computer Magazine, April 1987
If your management thinks they can control things, this is an important paper to lay on the table. It won't make you any friends because it will scare the daylights out of them. (Brooks is the author of The Mythical Man Month, another great read, but a book not an article.)
"Programming Considered as a Human Activity", Edsger W. Dijkstra, Proc. IFIP Congress 1965
A very nice match to "Reflections on Trusting Trust", this considers why we do or do not trust the results of computation.
"Computing Machinery and Intelligence", A. M. Turing, Mind, 59, 433-460.
The Turing Test is defined in this paper, and it is very easy to read. You will very quickly see that Turing was smart, clever (which is not the same as smart), and would have been a lovely companion over drinks. Any CS paper with the following footnote has to be worth a read:
[1] Possibly this view is heretical. St. Thomas Aquinas (Summa Theologica, quoted by Bertrand Russell, 1, 480) states that God cannot make a man to have no soul. But this may not be a real restriction on His powers, but only a result of the fact that men's souls are immortal, and therefore indestructible.
(The URL I've used is to a CS course's notes, but the more permanent location of the same text has a butt-ugly color scheme, and the other common form has more scanning errors and no footnotes. Sigh.)

I have to note one paper that doesn't quite make it for me: "Go To Statement Considered Harmful" by Edsger W. Dijkstra (Communications of the ACM, Vol. 11, No. 3, March 1968, pp. 147-148). This has been very influential, but it just not as crisp and "wow"-ish. I mostly mention this not to dis Dijkstra, a great observer, but to define my criteria. His opening line is fun, but it shows why it's merely on my list of "must read" papers, not the truly top notch:

For a number of years I have been familiar with the observation that the quality of programmers is a decreasing function of the density of go to statements in the programs they produce.
This is very biting and erudite, but it is denser than required. Compare this to Turing's:
I propose to consider the question, "Can machines think?" This should begin with definitions of the meaning of the terms "machine" and "think."
Strunk & White would clearly prefer the second, and so would I. The sentences are short and clear, the words simple and direct, and it is immediately clear that something interesting is going on (doesn't everyone know what those words mean, so why would he ask?).

That's my line anyway.

Talk Back!

Have an opinion? Readers have already posted 2 comments about this weblog entry. Why not add yours?

RSS Feed

If you'd like to be notified whenever Ken Arnold adds a new entry to his weblog, subscribe to his RSS feed.

About the Blogger

Ken Arnold is a recognized loose cannon in the software business, whose previous fusilades include being an inventor of Jini, designing JavaSpaces, writing books on Java and distributed systems, helping design CORBA 1.0, and (while at Berkeley on the BSD project) the curses library package, co-authoring rogue, and generally enjoying himself. His interests include designing APIs and programming languages using general principles of human factors design because of his radical hypothesis that programmers are human, and other applications of this same principle to software design, management, and production.

This weblog entry is Copyright © 2003 Ken Arnold. All rights reserved.

Sponsored Links


Copyright © 1996-2019 Artima, Inc. All Rights Reserved. - Privacy Policy - Terms of Use