Niklaus Wirth, or the Importance of Being Simple

Advocates of Niklaus Wirth’s “simplicity first” philosophy reflect on Pascal, Modula, Oberon and their descendants, contrasting them with more complex mainstream languages like C, C++ and Rust. Commenters weigh how language design constraints, compilation speed, and ergonomics affect real-world productivity, teaching, and systems programming, often citing Go, D, and Modula‑3 as modern heirs to Wirth’s ideas. The thread also touches on the historical influence of Wirth’s work—from Apple and Borland to Logitech—and questions whether today’s tooling and industry pressures still reward minimal, tightly designed languages.

Pascal vs C and Language Design Tradeoffs

  • Several commenters say “standard” Pascal was too limited; they spent time on workarounds that disappeared when switching to C.
  • Others argue Pascal’s simplicity and structure made them productive and clarified core programming concepts.
  • There’s debate whether C’s success is due to being simpler/more generic, better ergonomics (shorter, less verbose syntax), Unix ecosystem synergy, or all of the above.
  • Extensions (Turbo Pascal, Object Pascal, Clascal, Modula-2, etc.) are seen as necessary to make Pascal viable for systems and application development.

Teaching Language vs Production Systems

  • Many note original Pascal was explicitly designed for teaching and one-pass compilation on limited hardware, not as a systems language.
  • Some complain it was misused in industry (“told to dig a trench with a driving-school car”), blaming management choices rather than the language itself.
  • Short compile times are highlighted as critical in educational and timeshared environments.

Nested Functions and Closures

  • Discussion of nested functions with access to outer scopes (Pascal-style) and how they are implemented using a “static link” to enclosing stack frames.
  • Comparisons to C++ lambdas and trampolines; some homegrown VMs attempted simpler schemes and ran into recursion problems.

Modules, Interfaces, and Implementations

  • Confusion over “modular languages”: some mean Modula/Oberon/Ada-style modules, others Java-like interfaces.
  • In module systems like Modula-2/Oberon/C/C++, a given interface header can have multiple implementations globally, but only one is picked per compilation.
  • Java-style interfaces (and some ML-like module systems) allow multiple implementations more flexibly at the type level.

Simplicity, Complexity, and Compilation Speed

  • One view: compilation speed is a litmus test for language simplicity; fast-compiling languages (Go, classic Pascal) reflect simple designs.
  • Counter-arguments: compile speed is influenced by implementation and tooling (e.g., LLVM, headers, templates), not just language complexity; examples like OCaml show fast compilers for nontrivial languages.
  • Debate on modern C++ modules, caches, and tooling as partial fixes vs fundamental complexity.

Influence on Later Languages

  • Go is frequently discussed: some see it as a Wirth-inspired, simple descendant of Modula/Oberon; others say its main lineage runs through Newsqueak and CSP, with only superficial Pascal-family influence (syntax, packages).
  • D is noted as borrowing specific ideas (e.g., nested functions) but not overall Wirth-style minimalism.
  • Modula-3 is praised as a “complete” yet lean language that anticipated C++ complexity issues.

Concurrency and Simplicity

  • Extended subthread on adding concurrency to Oberon (Oberon+): channels vs monitors, actors, CSP, and how many primitives a “simple” language should expose.
  • There is no consensus: some argue one construct (e.g., channels) should suffice; others cite evidence from Go and other ecosystems that multiple primitives remain widely used.

Reflections on Wirth and Historical Context

  • Many express admiration for the emphasis on simplicity, small compilers, and tight hardware–software co-design.
  • Some argue Wirth could focus on simplicity because of the constraints and slower pace of his era; others strongly reject this and see his work as still relevant and underused.