The Artima Developer Community
Sponsored Link

Weblogs Forum
Top Notchitude

2 replies on 1 page. Most recent reply: Jul 14, 2006 4:49 AM by Joel Hockey

Welcome Guest
  Sign In

Go back to the topic listing  Back to Topic List Click to reply to this topic  Reply to this Topic Click to search messages in this forum  Search Forum Click for a threaded view of the topic  Threaded View   
Previous Topic   Next Topic
Flat View: This topic has 2 replies on 1 page
Ken Arnold

Posts: 27
Nickname: arnold
Registered: Apr, 2003

Top Notchitude (View in Weblogs)
Posted: May 13, 2003 7:53 AM
Reply to this message Reply
Summary
...Wherein we explore what makes a paper Top Notch, primarily by example.
Advertisement

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 http://www.acm.org/classics/sep95/, 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.


Keith Ray

Posts: 658
Nickname: keithray
Registered: May, 2003

Re: Top Notchitude Posted: Jun 3, 2003 10:04 AM
Reply to this message Reply
I'm not sure what was so top-notch about BWK's criticism of Pascal - all of his complaints were fixed in UCSD pascal, (and in my opinion, better addressed than in C.)

Joel Hockey

Posts: 4
Nickname: joel
Registered: Feb, 2003

Re: Top Notchitude Posted: Jul 14, 2006 4:49 AM
Reply to this message Reply
I just noticed quite a large collection of great papers at http://sunnyday.mit.edu/16.355/.

The ACM classics papers series also contains a few of the papers you noted. The classic papers that I could find are:
* http://www.acm.org/classics/sep95/ - Ken Thompson: Reflections on Trusting Trust
* http://www.acm.org/classics/oct95/ - Edsger W. Dijkstra: Go To Considered Harmful
* http://www.acm.org/classics/nov95/ - E. F. Codd: A Relational Model of Data for Large Shared Data Banks
* http://www.acm.org/classics/dec95/ - Niklaus Wirth: Program Development by Stepwise Refinement
* http://www.acm.org/classics/feb96/ - C. A. R. Hoare: Monitors: An Operating System Structuring Concept
* http://www.acm.org/classics/mar96/ - Edsger W. Dijkstra: The Structure of "THE" - Multiprogramming System Appendix
* http://www.acm.org/classics/apr96/ - Robert M. MetcalfeDavid R. Boggs: Ethernet: Distributed Packet Switching for Local Computer Networks
* http://www.acm.org/classics/may96/ - D. L. Parnas: On the Criteria To Be Used in Decomposing Systems into Modules
There didn't seem to be an actual table of contents. I had to go fishing for those URLs.

Flat View: This topic has 2 replies on 1 page
Topic: Top Notchitude Previous Topic   Next Topic Topic: Java EE:

Sponsored Links



Google
  Web Artima.com   

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