Languages developed by NiklausWirth
, 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 NiklausWirth
". 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 AlgolLanguage with the addition of dynamic lists and symbols (a la LispLanguage). Probably the first use of a PrecedenceGrammar?.
- PL360: (1965) A programming language for the IBM System/360 (IbmSystemThreeSixty). 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 (PlsLanguage). 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].
- 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 CarHoare. First language to support passing parameters by value-result. First language to support case ("switch") statement (invented by CarHoare).
- Pascal (PascalLanguage): (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 (ModulaOne, ModulaTwo, ModulaThree): Introduced language-level support for concurrency, multi-programming, modular programming. Modula-2 included encapsulation of machine primitive operations. ModulaThree was not designed by Wirth, though he did give it his approval. Technically it's not one of the WirthLanguages.
- Oberon (OberonLanguage): 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 VeeTable 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 DeeLanguage.
More information is available at http://www.inf.ethz.ch/~wirth/projects.html
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 CedarLanguage?
(which was the basis for the Oberon system), and ModulaTwo
+ and ModulaThree
And, I am told, on Apple's ObjectPascal, 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 CeePlusPlus
, because those languages didn't get it
. He said that NiklausWirth
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 PascalLanguage
. Only in SmalltalkLanguage
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 ObjectOriented
, 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. -- OneUnhappyCppLanguageProgrammer?
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. StaticTyping vs DynamicTyping. BondageAndDiscipline vs limitless flexibility. Block-structured procedural with full LexicalScoping vs OO without (other than SmalltalkBlocks?). A traditional EditCompileLinkRun language vs an ImageBasedLanguage.
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. -- WardCunningham
C++ not ObjectOriented? While it certainly isn't a pure OO language; it does support the OO paradigm. See DefinitionsForOo and IsCeePlusPlusObjectOriented for this particular HolyWar. -- ScottJohnson
CategoryProgrammingLanguage CategoryAlgol CategoryPascal
Note that "BondageAndDiscipline
" 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" ;-)