Algol 68 Revitalised and Now In GCC
Written by Mike James   
Wednesday, 29 January 2025

The latest addition to the GNU Compiler Collection is Algol 68 and you can be forgiven for thinking it sounds like a blast from the past. However, you need to remember that ALGOL, standing for ALGOrihtmic Programming Language is the progenitor of almost all the languages in common use today and may still have more to teach us.

The GCC, (GNU Compiler Collection) is the "standard" compiler set for Linux. It is standard in the sense that Linux itself is compiled using it. Originating with just C in 1987, which its name was GNU C Compiler, it added C++ in the same year to be joined subsequently by Objective-C, Fortran, Ada and Go.  We reported on D being added in 2017 and, more recently, Rust in 2022. You might expect that only new languages would be admitted to this exclusive club, so the news that Algol 68 has joined comes as a surprise.

In his announcement of the availability of the Algol 68 GCE Front End, Jose Marchesi wrote:

This WIP is a GCC front-end for Algol 68, the fascinating, generally poorly understood and often vilified programming language. It is common knowledge that Algol 68 was well ahead of its time back when it was introduced, and anyone who knows the language well will suspect this probably still holds true today, but more than fifty years after the publication of the Revised Report the world may finally be ready for it, or perhaps not, we shall see ;)

At the very least having support in GCC will make it easier for Algol 68 enthusiasts to write, share and use their programs in modern systems.

Marchesi credits Algol 68 Genie, an open-source modern implementation of ALGOL68 authored and maintained by Marcel van der Veer for the parser for the new front-end.

Why expend so much effort on a language that dates back to the 1950s? The simple answer is almost every programming language in use today owes something of its design to ALGOL, standing for ALGOrithmic Programming Language.

Although the first definition of the language, Algol 58, was a breakthrough and a tour de force of computer science, it was never implemented - it was too difficult. It took an international committee to move to a practical implementation.

algol

 Pioneers in the development of the ALGOL programming language. (clockwise from top left) Heinz Rutishauser, Peter Naur, Friedrich L. Bauer, Adriaan van Wijngaarden.

The stated aim of this committee was to create a language that met the following objectives:

  • It should be close as possible to mathematical notation and be readable without too much additional explanation

  • It should be possible to use it for the description of computing processes in publications

  • It should be mechanically translatable into machine programs

What is hidden by these simple objectives is the fact that ALGOL was, and is, an academic's language. The committee made no serious attempt to make the language simple or easy to understand. Algol 60, the first implementation to be used, was extremely limited and as a result there were several rival proposals to modernize the language. One came from Niklaus Wirth. When his proposal was rejected he developed it into his own language, Pascal, which he later refined into Modula. Instead, the ALGOL committee went with a more elaborate proposal led by Adriaan van Wijngaarden, which became Algol 68.

While Algol 68 found some popularity in specific areas, particularly in the United Kingdom on ICL machines and in teaching environments, its adoption was relatively limited. As well as the language's definition being incredibly complex, making it difficult to implement compilers, its documentation was notoriously difficult to understand and it suffered from a lack of marketing and support and soon fell out of use.

ALGOL did however have an enduring impact on the development of later languages. It was block-structured and stack-based features that were passed on to C, C++, C#, Java, JavaScript and so on.  It introduced many of the ideas we take for granted today - such as the distinction between assignment := and equality =, the use of the three-part for loop for index:=start increment limit and nested procedures with local scope definitions.

The Algol 68 Genie project preserves Algol 68 out of educational as well as scientific-historical interest, by making available a recent implementation written from scratch, together with extensive documentation for both the language and this new implementation.Algol68Genie

More Information

Announcment

Algol 68 Genie

ALGOL 68 - A Retrospective

Related Articles

History of Computer Languages - the classical decade, 1950s

Computer Languages by Committee - the 1960s 

Niklaus Wirth Inventor Of Pascal Dies At Age 89

To be informed about new articles on I Programmer, sign up for our weekly newsletter, subscribe to the RSS feed and follow us on Twitter, Facebook or Linkedin.

 

Banner


Sqlime - Αn Online SQLite Playground
28/01/2025

SQLite lives in the browser thanks to WebAssembly. With Sqlime you can run your workload online with no need of setting up anything. On top of that ask questions on your data with AI enabled CLI  [ ... ]



Join The Web Component JavaScript Frameworks Party
27/01/2025

A place where you can compare common task syntax between top web component JavaScript frameworks. Why is that useful?


More News

espbook

 

Comments




or email your comment to: comments@i-programmer.info

Last Updated ( Wednesday, 29 January 2025 )