Great Works in Programming Languages (2004)
cis.upenn.edu
cis.upenn.edu
Is it simply that it takes a long time for us to decide what constitutes a significant advancement, or is something else going on?
Realize that the list was proposed in 2004.
Is it simply that it takes a long time for us to decide what constitutes a significant advancement, or is something else going on?
Seminal work is recognized by its influence, and influence becomes more apparent as impact accumulates over time.
* Fault Location via Dynamic Slicing
* Interprocedural Analysis and the Verification of Concurrent Programs
* Logics and Algorithms for Software Model Checking
* Verifying Low-Level Programs via Liquid Type Inference
Moreover:
* Agda
* LLVM
But the liquid type inference seems to be a genuinely new thing, and apparently I totally missed it somehow. It even seems like I unknowingly reinvented something similar, by using arbitrary Prolog code as type attributes on top of a basic Hindley-Milner.
… Coq, Minlog, even ACL2 and Isabelle build on similar grounds as Chrysippus’ in the 3rd century BC …
i.e. there’s nothing new under the sun.
This idea has been showing up in industry (whether the designers call it "gradual typing" or not) with at least Hack, Flow, TypeScript, and Dart (which has optional type annotations).
You can find lots of references for useful underlying theory and research applications (the first paper that mentions "gradual typing" was Siek and Taha in 2006) at https://github.com/samth/gradual-typing-bib.
Typed Racket (http://docs.racket-lang.org/ts-guide/) is probably the best-engineered exemplar of many of these ideas, especially 1. installing run-time checks at boundaries between typed and untyped code, and 2. tackling problems of typing previously untyped code that uses rich class and interface patterns.
Another brilliant recent discovery (2001, so still more than a decade ago I am afraid) is the algebraic connection between differentiation and zippers. See Conor McBride's paper "The Derivative of a Regular Type is its Type of One-Hole Contex"
Its interesting to try to re-prioritize the papers given a decade of impact (or lack thereof) since the list was published. I have no useful results but it was good mental exercise.
What I find interesting is the gap of time between papers for the authors with multiple listings. A casual look suggests no more than 12 years between papers. This could be because it's a young field, but I found that worth noting.
p.s. To be pedantic, we should put 2004 in the title.
`https://news.ycombinator.com/item?id=5872043'.
And links to the `greatest of the great' papers;
Edsger W. Dijkstra made that statement in the context of an argument with Donald Knuth. Knuth won: (http://pplab.snu.ac.kr/courses/adv_pl05/papers/p261-knuth.pd...) http://web.archive.org/web/20070927094626/http://pplab.snu.a...
This article has been the bible of many "code nazis" who have caused a lot of pain to many programmers. Please, forgot this article.
Also, do be fair. If "Knuth won" the argument, he still ultimately condemned goto statements. To quote: "I personally wouldn't mind having goto in the highest level, just in case I really need it; but I probably would never use it" Further, that paper is on the list.
And, I do highly recommend people reading the paper. It is, as usual for Knuth, a very thorough exploration of the topic.