The ghost of Algol 68

masak on 2010-03-08T22:01:20

Ever wonder why bash closes if blocks with fi? This practice was inctroduced in Algol 68, a language that Perl 6 was accused of reinventing yesterday on the perl6-language list.

Curious, I went to the Wikipedia article to read up on Algol 68.

ALGOL 68 (short for ALGOrithmic Language 1968) is an imperative computer programming language that was conceived as a successor to the ALGOL 60 programming language, designed with the goal of a much wider scope of application and more rigorously defined syntax and semantics.

"Successor." "Wider scope of application". "More rigorously defined syntax and semantics". Sound familiar?

ALGOL 68 has been criticized [...] for abandoning the simplicity of ALGOL 60 becoming a vehicle for complex or overly general ideas, and doing little to make the compiler writer's task easy [...]

Oh dear. ☺ We even have the 'do little to make the compiler writer's task easy' meme in Perl 6...

<TimToady> after all, Perl Philosphy is simply to torment the implementors on behalf of the user (#perl6, 2008-10-09)
<pmichaud> aha! I have a quote for my keynote.

Besides that, there's all these other little parallels, such as

  • Algol 68 seemingly playing with words (they borrowed the term 'gomma' from Finnegan's Wake, but the feature it denoted got scrapped in a 1973 revision),
  • something junction-like called 'multiple value',
  • a whole heap of values for different forms of nothing and undefinedness,
  • a newly-invented grammar formalism, and
  • a general feeling of deep ambitiousness and a desire to get things right.

So, there are deep similarities between Algol 68 and Perl 6. There's not much to say to that, except perhaps "huh".

If there's anything in it all that's uplifting though, it's the second paragraph of the article:

Contributions of ALGOL 68 to the field of computer science are deep and wide ranging, although some of them were not publicly identified until they were passed, in one form or another, to one of many subsequently developed programming languages.

If that's not spot on for Perl 6, I think it will be in a decade or so.


The Audacity of Change

chromatic on 2010-03-08T23:50:18

Many of those criticisms could apply to many revisions of many languages. (I can think of one popular exception.)

Re:The Audacity of Change

Aristotle on 2010-03-09T06:32:15

Was that jab really necessary now, chromatic? :-)

Re:The Audacity of Change

chromatic on 2010-03-09T17:36:55

Naming the particular language I had in mind would make it unnecessary! As it is, everyone has to guess. (It's not Python 3.)

... not happy ...

thickas on 2010-03-09T05:47:37

an accusation of being Algol 68 is almost as perjorative as being PL-1 like or Ada like.

It is not in any way complimentary.

Alogol 68 is not in any way remembered fondly by people wishing to write code partly because even if you like the ideas there were so few implementations that it was higly unlikely they would run.

Re: ... not happy ...

masak on 2010-03-09T08:01:28

an accusation of being Algol 68 is almost as perjorative as being PL-1 like or Ada like.

It is not in any way complimentary.

Thanks for letting me know.

I didn't write the post because I thought Algol 68 was an admirable or ideal language. I wrote it because some of the sentences in the Wikipedia article felt like they could have been pulled from a Wikipedia article about Perl 6. There wasn't really any other value judgement involved. I have next to zero knowledge about the legacy of Algol 68.

Perl '67

Dominus on 2010-03-09T16:10:15

I had a similar experience about fifteen years ago. I was reading a description of a late-sixties-era programming language and thought "wow, this sounds just like Perl".

Here is the description:

PERL (Practical Extraction and Report Language) is a programming language developed with the intention of combining features of commercial languages (such as COBOL) and scientific languages (such as ALGOL). Commercial applications with their emphasis on efficient handling of large volumes of data have led to the development of languages with sophisticated input/output facilities; scientific problems with their emphasis on rapid definitions and description of complex problems have led to the development of highly sophisticated algorithmic languages while neglecting the data handling aspects. PERL aims at combining the problem-solving facility of scientific languages with the data-handling capabilities of commercial languages, in order to meet the needs of increasingly mathematical commercial analysis and increasingly large volumes of data being processed by scientific routines. Among the more important features of PERL are the following:

  1. The language is modular in structure. This means that the user need only master the set of facilities necessary for his programming needs. More complex problems can use more extensive subsets of the language.
  2. The language has a `default' feature by which every error or unspecified option is given a valid interpretation, thus minimizing the effects of programming errors.
  3. The language structure is `free form'. No special documents are needed for coding, since the significance of each statement depends on its own format and not on its position within a fixed framework.

An example of PERL is given below; it is a routine designed to read the maximum and minimum temperature for each day of the week.

The language being described was actually PL/I.

On Go

rafael on 2010-03-11T18:42:28

About language comparisons, I strongly recommend reading

http://www.cowlark.com/2009-11-15-go/

Re:On Go

masak on 2010-03-20T18:53:05

Heh. I was already reading that when you wrote the comment. :)

The author says a lot of the things in the concluding sections than I did in my post. I recommend the whole text to anyone interested.

Right now I'm reading Tanenbaum's introduction to Algol 68. It's also pretty good.

Re:On Go

Aristotle on 2010-03-21T12:27:36

I had a discussion about that article with a knowledgeable friend who was not at all impressed… though unfortunately I don’t remember much of what he said.

Not surprising /bin/sh looks like Algol-68

merlyn on 2010-03-17T02:48:08

Steve Bourne (Bourne Shell) was one of the authors of Algol 68. You should see the source code! It's all ALGOLIZED!