Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

I feel like Wirth doesn't get enough credit these days. I have come to really appreciate his writing, especially books like Project Oberon and Compiler Construction. I thought Pascal (and by extension, the Modula languages) was lame when I was younger and full of C-and-Unix machismo, but I came to have a strong appreciation for the design of those languages (especially Modula-3, which wasn't Wirth but derived from his work).


Wirth is one of my biggest influences. I was just inspired by this post to finish a short little draft I had sitting around about Wirth as an influence, and the Oberon language report. Oberon-07 is defined in a 17 page document that is simplicity itself. Of that, about 2 pages is EBNF (Wirth published the first EBNF variation too...) for Oberon, and the rest is easily accessible prose...

Unlike most languages, Wirth's languages have gotten simpler, but more powerful, from generation to generation. His greatest legacy to me is his focus on engineering vs. science in programming language design. He's never been concerned with adding the latest and greatest features, but on what is proven, and what has a well understood means of efficient implementation.

This is both the beauty and elegance of his language designs, and in some ways probably his "downfall" in terms of getting credit outside of quite small circles:

Wirths languages are not "sexy". They're stripped down and bare. Their implementations are not sexy - they're stripped down and bare: Simple recursive descent parsers with direct code generation (most, or possibly all, of his compiler implementations output code without generating an AST at all) and minimal optimization - focusing on being easy to understand and modify, predictable, and fast, rather than on producing the fastest possible code.

But that's what makes him stand out as a beacon of programming language engineering. We need the fancy, sexy languages and implementations too, but "Wirthian" languages and compilers are an important counterpoint.

