On 16/02/2025 14:56, Paul Koning via cctalk wrote:
On Feb 16, 2025, at 9:46 AM, Frank Leonhardt via cctalk<cctalk@classiccmp.org>  
wrote:

I had the impression from talking to people (quite possibly Tony Hoare, but I 
don't want to put words in his mouth) that Algol was not, initially, a 
programming language - it was a structured English to express algorithms. As 
such it was natural for academics to try and make their computers understand 
it, whether it was practical or not.
My father (a metrologist and professor of mechanical engineering) would read 
ALGOL programs written  by others, based on their resemblance to English.  And 
yes, it was for years the choice for expressing algorithms in journals such as 
CACM.  The fashion of rendering keywords as bold text fits that usage very well.

On the other hand, it's clear that, at least starting with ALGOL 60, we're 
dealing with a programming language meant to be run on actual computers, and if 
there was any doubt about that the work of Dijkstra et al. should settle the 
question.

This is relying on my memory of conversations that took place decades ago, and 
the opinion of whoever I was as taking to. But it does fit the evidence. 
Firstly there were multiple dialects of Algol - just like things like UML. It 
didn't crystallise until Algol 60 (and then only loosely). Secondly, at the 
time it first showed up there wasn't a computer available with the power to run 
it. As people have pointed out, there were instances of people implementing 
subsets on machines with a drum store. Pioneering stuff indeed.

Without evidence otherwise, I believe all of these student Algol 
implementations to be interesting research rather than practical high level 
languages. I'd be happy to hear of any evidence otherwise - in other words 
third-parties using them from real-world application programming.

As to the Librascope Algol 30 written it Dartmouth, I'm sure it was wasn't a full 
implementation. It probably did include BEGIN/END (I'd love to see some examples) but 
there was a lot of stuff that was very tricky to implement and most "tiny 
Algol" implementations missed most of it off.
If a language doesn't have blocks (whether with begin/end keywords or something 
equivalent, as ALGOL 68 allows) it can't reasonably be called ALGOL or even a 
subset.

Incidentally, I'm very sure that Algol 58 was the first language to implement 
the BEGIN...END structure. The DO element was also new, but dropped (and the 
keyword repurposed) in Algol 60. Otherwise 58 was a subset of 60.
Well, "ALGOL 58" is not a thing.  The document describing the 1958 language called it 
"International Algebraic Language".  I only glanced at it -- the first time I saw an 
actual description is when I read the 1958 report in an appendix of Gauthier's thesis -- but my 
memory is that it can't be thought of as a subset of Algol 60 but rather a dead end relative that 
went off in a wrong direction that the 1960 report abandoned.

Certainly, it's the BEGIN/END (or compound statements) that Algol introduced which matter. Algol 58 had it.

As to 58 not being a thing - as I said it didn't crystallise until Algol 60 but I'd still argue it was a thing...

The origin of IAL later Algol later Algol 58 was described in the Perlis and Samuelson report published by the ACM at the time (Association for Computer Machinery). I'll spare you the details (I have a copy on paper in front of me reproduced in Jean Sammet's "Programming languages: History and Fundamentals - "Preliminary Report - International Algebraic Language" from Vol 1 Issue 12). I'd love to see the "1958 report in an appendix of Gauthier's thesis", but I'm sure I don't have it.

 Apart from the history, part 1 it ends:

1. The new language should be as close as possible to standard mathematical notation and be readable with little further explanation. [We've heard that one since!]

2. It should be possible to use it for the description of computing processing in publications.

3. The new language should be mechanically translatable into machine programs.

It's heavily implied that the ACM/GAMM committee intended it to be a standard but they don't quite say so.

Algol 60 enhanced the 58 specification, but mostly by adding input/output and practical stuff. As I said, as far as I can make out from the 58 report, Algol 60 simply dropped DO statements, and blank parameter positions. Unfortunately the preliminary report published by the ACM was never followed up by another as far as I know (as mentioned above the appendix to Gauthier's thesis, of which I'm unfamiliar, would be of great interest!!!)

It's worth noting that the Algol 58 specification was the basis for other languages like JOVIAL, CLIP, NELIAC and MAD.

But one really interesting first about Algol (apart from it being the first inter-organisational attempt at standardising a language) is that it explicitly broke it into a reference language, a publication language and hardware representation. I believe the reference language was the most significant, as it could be used to publish algorithms in a standard form before hardware and compilers were developed to run them directly. It was the only language permissible for the publication of algorithms in the ACM Bulletin through most of the 1960s. I believe that stuff published in the Algol Bulletin was translated into Fortran in order to test it!

Reply via email to