>>>> "Tom" == Tom Jennings
<tomj at wps.com> writes:
>> For that matter, Algol had local variables
long before C was
>> invented, and as you pointed out, there's an Algol for the PDP-8.
>> (Then again, that's not a true compiler -- it compiles to an
>> intermediate form that looks very much like a subset of the
>> Burroughs 5500 instruction set.)
> Using an IL was a way of making the complier easier I'd guess.
> Compiler deign has become more sophisticated since.
Tom> I dunno about that. I just read (and worked out on paper)
Tom> Randell's 1964 ALGOL IMPLEMENTATION book. Algol had(has) stuff
Tom> no (or few) language has today, like runtime evaluation of
Tom> stacked dynamic arguments.
You mean "call by name". Indeed. That's one of several Algol 60
features that were subsequently recognized as mistakes, and never
repeated. (Label assignment is another; I forgot the correct term.)
Tom> As far as sophistication goes -- a better measure than simply
Tom> how clever or nifty a thing is -- how far did it advance the
Tom> state of the art? Good Algol's in the early 1960's look like
Tom> stuff robbed from the far-flung future. A lot of the "compilers"
Tom> from that era we'd today call p-code interpreters (terminology
Tom> changes) but man, Algol60 is neat stuff. (Not the bloated
Tom> monster Algol68 (I think it was) became.
Then again, Algol 68 is the source of many C++ features -- iostreams
for example.
Let's see, Algol 60 brought us:
- Formal grammars (BNF)
- Block structure
- Local variables
- Scope of names
- Declarations
- Type safety
and indirectly
- structured programming
- parser generators
Tom> The Whetsone Algol compiler ran, in one pass, as fast as the
Tom> source-input reader hardware, in 7000 words of memory! Though
Tom> slow, it's a full-featured language, unlike C which is basically
Tom> a portable assembler (I loved writing in C).
I don't know how big the first Algol 60 compiler (at MC Amsterdam) was
-- probably similar, quite possibly smaller.
Tom> Algol had it's share of horrors, but man it is the basis for
Tom> nearly all modern languages. C's block and scope structure came
Tom> directly from Algol.
Lobotomized, of course -- C left out a bunch of important parts from
the Algol block structure.
Tom> Python's objects (the best done of any
Tom> language I've used, I hate to admit, since I find the python
Tom> culture utterly hideous) are directly analogous to the
Tom> Whetstone's scoping -- hell you could put OO structure into the
Tom> Whetstone compiler without ruining it!
Hm. Algol 60 certainly has no OO nature. Algol 68 does, the
beginnings of it.
paul