Classic Programming Languages Papers
I found an old note reminding me that I wanted to compile a list of my favorite papers in the area of programming languages. So, at long last, here we go. Rather than trying to summarize each paper in a few (or more) sentences, I take the easy way out and only drop a few keywords to highlight important contributions or outstanding explanations.
Peter J. Landin, The Mechanical Evaluation of Expressions, 1964: applicative expressions, syntactic sugar, evaluation, environment, abstract machine (Papers We Love presentation)
Peter J. Landin, The Next 700 Programming Languages, 1966: ISWIM family of programming languages, functional core, imperative features, equivalence rules, declarative languages. (This paper ends with the transcript of an interesting discussion that is still relevant today, over 50 years later.)
John C. Reynolds, Definitional Interpreters for Higher-Order Programming Languages, 1972 / 1998: meta-circular interpreter, defunctionalization, continuation-passing style (Papers We Love presentation)
Paul Hudak, The Conception, Evolution, and Application of Functional Programming Languages, 1989: history of functional programming languages, including lambda calculus, Y combinator, order of evaluation, call by value, call by name, and call by need (lazy evaluation)
Christopher Strachey, Fundamental Concepts in Programming Languages, 2000: L-values and R-values, call by value, call by reference, first-class objects, ad hoc polymorphism, parametric polymorphism (Papers We Love presentation)
That’s it for now. I hope to grow this list over time.