The latest language in the GNU Compiler Collection: Algol-68
- Reference: 1736242213
- News link: https://www.theregister.co.uk/2025/01/07/algol_68_comes_to_gcc/
- Source link:
An unexpected [1]announcement came along at the start of 2025: the addition of another new language to the GCC suite. Well, we say "new", but that is debatable: the code is new, but the language in question was announced 57 years ago: the work-in-progress project is a front-end for ALGOL-68, by Oracle staffer [2]Jose E Marchesi .
When Richard Stallman [3]announced GCC in 1987 , its initials stood for the "GNU C Compiler", but by December that year, version 1.15.3 included g++ , support for C++. Now the GCC initialism stands for the GNU Compiler Collection, and the language can also compile Ada, D, Go, Objective-C and other languages. A few years ago, we wrote about the addition of [4]support for Modula-2 . Among these is Fortran, which means that Algol-68 isn't the oldest language in GCC.
[5]
Marchesi gives credit to an existing project for the parser for the new front-end. That project is an interpreter for ALGOL-68 called the [6]Algol 68 Genie by [7]Marcel van der Veer .
[8]
In all honesty, this vulture can't remember what he was doing when ALGOL-68 came out, but he was probably learning to roll over onto his tummy or eat solid foods. In case you are equally unfamiliar with ALGOL, it's a seminal early programming language, but this isn't the most influential version. That was arguably the classic ALGOL-60, which [9]The Register looked at way back in 2020 .
[10]Verity Stob's Edsger Dijkstra tribute
[11]The case for handcrafted software in a mass-produced world
[12]The wild world of non-C operating systems
[13]Drowning in code: The ever-growing problem of ever-growing codebases
Unless you're a specialist in this stuff, almost every programming language you've ever heard of owes something of its design to ALGOL-60. ALGOL is the language that introduced the idea of structuring program code in marked blocks, which it delimited with the words begin and end . This had made it more influential than its contemporaries, Fortran, Lisp and COBOL; as a result, more or less all other imperative programming languages since can be described as [14]Algol-like languages . This includes BASIC, C, and pretty much every other [15]curly-bracket language . It covers the range from [16]B to [17]Zonnon .
ALGOL-60 was extremely limited, though, and as a result there were several rival proposals to modernize the language. One was by a young Swiss computer scientist, the [18]late Niklaus "Bucky" Wirth . His proposal was rejected, so instead, he developed it into his own language, Pascal, which in turn he refined into Modula, Modula-2, and finally [19]Oberon . Instead, the ALGOL committee went with a more elaborate proposal led by [20]Adrian van Wijngaarden , which became ALGOL-68… and which pretty much killed everyone's interest in ALGOL. The result, though, was a flowering of different languages throughout the following decade or two.
That is the form of ALGOL that may soon be coming to GCC. We suspect that it won't lead to a great deal of new development in ALGOL, but even if it remains a little-used optional extra, it has great educational and historical interest. ®
Get our [21]Tech Resources
[1] https://lwn.net/ml/all/20250101020952.18404-1-jose.marchesi@oracle.com/
[2] https://jemarch.net
[3] https://gcc.gnu.org/wiki/History
[4] https://www.theregister.com/2022/12/16/gcc_13_will_support_modula2/
[5] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=2&c=2Z30JVdJudNbAEDmQc2ybewAAAAA&t=ct%3Dns%26unitnum%3D2%26raptor%3Dcondor%26pos%3Dtop%26test%3D0
[6] https://jmvdveer.home.xs4all.nl/en.algol-68-genie.html
[7] https://jmvdveer.home.xs4all.nl/en.marcel-van-der-veer.html
[8] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44Z30JVdJudNbAEDmQc2ybewAAAAA&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0
[9] https://www.theregister.com/2020/05/15/algol_60_at_60/
[10] https://www.theregister.com/2002/08/12/verity_stobs_edsger_dijkstra_tribute/
[11] https://www.theregister.com/2024/09/18/the_future_of_software_part_2/
[12] https://www.theregister.com/2022/03/29/non_c_operating_systems/
[13] https://www.theregister.com/2024/02/12/drowning_in_code/
[14] https://web.archive.org/web/20111114122103/http://www.eecs.qmul.ac.uk/~ohearn/Algol/intro.html
[15] https://en.wiktionary.org/wiki/curly-bracket_language
[16] https://www.bell-labs.com/usr/dmr/www/bintro.html
[17] https://zonnon.org/
[18] https://www.theregister.com/2024/01/04/niklaus_wirth_obituary/
[19] http://www.projectoberon.net/
[20] https://www.computer.org/profiles/adriann-vanwijngaarden
[21] https://whitepapers.theregister.com/
Lead to a bunch of stuff at what was RSRE Malvern
They were big on verifiability. I think it was called Ten15. Or 10:15.
Algol 68 was so damm complex it used what looks like 2 level BNF, which I think was too much for anyone but hard-core theoretical language specialists.
Keep in mind this was all before Unix put C*, YACC and LEX in the hands of developers, and hence made nearly any language you could devise implementable.
I think it also (like PL/1) didn't flag type mismatches and tried to do something "Sensible" when they happened.
What can possible go wrong with such a plan? Ask any PL/1 devs out there. IBM's vast effort to make it the next COBOL/FORTRAN did work in some places. :-(.
*C "Portable Compiler" was designed to be re-hosted. Had it come out a bit earlier, when people were still implementing custom processors using the 74181 at 10x or more the clock of 1st gen microprocessors. Instead of developers knocking up a custom assembler they could have enjoyed a full OS and dev toolset. Chip makers could have rolled out next gen versions bumping the custom architectures to 100+MHz. Instead people switched to microprocessors and coat tailed their speed improvements.
Re: Lead to a bunch of stuff at what was RSRE Malvern
"Algol 68 was so damm complex it used what looks like 2 level BNF, which I think was too much for anyone but hard-core theoretical language specialists."
As noted elsewhere one language specialist was not entirely impressed -
Niklaus Wirth in 1968 speaking of the idea of algol68 being a "universal" language (probably meaning exhaustively multipurpose):
... "invariably lead towards a monster language, a species of which there already exists a sample hardly worth nor possible to compete with.”
I imagine he was thinking of IBM's PL/1 but could prophetically apply to C++ and few others I suspect.
Wirth was on the algol X working group ~1966?
The Bourne shell and successors preserve a trace of algol68 in the if..fi, case...esac constructs but not do...od as od was (is) a program to display binary files in octal, hex etc.
This vulture was 16 years, 8 months, and 15 days old On December 20, 1968, and was getting all excited about the Apollo 8 mission, and his new Country Joe and the Fish album.
Adriaan van Wijngaarden. Not Adrian.
interestingly, the linked bio misspells it as Adriann in the header and spells it correctly in the body.
Crikey that brings back memories
Algol-68 was my first introduction to the world of computing, back in 1976 as a first year maths student at Manchester. We had to do one "foreign" topic to keep us broad minded - French, German, Philosophy or Computer Science. As the computer building was right next door to the Maths Tower (now demolished) most of us opted for this the most convenient choice. We made up packs of punch cards that would be processed overnight, returned with a print-out which invariably said "syntax error line 1" or suchlike.
Never touched a computer again after that one year (not that we were let anywhere near the actual mainframe) until I started work 3 years later.