Wednesday, October 19, 2011

R.I.P. Dennis Ritchie, "Hello Afterworld!"

Dennis Ritchie died last week. He is the father of, amongst many things, the C programming language, and the Unix operating system. Here is a link memorializing his memory. Here is another.

One of the first software development books I owned before entering engineering school at Washington University was Dennis Ritchie and Brian Kerningham's "The C Programming Language." What set C apart from other programming languages at the time was it's ability to compile programs to work on different processors, and different operating systems, with one code base. One would need to include header files for the various operating system platforms, but one could, and still can, compile a C/C++ program from source code to Mac OS X, Linux, Windows, AIX, Solaris, Amiga, and even AS400. That takes a level of indirection that understands assembly language, how it generally works across processor architectures, and yet finds similarities that could be abstracted into geek-readable code. Although one could create software through machine/assembly language instructions, and it would be highly efficient, it would take a long time to get anything accomplished. And forget the maintenance nightmares of walking onto a project developed in assembler by someone else; this wasn't done much. One can walk into a C or C++ codebase and get up-to-speed a lot quicker.

What was a hallmark of the "K&R" book (as it was affectionately known) was its terseness. In a software publishing industry where thickness and 'heft' are signs of worth (at least worth forking over ~$50 for a book with a limited shelf life), The C Programming Language gave a few, elegant examples of what the language was about.

C (and its Object-Oriented cousin, C++, developed by Bjarne Stroustrup) also set the standard for speed, since it compiled directly to assembly language, and its compilers became more and more optimized for fast assembler. Subsequent programming languages, which used interpreters (such as Visual Basic or Java) to create intermediate code, which would then be interpreted by a compiler for the platform, always had a perception of being slower than C and C++. One could 'hope' to become 'as fast' as C, but not faster.

The father of Java, James Gosling, chose for its syntax something like C to make Java attractive for C programmers to switch to. Java tried to one-up C with respect to universal code, in that one could compile a Java archive (Jar) library, and drop it onto the filesystem of a Linux/Unix/Windows machine and it would work without having to re-compile.

The father of Ruby, Yukihiro Matsumoto (a.k.a. 'Mats'), created its interpreter in C, as do most dynamic language authors (like Perl's Larry Wall or Python's Guido van Rossum). As with a lot of things in technology, we all stand on the shoulders of giants.

Perhaps more influential for the computer industry, was Dennis' contribution, along with Ken Thompson, of the Unix operating system. Built as a multiuser operating system from small programs that did limited things well, which would all run at the same time (multitask). If you don't use Windows, you're likely running a derivative of the Unix operating system (including Mac OS X, which was a derivative of Steve Jobs' NextStep, derived from Berkeley Unix 4.3), Linux, or Andrioid (a Linux derivative), or iOS (another Linux derivative). It was Ritchie's C language which allowed Unix to be ported to many platforms.

So rest in peace, Dennis.

No comments:

Post a Comment