| | {{infobox |
| | | title = ALGOL W |
| | | designers = Niklaus Wirth & Tony Hoare — an ALGOL X proposal |
| | | first appeared = 1966 — implemented at Stanford on the System/360 |
| | | family = restrained evolution of ALGOL 60 |
| | | added = records + references · case statements · while · strings · call-by-result |
| | | fate = rejected by the ALGOL committee → became the direct basis of Pascal |
| | }} |
| | |
| | # ALGOL W |
| | |
| | **ALGOL W** is the answer to one of computing history's great "what ifs" — the successor to ALGOL 60 that the committee rejected for being too modest. When the IFIP working group solicited proposals for the next ALGOL, **Niklaus Wirth and Tony Hoare** submitted a disciplined evolution: keep ALGOL 60's frame, add what was missing — **records and references**, **case statements** replacing the awkward `switch`, a proper `while`, strings and bit strings, complex numbers, call-by-result parameters — and stop there. At a famously contentious meeting, the committee judged it too little an advance and chose **Adriaan van Wijngaarden's** vastly more ambitious proposal instead — the design that would consume itself for years and emerge as **ALGOL 68**.[[cite: [ALGOL W](https://en.wikipedia.org/wiki/ALGOL_W) — the Wirth/Hoare proposal, the additions, and the committee's choice of the van Wijngaarden design]] |
| | |
| | Wirth published the rejected design anyway — *A contribution to the development of ALGOL* — and, at Stanford, supervised a first-class implementation for the IBM System/360, written in **PL360**, his own ALGOL-flavored systems assembly language. The compiler was widely distributed and notably well-instrumented: it carried debugging and execution-profiling facilities that influenced how later compilers were built.[[cite: [ALGOL W](https://en.wikipedia.org/wiki/ALGOL_W) — the PL360/Stanford implementation and its debugging/profiling facilities]] |
| | |
| | # The dialect that became a dynasty |
| | |
| - | The vindication was total, if slow. ALGOL W's syntax reads today like **Pascal** — because it essentially *is* Pascal's working draft: Wirth refined W into Pascal (1970), tightening record handling and, controversially, losing ALGOL W's ability to size arrays at runtime — the most-complained-about omission in early Pascal. Through Pascal came the whole Wirthian line — Modula-2, Oberon — which educated a generation of programmers and built a generation of systems. The committee's "too conservative" loser became the ancestor of the most influential teaching language ever designed; the winner became a cautionary tale about design by ambition. Hoare, who lived both sides, later used his Turing Award lecture to argue the committee had chosen wrongly.[[cite: [ALGOL W](https://en.wikipedia.org/wiki/ALGOL_W) — ALGOL W as Pascal's basis, the array-length loss, and the Modula/Oberon descent]] |
| + | The vindication was total, if slow. ALGOL W's syntax reads today like **Pascal** — because it essentially *is* Pascal's working draft: Wirth refined W into Pascal (1970), tightening record handling and, controversially, losing ALGOL W's ability to size arrays at runtime — the most-complained-about omission in early Pascal. Through Pascal came the whole Wirthian line — Modula-2, Oberon — which educated a generation of programmers and built a generation of systems. The committee's "too conservative" loser became the ancestor of the most influential teaching language ever designed; the winner became a cautionary tale about design by ambition. Hoare, who lived both sides, made the episode the centerpiece of his Turing Award lecture, *The Emperor's Old Clothes* — his cautionary tale about over-ambitious language design.[[cite: [ALGOL W](https://en.wikipedia.org/wiki/ALGOL_W) — ALGOL W as Pascal's basis, the array-length loss, and the Modula/Oberon descent]] |
| | |
| | ```fact |
| | ALGOL W's formal description was written in an *affix grammar* — a precursor of the two-level Van Wijngaarden grammars that made ALGOL 68's definition famous and nearly unimplementable. The rejected proposal even predicted the winner's notation problem. |
| | ``` |
| | |
| | # Where it sits |
| | |
| | ALGOL W is the small-is-powerful argument written as a language war: the disciplined upgrade versus the committee's grand design. ALGOL 68 produced magnificent theory and few shipping systems; ALGOL W produced Pascal. Between [[CPL]] (too big to build) and ALGOL 68 (too big to ship), it marks the third proof in this catalogue that restraint compounds. |
| | |
| | ## Check your understanding |
| | |
| | - [ ] Who proposed ALGOL W, and what was it a candidate for? |
| | - [ ] What three headline features did it add to ALGOL 60? |
| | - [ ] What did the committee choose instead — and what did that become? |
| | - [ ] What language descended directly from ALGOL W? |
| | |
| | ```hide Show answers |
| | 1 — **Wirth and Hoare**, as a proposal for the next ALGOL (**ALGOL X**). |
| | 2 — **records/references, `case` (replacing `switch`), `while`** — plus strings, bit strings, complex numbers, and call-by-result. |
| | 3 — **van Wijngaarden's** more ambitious proposal → **ALGOL 68**. |
| | 4 — **Pascal** (1970) — and through it Modula-2 and Oberon. |
| | ``` |
| | |
| | [[Category:Languages]] |
| | [[Category:Programming]] |
| | [[Category:History]] |
| | |