I’m back to working on mod_atom and kind of gloomy because it’s C programming; so much more effort to do a unit of work compared, for example, to Ruby. In this context, Terry Jones’ Embracing Encapsulation got my attention and made me feel vaguely dinosaurian. While he may be on to something important, there are some consolations for us grizzled pointer-wranglers. For example, the list of things implemented in largely or wholly in C: Unix, Linux, Solaris, Windows, Java, .NET, Flash, Mozilla, Microsoft Office, the Apache server, the X window system, Perl, Python, and Ruby. Not bad, really not bad at all.
Comment feed for ongoing:
From: Sam Penrose (Jun 18 2008, at 14:05)
Approximate ages in years of (Unix, Linux, Solaris, Windows, Java, .NET, Flash, Mozilla, Microsoft Office, the Apache server, the X window system, Perl, Python, and Ruby): (35, 17, 25, 22, 17, 10, 13, 14 (counting from NCSA), 25, 13, 23, 21, 17, 13).
Projects in this list whose choice of C did not follow directly from the fact that Unix was written in C and Unix systems programming is therefore most easily done in C: (Windows, .Net, Flash, Office, Ruby). And .Net and Office follow from Windows, no? And Java and Ruby depend heavily on OS integration, no? So you're left with:
Unix and C grew up together.
Microsoft adopted C for systems programming.
Flash is written in C. And according to Wikipedia, that might trace back to needing a common Mac/Windows implementation:
http://en.wikipedia.org/wiki/Adobe_Flash
http://en.wikipedia.org/wiki/FutureWave_Software
Don't get me wrong; it's an amazing legacy.
[link]
From: Paul Kent (Jun 18 2008, at 17:46)
how about Teradata, DB2, Oracle, MySQL, Postgres, MSSQL who between them store a good portion of the the worlds structured content.
Plus perhaps SAS too. Interestingly, we side with Microsoft there - we adopted it for systems programming for the 3rd rewrite of our system - the one where we set out to support Mainframes (MVS/CMS), Minis (Dec/Prime/DG/Unix) and Micros(DOS, Windows) all from the same code base.
Thank You K+R
[link]
From: Hub (Jun 18 2008, at 19:51)
Looks like you are confusing C and C++. Mozilla is in C++. Java VM is C++. Other proprietary software you name are known to be written in C++. There is a huge difference in term of productivity and getting the job done compared to C.
[link]
From: Norbert (Jun 18 2008, at 21:26)
What exactly do you mean by "Java"? The JVM and the low-level parts of the libraries that talk directly to the operating system are written in C and C++. But even within Java SE most of the libraries are implemented in Java, and Java EE is almost all Java.
[link]
From: Sylvain Hellegouarch (Jun 19 2008, at 00:50)
Tim, I actually wonder why you picked C in the first place? Was there a particular rational?
[link]
From: JulesLt (Jun 19 2008, at 03:22)
Not forgetting Terry Riley. 'In C' being of a similar vintage.
[link]
From: Bob DuCharme (Jun 19 2008, at 06:09)
Jeez, am I the only one who got the pun of the title? emusic subscribers, check out http://www.emusic.com/search.html?mode=s&QT=in+c&x=0&y=0. After listening to a few of these, while wandering past a TV with the default waiting-for-you-to-pick-a-game audio playing on our kids' Wii, I realized just how vast the influence of this piece of music that Terry Riley wrote 44 years ago has been. A PDF of the score is available at http://www.otherminds.org/shtml/Scores.shtml, and it's fascinating.
[link]
From: Pierre Phaneuf (Jun 19 2008, at 20:18)
I feel very lucky with the timing of my birth with regard to the computer industry. I started off on dinky 8-bit micros, where you'd get a mouse, and not only did it come with it's own controller card, but there was an appendix in the manual containing assembly code "functions" to use it in your code. Lots of programming involved with getting anything done, although not as bad as it probably was only a few years before (no flipping switches and paper tape for me!).
And as I grew up, home computers went 16-bit, then 32-bit, got network interfaces (but no Internet, just LANs), then the Internet hit its stride, and here we are.
So I got to see a very wide range, and in a given day, I'll go from using web applications, doing some high-level scripting in Python or Perl, down to socket programming in C++, and occasionally getting all the way down to reading assembly output from my compiler. I know how it works (or, at least, can figure it out), from just about all the way to the top, to nearly all the way to the bottom. All from being there at the right time!
I also agree with Hub there, if you have to be doing system programming, there's quite a jump in productivity to be gained going from C to C++. As I (and surely others) blogged about today, some are even thinking of playing around with switching GCC over to C++! I didn't expect that one, I have to admit. ;-)
[link]