Dennis Ritchie, co-inventor of the Unix operating system, and the C programming language, among many other achievements, passed away last week at the age of 70.
There is no shortage of recognition of his accomplishments on the web, just google his name.
This post is just a personal note to recall the effect on first learning of the programming language C. It was during one of those transitional times in the computer industry. I like to think of five major eras, at least in the timespan of my career in software and systems development. They overlapped, and vestiges of each remain today, the eras are defined, to me, by where the primary energy of the industry emanated from.
The first was the Mainframe era. Back when there were seven major vendors, quite a different time. Huge powerful beasts were mainframes. This was followed by the mini-computer era, which also featured many strong contending vendors, and completely gone now. Next was the PC, which is recent enough for many to recall the initial plethora of vendors. The PC gave way to the Web era, which is still with us, but, perhaps being usurped by the emerging Mobile era. The internet aspect of the Web era will remain forever I suspect, but the Website as the primarly tool for communicating and working will be overtaken shortly by the Mobile technologies.
I don’t personally assign an era to Unix. Unix (workstation based initially) spanned the mini-computer and PC eras, having it’s gestation in the mini-computer era and developing the “personal” use features of the PC era, is robust today and may be considered more of a fundamental resource, like the Internet.
The general trend is that each succeeding era provided more power for less money and inspired related technologies that made computer based systems more approachable by more people.
At the time I first heard of C, things were transitioning from the Mainframe era to the mini-computer era. I spent about half my time developing on an IBM mainframe in FORTRAN and COBOL, or on a Digital Equipment PDP/11 in various dialects of BASIC. Serious system were still locked into Fortran and Cobol however. Basic had a heavy footprint on the limited resources of a mini-computer and was not structured to support large developments reliably.
When my boss at the time, handed me a copy of the, now classic, The C Programming Language, by Brian Kernighan, and Dennis Ritchie, I remembering thinking “Oh great, just what we need, another programming language” (as there were plenty of others out there from PL/1 to Pascal).
But when I opened it and read the first few pages, it was a revelation. Not only was the language of the book so simple and eloquent, the C language itself was. Clear illustrations of a few essential concepts, and how to achieve them in C (such as loops, conditionals, and arrays) made C a language any semi-orderly mind could grasp. Quickly. It made Fortran, to some extent, and Cobol even more, seem so ponderous and in some cases limited.
With the few simple, essential (but no more) constructs that C provided, one could accomplish tasks that Fortran never envisioned, in one-tenth the volume of Cobol. On a certain level Fortran was intended for doing large/complex calculations on relatively smaller amounts of data. Cobol was intended for simpler calculations or data manipulations on relatively larger amounts of data. C could tackle either with equal facility in an elegantly terse but readable syntax.
So, thank-you Dennis Ritchie. For developer’s such as myself, Unix and C were breaths of fresh air for an industry that was becoming stale, and renewing our enthusiasm for what was going to be possible.