February 25, 2026
Slash wars & syntax feels
PL/0
PL/0: Tiny teaching language sparks big nostalgia and slash jokes
TLDR: PL/0 is a super-simple teaching language used to show how compilers work. The comments exploded into nostalgia for Pascal-style readability, a nitpick over whether output comes from the program or compiler, and jokes about slash-heavy names—proof that basic tools spark big opinions.
Meet PL/0, the ultra-simple classroom language from 1976 that taught generations how compilers work. It only does integers, has basic if/while, and originally had no input/output—just a quirky “odd” function and a compiler that tattles as variables change. Cue the comment section: the first skirmish breaks out over wording, with one reader nitpicking, “surely it means the program does, and not the compiler?”—a tiny phrasing issue turned into a surprisingly spicy semantics showdown.
Then the nostalgia floodgates opened. A veteran coder confessed they now prefer Wirth-style readability—keyworded blocks and the := assignment—over C’s braces and =/== landmines. The vibe? Pascal-heart eyes vs C-war scars. Meanwhile, another thread asked if PL/0 is related to IBM’s PL/I, setting off quick explainers and retro trivia. The crowd also cracked jokes about the 70s/80s love affair with slashes—PL/0, PS/2, CP/M—launching a mini “slash wars” meme. One commenter lamented a publisher phasing out Wirth’s books, with relief that revised editions live online—equal parts sad and old-school hopeful.
Between nitpicks, nostalgia, and odd-is-odd jokes, the mood was classic: a tiny language reminding everyone that simple tools can spark big feelings—and bigger debates about how code should look and read.
Key Points
- •PL/0 is an educational programming language introduced by Niklaus Wirth in 1976, designed to demonstrate compiler construction with a minimal feature set.
- •The language supports only integers, basic arithmetic and comparison operators, an odd function, if-then and while-do control structures, and parameterless procedures.
- •Wirth’s original implementation had no I/O; the compiler prints variable values as they change, though many later implementations add simple I/O routines.
- •PL/0’s grammar is provided in EBNF, facilitating student-built recursive descent parsers and extensions such as REPEAT..UNTIL, parameter passing, arrays, strings, and floating point.
- •PL/0 has been widely used in compiler education, associated with concepts like recursive descent, EBNF, P-code, and T-diagrams; some courses use lex/yacc, and a modern PL/0 Language Tools implementation leverages Python and design patterns.