On Dec 29, 2010, at 3:35 PM, Michael Watterson wrote: >> yet we are (almost) all using C ... Why? I guess C >> must have done something right, but I am not sure what it is. > > Purely because C was language of Choice for UNIX, BSD, MSDOS, =20 > Windows, Linux. > > Popularity rather than anything. Your memory doesn't match my memory. "popularity" would have meant =20 that we'd all be programming in Fortran or Cobol. Unix wasn't =20 generally available. MSDOS C compilers lagged other languages by =20 several years. Early C compilers were pretty sucky. Borland's Pascal =20 was pretty good pre-dated their C compiler by quite a bit. What happened to Algol and PL/1 ? Both languages featuring "modern" =20 concepts and with large amounts of vendor support? Bliss? > Then C had all the Libraries ... C didn't have libraries to start with. Sometimes I think its success =20 was due to NOT having libraries. There were languages from those days =20 that had "all the libraries you'll ever need" built into the =20 language. OS specific, of course. And meaning that extensibility =20 beyond that was more difficult. And portability was poor. There was =20 a whole slew of mainframe and minicomputers that supported a bunch of =20 languages generally NOT including C (unless you were a university and =20 could get unix.) It can be very enlightening (and painful) to look at =20 code from the early 90s when massive amounts of conditional =20 compilation were needed if you wanted your app to run on windows, sun, =20 hp, and AT&T unix... Portability is probably why C won. Not just portability of the code =20 itself. Compilers used to be essentially sales tools for multi-=20 million dollar mainframes. The big vendors spent LOTS of effort =20 making highly optimized Fortran and Cobol compilers, plus Algol and =20 Basic for schools, plus proprietary (?) languages to fix everything =20 (PL/1) This "model" was not portable to the new world of "personal" =20 computers. IBMs compilers were barely portable to an environment that =20 supported interactivity... Many compilers weren't designed to be =20 portable to "small" or embedded computing environments. Look at the =20 number of currently "popular" languages that are not very suitable for =20 small environments! Ada is a fine example of a language definition aimed at the old model =20 of computer development/deployment, finished just in time for that =20 model to be pretty much broken. "Sure IBM and DEC will spend millions =20 implementing these compilers. They'll HAVE to!!" Right. Of course, we now have C# and Java; modern examples of major vendor-=20 implemented languages. I'd class C# as making the same environment-specific mistakes as the =20 early efforts > It was longer before other languages had production quality =20 > compilers. No. > Pascal and BASIC only meant originally for teaching Yeah; I think a lot of the blame can be based on the groups that =20 developed "teaching languages" without paying enough attention to what =20 it would take to make the language generally useful in the real world. > Of course AT&T attitude to ownership of UNIX and the University > involvement is directly responsible for Free BSD, GNU, Linux and the > rest of the last 30+ years of FOSS wheel re-inventing. FOSS definitely helped C a lot, even before it was called that. First =20 there was the portable C compiler, which lasted through the late =20 1980s. Then there was gcc. BillW --=20 http://www.piclist.com PIC/SX FAQ & list archive View/change your membership options at http://mailman.mit.edu/mailman/listinfo/piclist .