News: 1704390312

  ARM Give a man a fire and he's warm for a day, but set fire to him and he's warm for the rest of his life (Terry Pratchett, Jingo)

RIP: Software design pioneer and Pascal creator Niklaus Wirth

(2024/01/04)


Obit Swiss computer scientist Professor Niklaus Wirth died on New Year's Day, roughly six weeks before what would have been his 90th birthday.

[1]Wirth is justly celebrated as the creator of the Pascal programming language, but that was only one step in a series of important languages and research projects. Both [2]asteroid 21655 and a [3]law of computer design are named after him. He won computer-science boffinry's highest possible gong, the Turing Award, [4]in 1984 , and that page has some short English-language clips from a [5]2018 interview .

[6]Youtube Video

[7]

Niklaus Emil Wirth was born in Wintherthur in Switzerland, the day after St Valentine's Day 1934. In 1959 he got his bachelor's degree from [8]ETH Zürich , to which he returned later in life and from which much of his important research emerged.

[9]

[10]

He changed countries several times in his life – his 1960 master's degree was from the [11]Université Laval in Canada, and his 1963 doctorate from [12]USCD Berkeley – the home of [13]Berkeley Unix , or BSD as it's usually known. He stayed in California for the next four years as assistant professor of computer science at [14]Stanford University . During this time, he worked on his first two programming languages: [15]Euler in 1965, and [16]PL/360 , published in 1968.

Partly as a result of this work, he was invited into the Working Group planning the next iteration of the ALGOL programming language, to replace [17]ALGOL 60 . Along with [18]British computer scientist Sir Tony Hoare , he presented a proposal called [19]ALGOL-W . However, this was rejected in favour of a more complex proposal from Adriaan van Wijngaarden, which became ALGOL-68.

[20]

As described in C H Lindsey's [21]History of ALGOL-68 [PDF], when the ALGOL-W proposal was rejected, Wirth resigned from the committee, contributing a strong [22]"Closing Word" to the November 1968 [23]Algol Bulletin 29 , containing gems such as:

I pulled out my copy of the draft report on ALGOL-68 and showed it to her. She fainted.

Instead, Wirth took his proposal, changed it to be somewhat less compatible with ALGOL, and released it in 1970 under the name Pascal.

In this way, the story of Pascal's creation has two, different, parallel impacts. It was, of course, a [24]big hit and is still used today. The flipside of this, though, is that the overcomplicated ALGOL-68 was a flop: as the ALGOL-60 Forever page [25]puts it :

This language (Algol 68) was totally unsuccessful when compared with Wirth's line.

It's not much of an exaggeration to say that ALGOL-60 influenced every programming language invented afterwards, but its influence ended with the version released after Wirth's departure. His own languages were successful, in research and also commercially – Delphi is still on sale, and the [26]Free Pascal project just released Version 3.0 of its cross-platform [27]Lazarus IDE . However, the complexity of ALGOL-68 opened up the opportunities for newer, simpler languages such as C, Simula-67, and their offspring C++, and the legions of other languages and OSes implemented in them.

You can get a hint of the relationship between the leaders of the rival ALGOL proposals from the way that Van Wijngaarden introduced Wirth on stage at the [28]International Federation for Information Processing congress in 1965. He made a joke which became famous:

Whereas Europeans generally pronounce his name the right way ('Nick-louse Veert'), Americans invariably mangle it into 'Nickel's Worth.' This is to say that Europeans call him by name, but Americans call him by value.

If Wirth had continued to work on ALGOL, its huge influence might well have continued. Similarly, if he had stuck with the well-known Pascal brand, his later projects might have replaced it, rather than it surviving alongside its intended replacements.

In 1976, Wirth named his next language [29]Modula [PDF], but it was quickly replaced with Modula-2 in 1977. This added cooperating processes called coroutines to the language, using his former co-worker C A R Hoare's [30]Communicating Sequential Processes model. (These days, these feature in Erlang, Go, and Clojure, and [31]were lampooned by our own Verity Stob.) In the 1980s and 1990s, Modula-2 was an important language across the industry, as we discussed when [32]GCC 13 gained support for it last year.

Wirth spent two one-year sabbaticals back in California at Xerox PARC, the first in 1976-1977 and the second in 1984-1985. Inspired by what he saw there, on his return to Zürich he created the much more ambitious Oberon System. Oberon is a programming language, and a tiled-window development environment, and a complete operating system implemented in itself. The introduction to the [33]Oberon manual [PDF] contains what came to be known as Wirth's Law, although he modestly [34]credited it to Martin Reiser :

