Thursday, October 13, 2011

Dennis M. Ritchie, 1941-2011

Everyone knows Steve Jobs died, because everyone knows who Steve Jobs was. Steve Jobs made sure everyone knew who Steve Jobs was, by being the public visionary of Apple, then Pixar, then NeXT (you're easily forgiven for not recognizing that one), which Apple bought as the foundation for Mac OS X, making him the public visionary of Apple again. Everyone knew him because he personally masterminded and introduced dozens of things that changed our everyday life.

If you're a non-Microsoft computer geek, though, you probably owe your career to Dennis Ritchie, who died on October 9th. With Brian Kernighan, he created the C programming language, which was mostly invented so that Ritchie and Ken Thompson could write the Unix operating system. Steve Jobs' NeXT was based on Unix1, and Linux was a complete re-implementation of the Unix design.


(Those cabinets behind Ritchie and Thompson is the computer, and there's paper in that computer terminal.)


It's hard to overestimate Ritchie's impact. My entire career has been programming software in Unix-like environments, and that looks like it will be true for a long time. Even DOS, the hoary undercarriage of Windows, was actually a half-assed braindead Unix rip-off. You may recognize
c:\\Documents\Your Mom\Friday Night.doc
but that started out as
/home/chris/writeups/your_mom/friday_night.txt
If you're an advanced DOS user, you may have done something like
list | more
where the output of list gets "piped" through the pager more so you can actually read it if it's more than one page. You wouldn't know it from DOS, but pipes were Unix's gift to the world, enabling people to write small, general-purpose tools and string them together to create extremely complex effects (also known as the Unix philosophy). This sort of thing is routine in Unix:
grep apple some_file.txt | sort | uniq -c
Which, in order, finds all lines in some_file.txt with the word "apple", sorts them, and simultaneously removes duplicates and counts the occurrences of each line.

The C programming language and its Frankenstein descendant C++ have been so popular that any new programming language needs to either have C-like syntax, or have a really compelling reason not to. Languages that kept C's lower-level syntax (like 'x=5' for "assign the value 5 to the variable x") include C++, Objective-C, Java, Microsoft's C#, Perl, Python, and Ruby.

I don't know when this was made, but they're already greybeards.




In his quieter, harder-to-understand way, Dennis Ritchie changed the world every bit as widely as Steve Jobs did. Well done.

1 Well, kind of. The history of "Unix" and its derivatives and copies is a tangled mess: here is a "simplified diagram" of the Unix timeline.

No comments:

Post a Comment