On 2011 Oct 17, at 10:53 AM, Chuck Guzis wrote:
Would it be a fair statement to say that had it not
been for Unix and
AT&T's (initial) "anyone can get a license as we're not in the
software business" approach that "C" today would largely be a
language relegated to the programming backwater?
And that "we're not in the software business" aspect was stipulated
by law. So regulation is largely responsible for the popularity of
Unix and C?
In other words, had Unix been a closed proprietary OS, would we even
be talking about C? Or would it be sort of a vintage curiosity like
BCPL or B?
At the time (late-60s/70s), there was an interest in having a language
"just above assembler" for things like OS-development - something that
would provide for symbols, expressions, and standard control flow (i.e.
be readable), be independant of machine instructions (even if not an
abstraction completely independant of the hardware), but still be
directly translateable to machine code and leave the programmer with a
sense of what would happen on the hardware.
I would suggest that if not C, another C-like, CPL/BCPL/B descendant
would have been developed to fill that interest. (I've mentioned it
here before, I worked with such a language ("Z") in the late-70s era. Z
was also a descendant of BCPL/B (hence a sibling of C), with byte
addressing added and some other improvements.)
For those not fond of C, one might say things went awry when C was
picked up and became commonplace for 'higher-level' general-purpose
programming in the 80s.
But what were the choices at the time?: assembler (tedious, not
portable), BASIC (gross), Algol (that might be a candidate), PL/I (big,
limited availability), Pascal (limited, IMO), Ada (I remember looking
forward to Ada in the time it was being developed, but it too was big
and took on committee problems, and was perhaps too late to become a
major presence). In a time of limited memory and speed, C was flexible
and targetable to the microprocs of the 80's.
In the 90s, "improved C" languages became available (splitting into two
tracks - compiled/interpreted). Not all of them were an improvement
however, or they were so improved (e.g. C++) that people just stuck
with C for many purposes.
The whole history is also a comment on independant, grass-roots
development and evolution versus standards-committee bloat and mandate.
I also wonder how much of the popularity of C and associated languages
is just "{}" vs. "begin/end". I personally can't stand begin-end
languages just because all those begin-ends present so much visual
clutter in the program text (although I do have a fondness for Algol).