With the Oberon System, we wish to refute Reiser's Law, which has been confirmed by virtually all recent releases of operating systems: "In spite of great leaps forward, hardware is becoming faster more slowly than software is becoming slower."

The project is described very readably in [35]Oberon – the Overlooked Jewel [PDF], which is just 13 pages long. Oberon has inspired multiple successors, including Oberon-2, Oberon 07, and [36]Component Pascal .

[37]A Deadlock Holiday

[38]GCC 13 to support Modula-2: Follow-up to Pascal lives on in FOSS form

[39]This'll make you feel old: Uni compsci favourite Pascal hits the big five-oh this year

[40]Computing needs a Grand Challenge

The Oberon System is a sort of existence proof of how software can be very capable while being almost unbelievably tiny: the inner , outer and systools archives from the 2013 edition total some 4,623 lines of code, in 262kB of text. That's the entire core environment. But if that were not enough, Wirth explained the idea in a famous 1995 paper, [41]"A Plea for Lean Software" (The original is a PDF, but I have put a text version [42]here .)

His alma mater ETH Zürich interviewed him in 2021, and the German-language videos have English subtitles: [43]Part 1 , [44]Part 2 and [45]Part 3 .

From many accounts, he was approachable, friendly, and witty; we particularly liked [46]this tribute from Googler [47]Ralph Levien . Wirth retired in April 1999, although in 2013, shortly before he turned 80, he reappeared to publish an updated version of [48]Project Oberon .

[49]

In his work, the languages and tools he created, in his eloquent plea for smaller, more efficient software – even in the projects from which he quit – his influence on the computer industry has been almost beyond measure. The modern software industry has signally failed to learn from him. Although he has left us, his work still has much more to teach. ®

Get our [50]Tech Resources



[1] https://people.inf.ethz.ch/wirth/

[2] https://ssd.jpl.nasa.gov/tools/sbdb_lookup.html#/?sstr=21655

[3] https://www.techslang.com/definition/what-is-wirths-law/

[4] https://amturing.acm.org/award_winners/wirth_1025774.cfm

[5] https://www.youtube.com/watch?v=SUgrS_KbSI8

[6] https://www.youtube.com/embed/SUgrS_KbSI8

[7] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=2&c=2ZZc4nowHBaL4a122C7OgiwAAANg&t=ct%3Dns%26unitnum%3D2%26raptor%3Dcondor%26pos%3Dtop%26test%3D0

[8] https://ethz.ch/en.html

[9] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44ZZc4nowHBaL4a122C7OgiwAAANg&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0

[10] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=3&c=33ZZc4nowHBaL4a122C7OgiwAAANg&t=ct%3Dns%26unitnum%3D3%26raptor%3Deagle%26pos%3Dmid%26test%3D0

[11] https://www.ulaval.ca/en

[12] https://www.berkeley.edu/

[13] https://www.theregister.com/2022/02/09/section_8_unix_user_manual/

[14] https://www.stanford.edu/about/

[15] http://pascal.hansotten.com/niklaus-wirth/euler-2/

[16] https://dl.acm.org/doi/10.1145/321439.321442

[17] https://www.theregister.com/2020/05/15/algol_60_at_60/

[18] https://www.theregister.com/2004/06/14/grand_challenge_compsci/

[19] http://pascal.hansotten.com/niklaus-wirth/algol-w/

[20] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44ZZc4nowHBaL4a122C7OgiwAAANg&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0

[21] https://dl.acm.org/doi/pdf/10.1145/234286.1057810

[22] https://archive.computerhistory.org/resources/text/algol/algol_bulletin/A29/P32.HTM

[23] https://archive.computerhistory.org/resources/text/algol/algol_bulletin/

[24] https://www.theregister.com/2020/05/29/happy_50th_pascal/

[25] https://www.algol60.org/15algolw.htm

[26] https://www.freepascal.org/

[27] https://www.lazarus-ide.org/

[28] https://www.ifip.org/

[29] https://www.research-collection.ethz.ch/bitstream/20.500.11850/68669/1/eth-3057-01.pdf

[30] https://dl.acm.org/doi/10.1145/359576.359585

[31] https://www.theregister.com/2009/12/10/verity_stob/

[32] https://www.theregister.com/2022/12/16/gcc_13_will_support_modula2/

[33] http://www.projectoberon.net/wirth/ProjectOberon/PO.System.pdf

[34] https://www.theregister.com/2023/01/11/software_versus_hardware/

[35] https://people.cis.ksu.edu/~danielwang/Investigation/System_Security/download.pdf

[36] https://blackboxframework.org/index.php?cID=home,en-us

[37] https://www.theregister.com/2009/12/10/verity_stob/

[38] https://www.theregister.com/2022/12/16/gcc_13_will_support_modula2/

[39] https://www.theregister.com/2020/05/29/happy_50th_pascal/

[40] https://www.theregister.com/2004/06/14/grand_challenge_compsci/

[41] https://blog.frantovo.cz/s/1576/Niklaus%20Wirth%20-%20A%20Plea%20for%20Lean%20Software%20-%20OCR.pdf

[42] https://liam-on-linux.dreamwidth.org/88032.html

[43] https://inf.ethz.ch/news-and-events/spotlights/infk-news-channel/2021/11/niklaus-wirth-video-interview.html

[44] https://inf.ethz.ch/news-and-events/spotlights/infk-news-channel/2021/12/niklaus-wirth-video-interview.html

[45] https://inf.ethz.ch/news-and-events/spotlights/infk-news-channel/2021/12/niklaus-wirth-video-interview-part3.html

[46] https://mastodon.online/@raph/111693863925852135

[47] https://levien.com/

[48] http://www.projectoberon.net/

[49] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=3&c=33ZZc4nowHBaL4a122C7OgiwAAANg&t=ct%3Dns%26unitnum%3D3%26raptor%3Deagle%26pos%3Dmid%26test%3D0

[50] https://whitepapers.theregister.com/



stiine

Life's no longer Wirth living...

Good research!

Gene Cash

I thought I knew a lot about him, but I discovered a ton of stuff I didn't know in this article.

Thanks!

Re: Good research!

Liam Proven

[Author here]

> I discovered a ton of stuff I didn't know in this article.

That was my plan. I am glad it worked out. Thank you!

UCAP

Pascal was the first programming language I learnt at University, and while I have not programmed using it since (nearly 40 years!) it still has my highest regard as being easy to use.

RIP Niklaus Wirth. You've finally hit the END statement.

A lovely obit

MacroRodent

Thanks!

Pascal was the second programming language I encountered, after BASIC. The introductory programming course at HUT in 1981 used Wirth's "Algorithms+Data structures = Programs" as the text book.

I also dabbled at one point with Modula-2 (but not much as much as a more clever friend of mine, who used it to implement a universal diskette reader for a CP/M machine he had built from a kit).

Jay 2

Ah Modula-2, that was the base language for the start of my degree back in 1992. On pretty much the first day one of the lecturers stood up and said "We could teach you something more comercially viable like Ada, but we're not into that". The next year the base language was indeed changed to Ada...

If I mention Modula-2 then I usually refer to it as "Son of Pascal" to give people an idea of what it is, as they may not have heard of it. Though to be honest back then I had a hard time figuring out the move from BASIC/COMAL on a BBC to Modula-2 (and all the other langauges we had to mess with; Ada, Lisp, C to name a few) on a Sun box, which probably explains why I'm a sys admin now! Though I think after all these years I have figured out procedures, functions and libraries!

cornetman

> contributing a strong "Closing Word" to the November 1968 Algol Bulletin 29

As I read that interesting and insightful document, I could only think of C++ and the impenetrable monster it has become.

USCD Berkeley?

Androgynous Cow Herd

What the hell is that?

It's "UC Berkeley"

or "University of California, Berkeley"

or, colloquially, "Cal"

If you re talking about the place that put the "B" in BSD Unix"

USC is "University of Southern California" and it is far away in Orange County

Colloquially, "University of Spoiled Children" for it's student body predominately made up of Buffys, Tanners and Chads.

GO BEARS!

Re: USCD Berkeley?

Rob Menke

Methinks the author got confused. Perhaps he mixed up Cal Berkeley with UCSD Pascal, which was an implementation of the language from the University of California, San Diego.

Re: USCD

ldo

UCSD Pascal was more than just a language dialect, it was the core of the “p-system”, which tried to abstract away from the plethora of incompatible machine architectures by having all compiled code run on an abstract “p-machine”. So just about the only actual machine code that had to be written for a new architecture was the p-machine interpreter. And maybe some very-low-level drivers. Then everything written in UCSD Pascal (including most of the OS) would port straight across.

This was the first popular implementation of the “write once, run anywhere” concept. And yes, it paid the price in speed of code execution. But some people felt it was worth it.

Re: USCD Berkeley?

Liam Proven

[Author here]

Whoops!

My bad.

Jumbotron64

Sad news indeed. I never became much of a programmer. After my first experience with programming in 1982 being punch-card coding Fortran and taking my stacks to the university Vax mainframe for running and output and then giving BASIC a go on my Commodore 64 I pretty much gave up on it. But I always wanted to give it another go. I decided in my elderly years to try again and went over to rosetta.org to look at code examples of various languages.

