3 ms·
(background I implemented Algol68 as an MSc project in the early 80s) So Wirth was a big part of the Algol68 working group but grew disillusioned by it's resul
by Taniwha 3y ago
(background I implemented Algol68 as an MSc project in the early 80s)
So Wirth was a big part of the Algol68 working group but grew disillusioned by it's resulting complexity - he went off and invented Pascal, essentially taking the easy to implement parts of Algol68 and put them in a language.
Almost everything new (or newly borrowed) in Algol68 is common today, often reinvented many times over: structs, unions, pointers, a full type system, threads, a standard library, procedure pointers, a heap with garbage collection etc etc
The things we don't have from it are largely different fonts for reserved words and/or types (something largely forced on them by using cards with only upper case), and A68's standard which I guess is what happens when you let the maths guys go wild - they invented a language to describe the language and its semantics, a language that's largely incomprehensible to most mortals (and then reinvented it for the revised standard) .... it made the spec really hard to read.
All in all it was a great effort considering the times, people were still figuring out how to do stuff at the time, it's not surprising they made some mistakes. It was also a time when compilers and OSs were largely owned by hardware companies, it was much harder for a language to get traction outside of academia (you expected to pay tens of thousands for a compiler, a free one couldn't be any good right?)
- chalst 3y agoScheme is in recent standards (since R6RS) divided in two: a core language, suitable for reasoning about, and a full language, aimed at expressing economically the kind of solutions software engineers come up with. The full language is meant to be expressed in terms of the core language. This seems analogous to the two-language approach you describe for Algol 68. Are you aware of recent developments in Scheme? Your description of it characterises it as a ball-and-chain for Algol 68.
- HarHarVeryFunny 3y agoActually when Wirth split from the Algol68 working group, he first created his own alternate successor to Algol60 - AlgolW (W=Wirth), which was still in use in 1979 when I took CS in college. It seems odd for Wirth to be arguing so much for user needs and then come out with a language like Pascal which favored minimalism over practicality.
- lynguist 3y agoIn this talk he seems to have already anticipated the necessarily extensible nature of a simple language, so the language core must be sound such that when new needs arise one extends, which is what did happen.
- HarHarVeryFunny 3y agoWell, Pascal had plenty of flaws too, not just excessive simplicity. From day one the only way to do almost anything non-trivial in Pascal was to abuse variant records as a way to do typecasts. The I/O library was horrible, but standardized as part of the language - e.g. there was no standard way to open a named file, and the only way to close any file was to reopen it (via reset/write) to a temporary file which would have the side effect of closing the original one. In the event there was no standardized (vs proprietary) meaningful improvement to Pascal (ISO Pascal basically just added poorly thought out "conformant arrays"), and Wirth himself just moved on and designed a new language instead - Modula-2, which was an improvement but also not great, then abandoned that in favor of Oberon.
- adrian_b 3y agoActually Algol 68 was a very good programming language and many of its features were really better than their correspondents in most modern programming languages. Unfortunately it was doomed since the beginning because its scary formal description has not been accompanied by an informal description and tutorial with programming examples. Therefore the majority of potential users have only looked at the first few pages of the formal description and they did not understand anything, so they decided that the language must be unusable. While Wirth has made many important contributions to the evolution of the programming languages and programming techniques, in his later languages, starting with Pascal, besides adding significant innovative features that were then widely borrowed in other languages, he also made excessive simplifications that created unreasonable restrictions to their applications. Most people today do not realize how bad was Pascal in comparison with Algol 68, or even C, because they have used only compilers like Turbo Pascal, which have added a great number of extensions to the original Pascal, to make it usable for practical problems. The formal description of ALGOL 68 is in fact much more simple than how it looks, but it is very hard to read for the first time on paper, due to the huge number of special terms that are defined, and which would need to be remembered during a linear reading. It would be quite easy to read if converted to a hypertext with appropriate links and using a reader that would show definitions when hovering over words. Of course, such a technology did not exist in 1968.