On Thu, May 21, 2020 at 12:10:35PM -0400, Toby Thain wrote:
On 2020-05-21 11:27 AM, Tyler Adams wrote:
Does anybody have any good resources on the
history of the popularity of
C? I'm looking for data to resolve a claim that C is so prolific and
influential because it's so easy to write a C compiler.
Tyler
Based on recollections of C from mid-1980s until today, this claim
doesn't make sense for several reasons. Sorry, this is all anecdata or
recollection, not cited data:
- inexpensive compiler availability was not very good until ~1990 or
later, but C had been taking off like wildfire for 10 years before that
- developing good compilers is certainly not "easy" - and there were a
lot of mediocre vendor compilers despite (duplicated) investment
- by the time gcc was mature (by some definition, but probably before
1990) - something that happened largely as a reaction to the vendor
compiler situation - it was a large and complicated codebase even by
standards of the time
- hobby/novelty/small/educational compilers are a relatively new thing
and arrived long after the C adoption curve was complete. The earliest
well known example I can think of is lcc (1994) but most are much newer.
...and probably quite a few other points.
This matches my memory as well. I think I learned C in 1983 or 84,
it just worked. To me it felt like it was PDP-11 assembler only nicer.
The thing I liked about C is that you always felt like you were right
on the metal, it didn't hide the fact that there was a computer under
it. Very different feel from, say, Pascal. I think the fact that you
could feel the machine under the language had a lot to do with it taking
off.
And what Toby said about compilers, oh, man, so true. Once you got out
in the real world, gcc was buggy and slow, companies wanted to charge
you at every step of the way for compilers that were marginally better
than gcc at best. When gcc finally got good enough, I agree, around
1990 or so, it was a relief. You just used it and ignored the platform
specific ones. G++ took a long time to be good enough.