I remember the Pascal vs. C wars.
Programming language wars only became possible with the popularity of PCs because that's when people with too much time on their hands were able to get a good look at their options.
PCs used to ship with an assemble, linker, debugger, edlin (I refuse to call that thing an editor. Edlin was deeper than even vi) and, of course, the BASIC interpreter that was Bill Gates' entry to fortune. The computer magazines of the day would publish source code for programs and utilities that you'd have to type in yourself and they were all in BASIC.
Until Turbo Pascal. When TP 1 came out, people were trying to sell compilers for, oh, about the price they're selling for now. TP1 shipped on a single floppy disk for less than a c-note. Magazines, notably PC Magazine which published great hordes of code and utilities, shifted to publishing Pascal code. And all was right in the world…except other compiler vendors (yes, there used to be other compiler vendors) hated the idea of compatibility with a competitor as a selling point. Microsoft Pascal was a perfect example. Microsoft released an object oriented version of Pascal which was TP compatible, but they pushed the OOP extensions as the marketing point. A couple of months later Borland released TP5.5, which had the OOP extensions. Borland crushed MP 1.0.
This was only a concern because there was no dominant language at the time.
C became dominant, not because of any superior capabilities (C is really simple, it's the way it's used that sucks) but because the competition could advertise compatibility with an ANSI standard and thereby not automatically yield the leadership position. That and the fact that so many tools were released to overcome the lack of strong typing (you haven't heard of lint in ages because it's been subsumed in every IDE made…it's a requirement) that a strong buzz was created. It seemed like everyone was using C so all the noobs headed straight for it. But let's not pretend Pascal the language has superior capabilities either. It's all a matter of what you do with them, and how.
C should not be used for applications because it's a system level language. Pascal is as well, but its strong typing forces you to explicitly command the compiler to do stupid thing, as opposed to C compilers which make it a point of pride to give you as little support as possible.
What brought this on?
Today I ran across an article titled Why C Sucks that I agree with totally. Then I ran into Why C Is Not My Favourite Programming Language at Kuro5hin (which someone needs to tell me how to pronounce), and in the comments to THAT post is a link to a pdf titled Software Fault Prevention by Language Choice: Why C is Not my Favorite Language. And the Kuro5hin post has, as of this writing, 457 comments (349 topical, 108 editorial, 0 hidden).
The C vs Pascal Wars will be going on longer than the cold war, it seems.
C is the language of choice for *nix systems, where people recompile their kernels twice before breakfast, but I agree that it isn't immediately clear why it managed the jump to closed systems like the PC and Mac.
As I said, it was not for reasons of superior capabilities. In fact, Pascal was the original Mac system language. And C, in the form of C++, has (optionally) taken on all the aspects of Pascal (strong typing and the order parameters are passed onto the stack) the original C bigots looked down on.
Posted by P6 at February 11, 2004 06:58 AM