Programming Languages Recitation Links

Grammars, Parsing, and Formal Languages

Python Grammar: Impressively short grammar for the syntax of the Python programming language.

Simple Models of Computation

No programming language is more "powerful" than any other. Anything that can be written in one
language can be encoded in another. That encoding may not necessarily be pleasant or compact, but it is possible.
Most languages are hard to reason about in our heads, they have complicated semantics with lots of edge cases. For this reason, people
concerned with proving properties of computational systems often instead use simpler (but equally powerful!) computational models
like the Lambda Calculus and the Universal Turing Machine.

Function Values and Closures

Programming languages like C treat functions essentially as dumb labels. You can't bottle up a function into a runtime value and pass it around. To make functions
into first-class values in a language we need closures, which are often implemented as the function's code pointer paired with an environment record.