Criticisms of C should not be viewed as "casting aspersions". We
can't change the past but we can certainly assess the effect of
past decisions. [Not sure that would change anything though, but
we are just chitchatting!]
IMHO with C what we have is a tragedy of scale. A pleasant to use
language that worked/works well for a small group of highly competent
people with skills beyond programming doesn't work so well for
much larger groups of people with varying level of competency & skill.
Just as the informality and few implicit rules of a village doesn't
scale to large cities.
I believe Apollo's Domain/OS was implemented in Pascal. Tunis
that Greg Woods alluded to was implemented in Concurrent Euclid.
KeyKOS (a capability based system) was implemented in PL/I. Per
Brinch Hansen implemented a couple of OSes in Concurrent Pascal.
And so on. I think the original Mac OS was in Pascal?
Of course, most of these efforts came later or were on much larger
systems.
The beauty of Unix is in its relatively few but well defined
components & their composability. I wouldn't know if the design
of C had something to do with that or if it was just the pure
genius of Thompson, Ritchie and their cohorts at Bell Labs.
On Mar 8, 2025, at 7:46 PM, Dan Cross
<crossd(a)gmail.com> wrote:
As I mentioned in the discussion about C, it's easy to look back with
a modern perspective and cast aspersions on C. But this got me
thinking, what would possible alternatives have been? In the context
of the very late 1960s heading into the early 70s, and given the
constraints of the PDP-7 and early PDP-11s, what languages would one
consider for implementing a system like early Unix? Dennis's history
paper mentioned a very short-lived effort at Fortran, and I asked
about that a few years ago, but no one really remembered much about
it; I gather this was an experiment that lasted a few days or weeks
and was quickly abandoned. But what else?
My short list included PL/1, Algol/W, Fortran, and Pascal. Fortran was
already mentioned. I don't think PL/1 (or PL/I) could have fit on
those machines. Pascal was really targeted towards teaching and would
have required pretty extensive work to be usable. The big question
mark in my mind is Algol/W; how well known was it at the time? Was any
consideration for it made?
Obviously, the decision to go with BCPL (as the basis for B, which
beget C) was made and the rest is history. But I'm really curious
about how, in the research culture at the time, information about new
programming languages made its way through the community.
- Dan C.