Wirth Languages

Languages developed by Niklaus Wirth, an internationally famous specialist in programming-language design and implementation, most closely associated with ETH Zurich in Switzerland

.


One commentator suggested, in a manner that suggested sarcasm, that the list be broadened: "Or: languages that look as if they were developed by Niklaus Wirth". However, all of the languages listed were indeed developed by Wirth.


Wirth's language designs:

Euler: Developed 1962-65 as part of his dissertation work. Intended as a generalization of the Algol Language with the addition of dynamic lists and symbols (a la Lisp Language). Probably the first use of a Precedence Grammar.

PL360: (1965) A programming language for the IBM System/360 (Ibm System Three Sixty). PL360 really was a high-level assembler for the 360 architecture. Subroutine linkage and control structures were provided by the Algol-like parts of the language, while the instructions that actually did anything were in assembler format. It might be well argued that PL360 was the predecessor of IBM's PL/S (Pls Language). See Niklaus Wirth: "PL360, a Programming Language for the 360 Computers". JACM 15(1): 37-74 (1968) http://portal.acm.org/citation.cfm?id=321442&dl=ACM&coll=portal portal.acm.org.

Algol-W: Proposed as an alternative to Algol 68, a language designed as an successor to Algol-60, but resembled already Pascal. Joint work with Car Hoare. First language to support passing parameters by value-result. First language to support case ("switch") statement (invented by Car Hoare).

Pascal (Pascal Language): (1968-) Among programming-language specialists, or computer-science students of the 1980s, "no introduction is needed", but it is worth noting that Pascal was intended for systems programming and not just for education.

And it was, somehow, used for systems programming here and there, but it is worth pointing out that, on platforms where C was also available, Pascal was not used for systems programming. Pascal forced a great deal more use of assembly language to get around language restrictions.

Modula (Modula One, Modula Two, Modula Three): Introduced language-level support for concurrency, multi-programming, modular programming. Modula-2 included encapsulation of machine primitive operations. Modula Three was not designed by Wirth, though he did give it his approval. Technically it's not one of the Wirth Languages.

Oberon (Oberon Language): Oberon left off some parts of Modula-2 and introduced the concept of record type-extensions, used to implement objects. Statically dispatched "methods" were invoked using normal procedure syntax (e.g., M.P(o, ...);). Oberon-2 added type bound procedures, which are dynamically dispatched methods using a Vee Table structure (e.g., o.P(...);). Type-bound procedures always were dynamically dispatched; thus, one used normal M.P calling convention for statically resolved methods. Oberon also introduced garbage collection to the world of statically-compiled, imperative programming languages, influencing languages and environments such as Java, .NET, and Dee Language.


More information is available at www.inf.ethz.ch .


Is PL360 different from PL/1?

A respondent answered the question of PL360 vs. PL/I with a simple "Yes". Actually, the question deserves an energetic "Hell, yes!" in reply. PL360 is a very simple and straightforward language, consistent with its very modest goals. PL/I is a notoriously complicated language, whose best rivals for complexity may be Ada, Algol 68, or C++.


Wirth also consulted during the development of the Cedar Language at Xerox Parc (which was the basis for the Oberon system), and Modula Two + and Modula Three at Digital.

And, I am told, on Apple's Object Pascal, first on the Lisa and later for the Mac.


I was told by someone who attended Wirth classes in Switzerland that Wirth complained about modern languages like Cee Plus Plus and Java Language, because those languages didn't get it. He said that Niklaus Wirth made funny remarks about modern languages and that students laughed, but not at his jokes, but at him, because how could all those modern languages be all wrong? I think there is still something we didn't get about Wirth ideas an specially about Pascal Language. Only in Smalltalk Language you get the same feeling that the program doesn't take too long to compile. In Java the time it takes is not so bad, but in Pascal it was even better. About C++, I can say that I agree wholeheartedly because it is not Object Oriented, and it is easier to produce buggy code than correct code. I have the feeling that in Pascal I never got so much buggy code as in C++. Even Smalltalk is much better at producing less buggy code. -- One Unhappy Cpp Language Programmer


Maybe your Pascal code was relatively bug free, but everyone else in the world sure cranked out buggy Pascal. Also I notice one strong similarity between Pascal and C++: in both cases, a lot of programming consists of fighting the language, rather than on focusing on the algorithm.


C++ and Java don't get "what", exactly? Comparing Smalltalk with Pascal is interesting - if not humorous - given that the two languages are opposites of each other in so many ways. Static Typing vs Dynamic Typing. Bondage And Discipline vs limitless flexibility. Block-structured procedural with full Lexical Scoping vs OO without (other than Smalltalk Blocks). A traditional Edit Compile Link Run language vs an Image Based Language.

On the other hand, pascal and smalltalk both have small grammars that are easily implemented with recursive descent parsers. Both designs sought to capturing the essense of computation so that it could be more easily experienced by others. Interestingly, pascal allowed one to program in the context of a (possibly dynamic) structure using the "with" statement and thus anticipated object-oriented programming. -- Ward Cunningham


C++ not Object Oriented? While it certainly isn't a pure OO language; it does support the OO paradigm. See Definitions For Oo and Is Cee Plus Plus Object Oriented for this particular Holy War. -- Scott Johnson



Note that "Bondage And Discipline" is an exonym by non Wirthian programmers (and many that lack even proper experience to judge it). The same with the remark about Pascal not being used as system language C systems. At least in Europe Pascal had supplanted Algol as system language long before C escaped its Unix beginnings. Yes, C took over, but that is something else as never being used as such.


Contrast with "wirthless languages" ;-)

See original on c2.com