Henry G. Baker. “Linear logic and permutation stacks—The Forth shall be first”. ACM SIGARCH Computer Architecture News. Volume 22, Issue 1, March 1994. pp34–43

Remarkable PDF

Original PDF



Niklaus Wirth has received much deserved fame for the creation of Pascal, but in many ways, he subsequently became a victim of Pascal's success. In an age of rising specialization, in which most researchers are trying to define themselves as experts in increasingly narrow domains, Wirth stands out as a rare generalist, almost an “Universalgenie” of our discipline. Sadly, the larger computer science community has been unable or unwilling to recognize Wirth's broader horizon as a builder of systems, and throughout his career has pigeonholed him as a “language and compiler guy”.

But ever since Pascal, the language aspect has been almost secondary to Wirth's work. Modula(-2) and Oberon both came out of larger system-level design projects that simultaneously also developed workstation computers, modular operating systems, and suites of innovative application programs. Unfortunately, these other important contributions were overshadowed by the programming languages they were associated with, and hence never received the recognition they deserved.

This article presents selected facets of Project Oberon, the latter of Wirth’s two large system-level design efforts. The leitmotiv of this project was a quote from Einstein, “make it as simple as possible, but not simpler”. And if any further evidence was still needed, Oberon provided the conclusive proof for Wirth’s mastery of The Art of Simplicity.


§2 Use “self-compilation speed” (i.e., how quickly a self-hosted compiler can compile itself) to measure a compiler's quality. And in particular, ruthlessly remove anything that moves the needle the wrong way. This tends to prefer smaller / easier to understand code. (Specific example of a simple linear list for symbol tables instead of a sorted tree structure, since the number of symbols in a scope is rarely large enough to need the extra complexity.) cf Fra94b

§7 “Dynamic compilation at load time” from a dense intermediate representation. Leads to “machine independence for free” if the IR is dense enough that the I/O savings of reading less data compensates for the time needed to generate machine code. cf Fra94a

§8 (Footnote 16) “Wirth's maxim that software designers should be forced to use the products of their labor themselves”

§8 An amazing amount of dog food eating! Document preparation all done via Oberon, including font rendering and hardware control of the laser printer. Including network protocols; file, print, and mail servers.

conducted the majority of its undergraduate education in Computer Science using workstation computers (of the Ceres family) built in-house, running an operating system (Oberon) developed in-house, and teaching a programming language (Oberon) created by one of the resident professors