KOL and MCK

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

Pascal

The Language Niklaus Wirth Designed at ETH Zürich

KOL and MCKPascal

An old CRT monitor glowing blue sits on a desk beside a keyboard and desk lamp

Wirth's 1970 report ran to a few dozen pages; the language it defined outlived every machine it was first compiled for.

A Teaching Language with a Commercial Future It Never Asked For

Pascal's birth date is 1970, fixed by the publication of Niklaus Wirth's first formal report at ETH Zürich ↗, the Swiss Federal Institute of Technology where Wirth spent the productive core of his career. The language was not designed to power commercial software, accelerate a startup in Scotts Valley, California, or underpin a visual rapid-application-development tool. It was designed to teach. That gap between intention and outcome is the central fact of Pascal's history.

Wirth had already worked through one attempt at the problem. His ALGOL W, a disciplined dialect of ALGOL 60 ↗ developed in the late 1960s, demonstrated what a cleaner block-structured language could look like: tighter scoping, stronger typing, less ambiguity. Pascal refined that thinking further. Where ALGOL 60's type discipline had room for loose interpretation, Pascal drew hard lines. A variable declared as an integer did not silently become a real. A subrange type constrained values at the language level. Enumerated types gave names to finite sets of values rather than relying on programmer-maintained integer constants. Each of these decisions served the same pedagogical purpose: a student reading a Pascal program should be able to reason about what it meant without carrying a table of implicit conversions in their head.

The influence of ALGOL 60 runs deep but is not imitation. Pascal took the nested block structure — the idea that a procedure could contain its own local procedures, that scopes nest cleanly — and held onto it when other languages were loosening it. It took the general commitment to a mathematically describable syntax and implemented it in a form that made single-pass compilation tractable: the language's grammar is defined so that a compiler can read a source file exactly once, from top to bottom, resolving every identifier before it is used. Forward declarations handle the remaining cases. This single-pass architecture had consequences that Wirth could not entirely have anticipated: it made Pascal compilers fast enough to run on personal computers whose memory was measured in kilobytes, a fact that eventually mattered enormously to Philippe Kahn's Borland International.

What Wirth Built and What Borland Took

Wirth's stated aims were documented, not guessed at. He wanted a language suitable for systematic programming instruction, with a type system clean enough that the compiler itself would catch the class of errors that obscure runtime failures. He wanted the language small enough to be described completely, so a student could hold the whole thing in mind. The 1974 Pascal User Manual and Report, co-authored with Kathleen Jensen, became one of the most widely cited documents in computing education. By the late 1970s Pascal had displaced FORTRAN and BASIC in many university curricula across Europe and North America.

Borland's contribution to Pascal history was spectacular and somewhat beside the point of Wirth's project. Turbo Pascal, which Anders Hejlsberg developed and Borland released in 1983 for $49.95 on a single floppy disk, was a Pascal compiler for a price and at a speed that no university mainframe could match. It was fast, it was cheap, and it compiled programs that were fast enough for practical commercial work. Borland's extensions — strings with length bytes, units as a module system, inline assembler — were pragmatic additions that Wirth's design had deliberately omitted. The language that shipped in the Turbo Pascal box was recognisably Pascal in structure and feel, but it was already something other than the teaching vehicle Wirth had described.

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.

Wirth's own response to Pascal's commercial trajectory was characteristic: he kept designing. Modula-2, published in 1978, addressed what he saw as Pascal's genuine weaknesses — most notably the absence of a proper module system for large programs — and added separate compilation and coroutine support. Oberon followed in 1987, stripping the language further. Neither Modula-2 nor Oberon displaced Pascal commercially, for reasons that had less to do with technical merit than with installed base, investment and momentum.

The Gap Between Intention and Outcome

The chasm between Wirth's intentions and what Pascal became is nowhere more visible than in the journey from the 1970 report to Borland Delphi 1 in February 1995. Delphi's Object Pascal — shaped by Anders Hejlsberg, Allen Bauer and the Borland compiler team in Austin, Texas — introduced classes with single inheritance, a published property system backed by run-time type information, and a visual form designer that stored component hierarchies in DFM files. The VCL (Visual Component Library) built atop this extended language became the dominant Windows application framework in the mid-1990s outside Microsoft's own tools. Wirth had designed a language for teaching the structure of algorithms; Borland had turned it into a vehicle for drag-and-drop Windows development.

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

That said, the inheritance is genuine. The things that made Delphi's compiler fast in 1995 — single-pass compilation, a grammar without ambiguity, a type system that guided rather than hindered — were Wirth's gifts, preserved through Turbo Pascal and into Delphi's lineage. Hejlsberg's compiler architecture owed its speed, in no small part, to the fact that the language's syntax made single-pass compilation possible. The VCL's published property mechanism — where RTTI emitted by the compiler makes properties visible to the IDE's Object Inspector — is a direct descendant of the principle that a program's structure should be inspectable without executing it. Wirth never envisioned that application, but the conceptual line is unbroken.

The commercial extensions did introduce genuine weaknesses by Wirth's own criteria. The Borland string type, later Delphi's AnsiString and eventually UnicodeString, was a pragmatic override of Pascal's fixed-length string model. The variant record, present in Wirth's own specification as a concession to practical needs, became a source of exactly the class of type-unsafe operations the original design had tried to foreclose. Every extension that made the language more commercially useful also made the compiler's job of catching errors slightly harder. That trade-off was not unique to Pascal, but it is especially visible in a lineage where the original designer had been so explicit about what he was optimising for.

Wirth died in January 2024. The Free Pascal project and Embarcadero's RAD Studio continue to evolve dialects of the language he published more than fifty years ago, accumulating generics, multiplatform targets and mobile runtimes that Wirth never contemplated. The teaching language that was supposed to stay small became a commercial platform that never quite stopped growing. That outcome would have surprised Wirth less than outsiders might assume: he had watched it happen in real time and spent the rest of his career designing smaller languages in response.

More in Pascal

All of Pascal