Jeffrey M. Barber

Tombstone

eduLang

Aug 2005 · age 23

What it was

An interpreter for a small C-like teaching language, written in C# over an ANTLR grammar, whose real product was not the answer but the trace. Run a program and it wrote out a JavaScript listing of every step: the source pretty-printed with the line about to run in red, the call stack with argument values in each frame's name, the local variables, the heap drawn as tables whose cells glowed for last read and last write, and the console so far. The program itself could switch tracing on and off, so a selection sort traced only its inner comparison and still produced nearly two thousand frames. Frames were compressed as substring copies of the one before, and every operation was tallied into a cost profile. The tracer worked; the web page meant to replay the traces was never built.

Wins, for the age

What it taught

Genealogy

Ancestors: BNJv3: pseudocode that steps in lockstep with a live algorithm. Mathml: an early expression evaluator. Memorando: software built to teach. Vec4U: a typed little language, compiled one expression at a time. Descendants: Adama Tooling: time travel through a program's history. Tutor: teaching software that shows its work.

Epitaph

Here lies eduLang, which sorted a handful of numbers and wrote two thousand frames explaining how. The page to watch them never came, but the idea that a program should narrate itself did.