(The blog post is here: http://www.hokstad.com/oberon)


@vidarh I was going to write a post, but you already wrote it. It's a great shame that many young programmers I meet think they need the noise of c# to pull off some good code. M2 with so few keywords, excruciating compile time checking, a great module system for the time, and beautiful green threading was just a joy to work with. It encouraged good engineering practice that helped me become a complete sme on the apps I created because I could keep so much more of the flow in my head than with my comparable experience with other languages. Golang has certainly rejuvenated my enjoyment of programming because it helps me recreate some of those experiences I had with M2.


If you want to have a look how Oberon systems looked like, have a look here,

http://progtools.org/article.php?name=oberon&section=compile...


Is the Oberon-07 derived from ETH Zurich or from the split of Oberon v4 development of JKU Linz? http://www.ssw.uni-linz.ac.at/Research/Projects/Oberon.html

The EBNF is great. I learned the Wirthian compiler engineering from a Prof. who was a former colleague of Wirth.


The language spec is actually based on refining the original Oberon, rather than any later versions. I don't know which code base his implementation was started from - there are so many to pick from..


The link to the PDF you're talking about on that article appears to be busted. :(


Based on the file name at least, this looks like it: http://www.inf.ethz.ch/personal/wirth/Oberon/Oberon07.Report...


Oops. Thanks for catching that. My draft had been sitting around too long - the URL used to work.. (fixed)


Plan9 has a lot of Wirth inspiration. Particularly the Acme text editor. The concept of text as menus is taken straight from Operon. In Acme you can use any text as an action by middle clicking and because Acme exposes it's internals via a synthetic file system you end up with a very powerful application. There are no drop down menus.

Combine with the other synthetic file systems and the combination is incredibly useful. There is an email client, for instance. And my friend fgb added image viewing and now we even have a Web browser.

http://en.wikipedia.org/wiki/Acme_(text_editor)

I visited that page one day, looked at the screen shot and said "wow, that person uses Acme just like me, even using Opened" and it eventually it dawned on me that it was a screenshot of my screen I had posted elsewhere.


Go as well.

The way you define methods is based on Oberon-2.


See also Limbo / Alef / Newsqueak for Go's progeny


Yes, Go is a kind of blend between Limbo and Oberon.


Bah at my phone typing, I'm sure I fixed some of those.

Data + Algorithms = Programs


> There is an email client, for instance. And my friend fgb added image viewing and now we even have a Web browser.

Inline image viewing and web browsing? Available in p9p? Screenshots?


It is available for p9p, and there are screenshots

http://lab-fgb.com/abaco/

Feel free to ask any questions. FGB is a nice guy so feel free to contact him directly


I've always liked Pascal and Modula-2 (never got round to trying Oberon). These programming languages are actually much simpler to learn than many recent languages, including supposedly "friendly" scripting languages that tend to have quite large and loose syntax.

Brian Kernighan wrote an influential essay "Why Pascal is not my favourite programming language" that strongly influenced the perception that Pascal was suitable only for teaching and not real production work.

The important point about languages with a small, finite (and clear) syntax is that you actually feel you could fully learn the language, maybe even master it. Your code may end up a little bit more verbose (anathema to many programmers, I know) but that doesn't mean it's unreadable.

I don't mind if a language is strict about the way it's syntax is written. I'm happy if it doesn't have shortcuts either (i.e. it has just one method to perform an operation or function). This, in my view, actually makes learning the language simpler and easier.

I've longed wished that there was a simple, strongly-typed compiled language with the lineage of Pascal available for modern server side web programming. Does anything like this exist?


There is a heavy Pascal influence in Nimrod.


Being a Turbo Pascal expert by the time I got to learn C (early 90's), I never liked the language.

Turbo Pascal already offered me stronger type safety, real modules, OO, system programming capabilities. So C was meh, it only had better portability[0] going for it.

This lead me to follow Wirth's work and I became a scholar of Wirth's advocacy for safe systems programming.

I was also lucky to have access to Oberon and discover that implementing OS in GC enabled systems programming languages was feasible.

[0] whoever wrote K&R and early ANSI C code across commercial UNIX systems, knows how much "portable" C was really back then.


I first learned Pascal around 1978, tried Microsoft's QuickPascal around 1990, then used Turbo Pascal for work on a planetary science simulator [0] and teaching. From 1995 on I used its successor, Object Pascal and Delphi, which I thought was a really powerful combination of a good language, libraries/frameworks, and IDE. Mostly for the PC, Borland tried briefly to market to Unix systems with Kylix, but it didn't gain as much traction as they would've liked, I guess. Anders Hjelsberg [1] was inspired by Wirth's Tiny Pascal in his Algorithms + Data Structures = Programs book to work on Pascal. I think his efforts on Turbo Pascal, and Object Pascal were truly inspired.

[0] http://www.arcscience.com/otherProducts/danceOfThePlanets.ht... [1] http://en.wikipedia.org/wiki/Anders_Hejlsberg


By the time I was ready to learn the next thing after BASIC and assembler as a teenager in the mid-90s, the "Pascal is dead" meme had already spread enough (at least here in the US) that I never even realized that Pascal had advantages over C. And then I fell for the "safe languages can't be compiled" myth propagated by Java and the popular dynamic languages (Perl, Python, etc.).

Maybe it's time for a Pascal resurgence. Pascal is only dead if we treat it as such. And I see there's at least one active open-source Pascal compiler (Free Pascal).


Pascal was quite strong in Europe up to when the web started taking off around early 2000.

Here Pascal was actually Turbo Pascal/Delphi, as other dialects were usually ignored.

> And then I fell for the "safe languages can't be compiled" myth propagated by Java and the popular dynamic languages (Perl, Python, etc.).

This is why I sometimes tend to defend Go, even when I used to bash here some of its design decisions. Or keep bringing up Pascal family of languages or alternative commercial AOT compilers for .NET/JVM.

It is a mean for young generations to learn you don't need VMs for memory safe languages.


Scala also has a direct lineage to Wirth through Martin Odersky.


I'm with you. Cardelli and the rest did a masterful job with Modula-3, and it's a really nice systems language.




Consider applying for YC's Winter 2026 batch! Applications are open till Nov 10

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: