On Feb 16,
2025, at 9:46 AM, Frank Leonhardt via cctalk<cctalk(a)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!