Commentary by Chris Pressey
This work is distributed under a CC-BY-ND-4.0 license, with the following explicit exception: the ratings may be freely used for any purpose with no limitations.
PLDI
Fundamental Concepts in Programming Languages
- rating: classic
Strachey notes, among many other things, that mathematicians seem to have problems seeing functions as first-class objects. (This is a sentiment I've seen repeated in a number of places, including Wouter van Oortmerssen's thesis on the term-rewriting language Aardappel.) This coincides, in an oblique way, with defunctionalization.
Definitional interpreters for higher-order programming languages
- rating: classic
This is the paper where the term "meta-circular" is introduced (while discussing the wisdom of trying to define the meaning of a language using an interpreter written in another language, or possibly even that same language) as well as the term "defunctionalization". Reynolds notes a connection between defunctionalized interpreters and state machines, and also gives us this pithy statement:
Although the basic concept of assignment is well understood by any competent programmer, a surprising degree of care is needed to combine this concept with the language features we have discussed previously.
This paper was republished in Higher-Order and Symbolic Computation, issue 11, in 1998 (pages 363–397). There is another paper "Definitional interpreters revisited" (PDF) where Reynolds recollects on this paper.
Trampolined style
- rating: 3
This is my own slogan: Trampolines are just defunctionalized continuations. The cont
function in Interpreter III in Reynolds' "Definitional interpreters for higher-order programming languages"
is an example of a trampoline.
A Practical Introduction to Denotational Semantics
- rating: 3
"Denotational semantics is, in some sense, just another programming language." I can't find this as a direct quote, but this is certainly the sentiment. Pascal.
Formal Syntax and Semantics of Programming Languages
- rating: 3
Using Prolog, this book considers a toy programming language (called Wren) and gives semantics for it using multiple approaches.
One of these approaches is algebraic semantics, which is covered in Chapter 12. This is presented in a "module" without much commentary on where that concept is coming from. Presenting equational theories in "modules" is something the research project of Equational logic programming introduced, and can be found in works on algebraic semantics such as "Algebraic Specifications in Software Engineering" by Van Horebeek and Lewi, and it is probably where the name "Maude" comes from.
At one point, PDFs of chapters were available online at the authors' course's website. Not sure if that's the case anymore.
Theories of Programming Languages
- rating: 2
Very mathematical in its approach.
Starts out by giving a semantics for first-order logic. While not giving a concrete syntax for same. Which I thought was really weird at the time I first read it. And actually I still think it's a little far in the "academic" direction. But that is kind of the nature of the book. While it is trying to be accessible in its own way, it is aimed at a level of student for whom these things will be commonplace. Some of the denotational semantics stuff it covers is fairly daunting too.
CMSC 430: Design and Implementation of Programming Languages: Notes
- rating: 1
.
programming languages - Structural equivalence of self-referential structures - Computer Science Stack Exchange
- rating: 1
.
Borrow checking, escape analysis, and the generational hypothesis
- rating: 1
.
Programming Language Foundations (University of Iowa - 22C: 123 - Graduate Course)
- rating: 1
.
An opinionated history of programming languages \| artagnon.com
- rating: 1
.
CSE 40431/60431: Programming Languages (2022 course notes)
- rating: 1
.
language design - Why F#, Rust and Others Use Option Type Instead Of Nullable types like C# 8 Or TypeScript? - Software Engineering Stack Exchange
- rating: 1
.
language design - Why do \"checked exceptions\", i.e., \"value-or-error return values\", work well in Rust and Go but not in Java? - Software Engineering Stack Exchange
- rating: 1
.
compiling - Do C compilers discard unused functions when statically linking to .a file? - Unix & Linux Stack Exchange
- rating: 1
.
What blocks Ruby, Python to get Javascript V8 speed? - Stack Overflow
- rating: 1
.
Why is JavaScript not compiled to bytecode before sending over the network? - Software Engineering Stack Exchange
- rating: 1
.
ibrahimsag/rw: an experiment in presenting code.
- rating: 3
.
ebuswell/noneleatic: Noneleatic (Mutable State) Languages
- rating: 1
.