On Apr 29, 2016, at 4:12 PM, Noel Chiappa <jnc at
mercury.lcs.mit.edu> wrote:
Oh, another factor that led to success for C, I suspect: I/O is not in the
language, it's handled by optional subroutine libraries. This made it very
easy for compilers/etc to produce language for stand-alone systems. Compare
PL/I, which needed a large subroutine library to run on bare hardware.
Then again, the lack of standard I/O is often held as the reason that ALGOL 60 failed.
...
Algol 68 has both pointers and structures.
Yeah, but Algol-68 never did much (although it had a certain amount of
influence). Why, I'm not certain - I suspect the fact that it was fairly
complex had something to do with it, but I expect its biggest problem was
that a number of _very_ respectd people from its committee denounced it
roundly (whether their reasons were good or bad, I can't say).
Tony Hoare's Turing lecture, "The Emperor's Old Clothes", recounts a
lot of
that. (That's the source of the famous quote about "there are two ways of
constructing a software design: One way is to make it so simple that there
are obviously no deficiencies and the other way is to make it so complicated
that there are no obvious deficiencies." He was talking about Algol-68,
there.)
Algol-68 was a marvel of simplicity compared to PL/I, but yes, when you compare it with
ALGOL-60 or Pascal, it's certainly a beast. The language is probably not that big a
problem; it was after all implemented on a variety of machines, some rather small.
(PDP-11, for example, at least a large subset. And CDC built a commercial compiler for
it.) The notation in the standard was rather challenging. Not as bad as Vienna
Definition Language, but still, harder than BNF. A lot more powerful, too.
As for influence: Stroustrup refers to it as a source of inspiration for C++, which is
pretty clear when you look at C++ i/o stream operators.
I still remember the scorching I got from Dijkstra when I (innocently) mentioned Algol-68
to him. He wasn't anywhere near as polite as Hoare.
So does
Pascal.
Which didn't have a lot of the capabilities needed to be system language at
_that point in time_ (remember, this is about 'why did C succeed, back then');
it was, after all, originally designed as a pedagogical language.
Pedagogical language? I'm not sure. BASIC, yes. But Pascal I believe was a serious
language. I learned it in one week, and used it to build a code generator for a compiler
in a compiler construction class. We originally used PL/1 there (the Cornell
implementation) but had to stop because it was utterly unreliable, and switched to PDP-10
Pascal instead. Worked great.
paul