It became clear to me after about 15 minutes of looking at various code examples that to my eyes and my mind that there were certain languages that just naturally "looked" better and read better. That is to say that although I have a way to go to finally get my head wrapped around code logic, the way these certain languages presented said logic and the syntax used just made things "click" in my head. I could "see" more intuitively what the programmer had in mind and where he/she was going with it.

And those languages were...Ada, Delphi, Lua and Pascal. So I decided to give each a go with an IDE if available if not a RAD framework. Delphi was out quickly because of cost. Lua is nice but not really any kind of RAD framework outside of gaming and it's an interpreted language best for scripting....no problem with that. That left Ada and Pascal. Once you learn one the other is a piece of cake.

Finally settled on Pascal through Free Pascal using the Lazarus IDE. WIsh I had this as my introduction to programming back in 1982. But BASIC, Fortran and COBOL was the menu back at my small university.

Thank you Niklaus Wirth. As an American I know both your name AND your worth. And you are worthy indeed.

PRR

> Delphi was out quickly because of cost.

Boogle [1]"delphi free"

embarcadero lets "community" use their Delphi CE for free, up to some income point that you may not be aspiring to.

Borland Delphi 7.0 (2002) is abandonware at WinWorldPC.com 'License' (no-nag) codes down the page.

There seem to be free-beer imitations but my Googl-Foo is sore.

[1] https://www.google.com/search?q=Delphi+free&newwindow=1

Wirth, ALGOL68, and the Meta key

Vincent Manis

A couple of observations. First, ALGOL 68 did not succeed, but its complexity has been overstated. Partly due to the horrendously un-understandable 2-level grammars of the Report, and partly due to language features that were not yet understood (parallelism and semaphores, among others), it got a reputation as unimplementable, even though there were almost-complete subsets built in the 1970s, and ALGOL68 Genie flourishes to this day. Wirth and Hoare had very good reasons for rejecting it, but I would argue that modern C++ is at least as complex as ALGOL68, if not more so.

Second, during his California stay, if not afterwards, Wirth had the nickname`Bucky'. At one point he suggested an Edit key to set the 8th bit of an ASCII character on a keyboard. This was the base for the Meta, Super, and Hyper keys of various Stanford and MIT keyboards, and the modern Alt, System Logo, Command, and Option keys of modern keyboards. The bits these keys set are known as `bucky bits' to this day.

ALGOL 68 Blew My Mind

ldo

Picture this: first-year computer science student, encountering the resources of a University library for the first time. Picked up this “Revised Report on ALGOL 68”. Already knew something about BNF, and about its limitations (like being unable to say that “an identifier being used in an expression must already have been declared in some way compatible with its use”). And discovered that somebody had worked out a solution to these very limitations!

And then later discovered that most people had no interest in using van Wijngaarden grammars (or attribute grammars — I used to annoy one CS lecturer by continually getting the two mixed up) as part of any later language definition. I was also doing physics courses at the same time, and imagine if some physicist had said “quantum theory is too hard, let’s forget about it and go back to doing things the good old-fashioned Newtonian way”.

Re: ALGOL 68 Blew My Mind

PauloTos

Funny you should say...

At Manchester Poly in 1983ish a fellow student wanted to write a poem in Algol68C but he'd only got to one stanza:

WHILE not logical world end

DO

blow my mind

OD

Still appeals to me.

Semicolon Wars

ldo

Here’s an old controversy from the time that nobody seems to have mentioned (yet): should semicolons be statement separators , or statement terminators ? The Algol tradition was that they were separators that went between statements, which meant you should omit the semicolon if there was no statement following (remember that a closing bracket symbol like end is not a statement in itself).

However, this rule was loosened a bit in many Algol-like languages (including Pascal) by admitting that a “null statement” (consisting of no symbols at all) could also be a statement. This allowed you to put in a semicolon before that end , by simply pretending there was a null statement in-between.

Ada went further, by explicitly making semicolons into statement terminators , and making them compulsory after every statement. Algol 68 went the other way, by prohibiting null statements: you had to put in an explicit symbol like skip to denote a no-op statement.

Michael Hoffmann

Mentally going back through the labyrinthine course of my career (and life), I can safely say there were 2 things without which I probably wouldn't be where I am:

1) finding a mentor who taught an eager but clueless kind assembly language (6502!)

2) learning and using Pascal (Apple's UCSD implementation on the 16KB extension card), followed soon after by Modula-2

Thank you and vale Dr Wirth!

Love America -- or give it back.