The Algol 68 Genie project
jmvdveer.home.xs4all.nl
jmvdveer.home.xs4all.nl
The lack of a concrete syntax also harmed it: different implementations spelled the “begin” keyword as BEGIN, 'BEGIN, and .BEGIN. Goodbye portability!
And finally, ALGOL 68 learned from ALGOL 60's failure to include an I/O library: they did a splendid job on their transput library. Unfortunately, it is record-oriented (as were most mainstream OS file systems of the time) at just the moment when Unix was about to popularize the byte-stream file abstraction.
I really wish that an ALGOL 68-style language had been successful, even given these mistakes (when you do a radical rethink of programming languages, you are bound to make mistakes). There was even at least one machine-oriented ALGOL-68 style language named Mary, which might have been a good replacement for C. It's good to see that at least some work on implementation continues.
It's not all downsides, though. Due to Algol (both 60 and 68) treating keywords as abstract symbols, it made it possible to translate those keywords to other languages. This was done in USSR, for example, and made Algol much more accessible to programmers there.
(I know there were similar experiments elsewhere in Europe; not sure if they were quite as successful, though.)
BTW the ability to translate the language had some other interesting consequences; apparently, they found that ALGOL 68 was sufficiently expressive to design what we would now refer to as DSLs, for applications varying from CNC to accounting. The end users of those languages would be even less likely to know English, of course.
The whole how do we use keywords in compilers (and in multiple languages)? how do we represent types? was all still something people were thinking through - in retrospect the two cases thing for parts of the language was a mistake, as was the 2 level grammar spec
Both the lack of concrete syntax and the 2-level grammars were disputed at the time, and one might remember that Wirth and Hoare designed ALGOL W as a reaction against the ALGOL 68 effort. (I liked both languages, silly me.)
My original comment was not intend as snark against the ALGOL 68 designers, but rather to point out that the language had a lot going for it, even with these serious flaws. But as is often the case, we learn more from mistakes than successes.
By the way, I want to praise C. H. Lindsey, whose “Informal Introduction to ALGOL 68” rescued the language from indecipherability and showed that there was a useful language lurking inside.
A lot of this history is lost now. I heard bits and pieces of it in my time on the periphery of the UBC ALGOL 68 project circa 1970-5. The Wikipedia articles on ALGOL W and 68 also hint at it.
https://archive.computerhistory.org/resources/text/algol/alg...
I vaguely remember something about a compiler (probably the Algol 68 compiler) with the wierdest bug that I have ever heard about a compiler: In certain months of the year, it had problems with compiling certain programs and students were adviced to try again a month later. The bug was never found.
The scenario could have been a season batch job that corrupted some required shared memory.
But, Algol68 included four main aims and principles of design: Including Security: "Algol 68 has been designed in such a way that most syntactical and many other errors can be detected easily before they lead to calamitous results. Furthermore, the opportunities for making such errors are greatly restricted."
On the other hand, I did speak to an ICL engineer once, and he told a story of an ambitious ICL programmer adding a "Happy New Year" console to the Geroge OS (Written in Assembly language)
The ambitious ICL programmer decided it was too tough to test this one-off hack, and rolled out the OS update with his happy hack, untested.
The update seemed to run fine for a few months... Until months later (at New Year as it happens) all the ICL servers in New Zealand crashed, and two hours later all the ICL servers in East Coast Australia crashed. This triggered a frantic call from the NZ ICL engineer to ICL in London England warning them of the impending doom in the UTC zone.
Yay... but this ICL Happy NY hack was probably written in ICL assembler.
On the other hand there was a nice little hack used by ICL in Algol68R that could be used today sniff out NULL pointer issues: https://en.wikipedia.org/wiki/ALGOL_68-R#F00L
https://news.ycombinator.com/item?id=31283119 (14 comments)
https://news.ycombinator.com/item?id=18734687 (0 comments)
https://news.ycombinator.com/item?id=5268301 (0 comments)
The logical structure of the language was driven to the extreme: I vaguely remember that
int a;
was merely an abbreviation of something like ref int a = new int;"LOC INT a" would be syntactic sugar for "REF INT a = LOC INT", which would be something akin to "int *a = alloca(sizeof(int))".
Can someone say what a "checkout compiler-interpreter" is? I am not familiar with this term. Is this something specific to Algo 68?