
Computation and Turing Machines · v1.4.1
2026-09-13 14:38:49
The previous unit ended with Turing’s machine and Church’s calculus.
Neither built from anything physical.
One machine, in detail.
Then four decades of languages, at speed.
explain-von-neumann-architecture — Explain how EDVAC turned Turing’s abstract machine into a physical one.trace-language-paradigm-lineage — Trace the FORTRAN-to-C paradigm lineage.place-lisp-and-functional-lineage — Place Lisp and its functional lineage.place-oop-lineage — Place Kay’s OOP and its extension into C++.describe-industrial-era-languages — Describe what problem each 1990s language solved.explain-sql-as-dsl — Explain SQL as a domain-specific language.recognize-recurring-paradigms — Recognize the paradigms studied later in the course.
John von Neumann.
Vacuum tubes.
A physical implementation of the universal Turing machine.
CPU. Executes instructions.
Memory. Holds data and instructions.
Data bus. Connects them.
Binary data encoding.
The first machine code instruction set.
The blueprint for nearly every processor since.

John Backus.
Drafted FORTRAN in 1953.
First compiler: 1957.
1977 Turing Award, for practical high-level programming systems.
Compiled abstraction could be fast enough to matter.
Ancestor of BASIC, C, C++, Java, Python.

John McCarthy.
Second-oldest high-level language still in use.
Also invented garbage collection. Contributed to ALGOL, time-sharing.
Dynamic memory allocation.
Dynamic typing.
Macros. Concurrency.

Gerald Sussman.
Sussman and Steele, 1975 — Scheme.
An industrial-scale Lisp implementation.
Steele later invented Java, in 1995.
Two modules from now: Clojure, a modern Lisp.
Studied in depth.

Brian Kernighan.
University of Toronto, then Princeton PhD.
Contributed to inventing C, 1972.
Later co-authored a book on Go, 2015.
Continues FORTRAN’s imperative, compiled lineage.
Direct ancestor of C++. By influence, of Java.

Alan Kay.
Developed Smalltalk.
Software organized around objects, not functions and logic.

Bjarne Stroustrup.
Aarhus, then Cambridge PhD, 1979.
Invented C++ that same year.
OOP abstractions, with C’s systems performance.

Simon Peyton Jones.
Co-invented Haskell, 1990.
Led the Glasgow Haskell Compiler.
Later, Engineering Fellow at Epic Games.
Lisp: dynamically typed, permits side effects.
Haskell: statically typed, pure by default.
The 1990s. Not coincidence.
The web and cheap computing created problems older languages weren’t built for.

Guido van Rossum.
Python, 1991.
Now the leading language for data science and machine learning.

Brendan Eich.
Netscape, 1995. Scheme-like programming, in the browser.
First called LiveScript.
Co-founded Mozilla, 1998.

Yukihiro Matsumoto.
Ruby, December 1995.
Designed around programmer happiness.

Rasmus Lerdorf.
PHP, 1995.
Started as a personal tool for his own home page.
Grew into the first major web-centric language.

Donald Chamberlin.
Stanford PhD.
Co-invented SQL, 1974–2016.
The first widely successful DSL for relational databases.
A DSL gives up generality.
For being unusually good at one domain.
Fifty years, no general-purpose challenger.

Every language in this unit, on one axis.

Church’s calculus, carried forward. Haskell is the thread’s pure, statically typed endpoint.

Objects and message passing, then the same abstractions at systems-level performance.
The Limits of Computation.
The boundary Gödel and Church located, given a precise definition: decision problems, decidability, and what a proof of undecidability requires.