Programming language research is largely the study of properties of programs, but reasoning about such properties presupposes programs have some meaning. Consequently, most papers in the area of programming languages start by establishing what programs mean, i.e., they define a semantics. There are several forms of semantics, but the most common form found in current PL papers is that of operational semantics. Operational semantics defines the meaning of a program by explaining its behavior in terms of a hypothetical computer which performs the set of actions which constitute the evaluation of that program. These “hypothetical computers” can range from the very abstract, bearing little resemblance to what you might think of as a physical computer, to the very concrete, amenable to implementation on common hardware.
The goal of this talk will be to convey the basic machinery of operational semantics needed to read and understand ICFP papers.