KOL and MCK

A reference on Object Pascal, the Delphi line and the libraries built on it.

Pascal

Modula-2, and the Language Wirth Built Instead

KOL and MCKPascal

A person reads printed notes beside a monitor displaying blue-screen code under a desk lamp

Wirth kept designing languages after Pascal. The market kept buying Pascal.

Wirth kept improving Pascal long after the market stopped following him.

The Architect Moves On

By the mid-1970s, Niklaus Wirth had already concluded that Pascal had structural weaknesses he could not fix without breaking it. The language was designed at ETH Zürich as a teaching vehicle, and it showed: its module system was effectively absent, separate compilation was awkward, and low-level systems programming required workarounds that violated its own type discipline. Wirth's answer was Modula, refined by 1978 into Modula-2, a language that addressed each of those problems with characteristic severity.

Modula-2 introduced a proper module construct with explicit import and export lists, clean separate compilation, and a coroutine mechanism for concurrent programming. Where Pascal's unit boundaries were compiler-vendor inventions — Borland's own unit keyword appeared a decade later — Modula-2's modules were part of the language specification from the start. Wirth also introduced a disciplined replacement for Pascal's typecasting: the BITSET type and the SYSTEM pseudo-module gave access to machine-level operations in a way that at least made the danger visible. The Modula-2 report ↗ was published through ETH in 1978 and revised in 1980.

Why the Market Did Not Follow

Academic acceptance of Modula-2 was genuine. Several universities adopted it as a teaching language, and commercial compilers appeared from Logitech, JPI and others through the 1980s. But the ecosystem never approached Pascal's mass, for reasons that had less to do with technical merit than with timing and momentum.

Turbo Pascal had already changed the economics of the compiler market by 1983. Philippe Kahn's Borland International sold a fast, affordable compiler on a single floppy, and the installed base of Pascal programmers grew accordingly. By the time Modula-2 compilers were commercially polished, Pascal had a gravitational pull that correctness alone could not overcome. Wirth's architectural preferences — explicit module interfaces, restricted low-level access, no operator overloading, no exceptions — were precisely what disciplined software engineering demanded and precisely what working programmers found restrictive.

Niklaus Wirth photographed at ETH Zürich, or a printed Pascal program listing on fanfold paper under a desk lamp

Pascal's declaration-before-use rule is legible in any listing: every type and variable is named before the statements that touch it.

A conference room at a Delphi-era developer event, projector displaying a code slide, adult audience members seated, speaker at the front

Delphi-era developer conferences were where version changes got argued out in front of the people who had to migrate.

Photo: Matheus Bertelli / Pexels

The contrast with what Borland's engineers actually shipped is stark. Anders Hejlsberg's Turbo Pascal compiler was a single-pass engine optimised for speed on constrained hardware, not for modularity or formal correctness. When Borland extended Pascal toward objects in 1989 and then into full Object Pascal for Delphi in 1995, every extension was made with backward compatibility and developer productivity as the governing constraints. The VCL's published properties, the DFM streaming system, the visual designer — none of these were architectural elegances in Wirth's sense. They were pragmatic answers to what a Windows developer needed on a deadline.

Wirth continued past Modula-2. Oberon, published in 1987 alongside a complete operating system of the same name, stripped the language back further: it removed many of Modula-2's own complexities, introduced a garbage-collected heap and a dynamic type extension mechanism that influenced later object systems. The Oberon System ↗ demonstrated that a small, coherent language and operating system could coexist, but it remained an ETH research artefact rather than a commercial product. Oberon-2 added method bindings to the type extension model, and the lineage continued through Component Pascal and Active Oberon, each iteration tightening what the previous had left loose.

None of it moved the market. The Pascal community — increasingly synonymous with Borland's Pascal — had already made its commitments. By the time Delphi shipped in February 1995 and made Object Pascal the basis of a visual RAD environment, Wirth's successive refinements had become a parallel history: admired in research circles, studied in language-design curricula, and largely invisible to the developers shipping Windows applications. The lesson embedded in that divergence is not that Wirth was wrong but that correctness and commercial success have historically answered to different pressures, on different timescales.

More in Pascal

All of Pascal