The technology world has just lost another giant, though one without the towering public persona of Steve Jobs.
If you’re not actually a programmer, you’ve probably never heard of Dennis Ritchie. But the vast majority of software you use was built using a tool that he originally designed, and the rest by tools that very liberally sample from his.
The “native language” that the central processor in a computer understands is an ornery beast. For one thing, back in the 1970s every two-bit computer company (if you’ll pardon the techy pun) had its own native language; these days, there still remain two very common ones, and dozens of less common examples out there. More importantly, it’s almost incomprehensible, even to most programmers. Take this little snippet, part of the preliminaries to a very simple program that just prints the message “hello, world” to the screen:
_start:
mov eax, 4
mov ebx, 1
mov ecx, str
mov edx, str_len
int 80h
Writing long and complicated bits of software with such unhelpful notation is extremely slow and error-prone.
“High-level” languages, that allowed the logic of software to be expressed in more compact and readable notation, had existed since the 1950s; Grace Hopper was responsible for one of the first. Over time, more and more of the scientific and business software run on the large computers of the era was written in FORTRAN, COBOL, and other high-level langages. However, the “operating systems”, the software plumbing that joined those applications to the hardware, was invariably written in the machine language of specific systems.
In the late 1960s, Ritchie, working with Ken Thompson at Bell Laboratories, hacked together their own little operating system for an obsolete computer nobody was making use of. It was small, but it worked, and was one of the first practical systems to support “timesharing” – the ability for multiple users to run multiple programs simultaneously and interactively. Fairly early on, they had another brainwave; they would rewrite as much of the system – which became known as Unix – as possible in a high-level programming language, to speed development. But first, they needed a suitable high-level language. The resulting language, an evolution of earlier languages entitled BCPL and B, was called “C”.
Both C and Unix were raging successes, partly because of their inherent strengths. The use of C allowed Unix to be “ported” to many different computer systems, a process that continues today as its spiritual successor Linux, written in C, runs on everything from IBM mainframes (and the amphormous “Googleplex” of Google’s servers which, reportedly, draw 240 megawatts of power), to virtually every smartphone on the planet (the iPhone’s operating system is not Linux, but it is also a derivation of Unix and substantial parts are written in C). They also had the good fortune, as with the Internet and World Wide Web which owes so much to both, that they gradually escaped the crush of intellectual property law to become part of the intellectual commons of the field.
Almost as important was the elegance and economy that Ritchie, along with Brian Kernighan, brought to teaching the language. Their textbook The C Programming Language remains the best programming language textbook ever written, in my view, and the one that I still strongly recommend to my students.
Much of the Windows operating system, and Mac OS X, are implemented in C. Those parts that aren’t, are implemented in computer languages directly derived from it – C++ and Objective-C. Most of the software that runs on those systems is also written in C or its successor languages. And perhaps the most pervasive “new” high-level language of the last 20 years – Java – retains so much of C’s “look and feel” that it often takes a second glance to tell which language a piece of code is written in.
Neither C nor Unix were by any means perfect. While some of its design faults have been eliminated in its successors others remain, and will likely continue to bamboozle neophyte (and, all too often, experienced) programmers, for generations to come. But there was so much he and his colleagues got right. Fate did play its part, but there are very good reasons that generations of software developers not yet born will express themselves in notations largely based on Ritchie’s.
RIP, dmr.



char *dmr = NULL
Gutted to lose one of the giants.
A great loss. Rob Pike has a nice summary here of the impact of his work:
https://plus.google.com/u/0/101960720994009339267/posts/33mmANQZDtY
A sad loss but we all have to go sometimes I suppose. These guys worked in a time when the field was a mish-mash of electronics engineering,maths and linguistics and they were given the time to see what they could make of things. There was no Gant chart for getting unix running.
On another note it’s interesting to consider the hyperbolic reaction to the death of Jobs. I think he was a brilliant businessman but the fact is that statements about impacts on lives are grossly exaggerated. If all the MacOS devices contracted a virus and stopped working forever there would be some minor inconvenience. If the same happened to all the unix, mainframe and (dare I say it) Windows machines, there would be total chaos.
Yes a sad loss of someone who did not crave recognition.
My world of the history of programming languages has been expanded a couple of time recently. I only learned a week or so ago that the ADA language was named after Ada Lovelace. Lovelace was probably the real force behind Charles Babbage but has very little recognition for her work.
Perhaps in time to come Dennis Ritchie will have something suitable bearing his name.
Thanks Dennis. I still use your work every day.
Poor Ada Lovelace. If she’d still been alive when they named Ada 83 after her, she would have sued.
LOL. And agreed
I think you blokes are being a bit harsh. I like ADA.
Great post, Robert, and I fully agree with your comment re Ritchie & Kerhaghan’s teaching. I sense too that the achievements of that generation of computer scientists is on the brink of fading from view: nowadays most comp sci students don’t encounter C or Unix in their coursework.
Mine do, TFA.
And part of the reason that I think that they should continue to is the quality of books like K&R.
The Feral Abacus:
Wow, is that really true!?!?!?
Back in the day, K&R was not just my bedtime reading, but my constant companion.
The pioneers fade away.
A titan – but he didn’t make any “cool” techno gadgets or wear black skivys, so the mass media doesn’t really care all that much, does it?
Chris, early in the year I was considering further study. The institutions I looked at either taught MSCE or were Java-based (admittedly strong links to C there). I found no mention of the word Unix (or it’s variants) in any of the course outlines I read.
The Feral Abacus – that’s pretty disappointing. Unix/Linux are a great opportunities to see how an operating system works. Knowledge of which is pretty important if you want to be able write efficient applications. If there’s no C I guess they don’t teach any assembler either then?
.. And don’t forget that macosx is part of the unix family.
Totally agree with patrickb above about the relative importance of Ritchie and Jobs. Jobs was the CEO of the US’s most profitable company, last year, and his company is his enduring legacy. Ritchie’s legacy is much more general and much more fundamental, as Robert points out in the intro.
It is an enduring question if we need maniacs like Gates and Jobs to make an enterprise successful. They sure as hell need our money and our admiration to get their rocks off.
Pioneers like Ritchie were just really interested in computers.
There’s a political and cultural lesson to be learned from juxtaposing these two men’s lives.
( Anyone wanting to play around with a true unix descendent can go a play around with FreeBSD )
TFA & Chris: A lot of CS departments start their students off on a ‘simple’ language like Java or Python (or Scheme if you’re from MIT) before moving them onto languages like C where memory management etc becomes more important. Seems to me to be a pretty good way of getting a flavour for comp sci without getting bogged down in the details.
So you might not see languages like C until more advanced papers, and then you might not even see it explicitly. I think this is a good idea – using the right tool for the job should extend to teaching.
Joe – I think Jobs was more than just your standard CEO though. And much more than just marketing. From all reports – and you can argue whether its a good or bad thing – he was very involved in a lot of the design details. And the one thing Apple have got right many times is usability – which many other companies have learned from.
I don’t think it necessary to knock down people like Jobs to appreciate what Ritchie has given us.
Chris,
I’m not knocking him down. How the hell can I, this is a comment on a blog. In my opinion the way Jobs was eulogised lacked proportion. Job’s contribution to “the world” is over-hyped– he didn’t change the way I think, so much as Ritchie did.
“I don’t think it necessary to knock down people like Jobs to appreciate what Ritchie has given us.”
Azackly.
Without people like Jobs, Unix and C would never have been put to all the myriad awesome uses to which they have been put.
Hear hear Robert. Also a +1 on the comment about the book. I still have my first edition!
also, i think your postfix decrement operator has been converted into an em-dash?
Joe – perhaps I’m just being a bit narky, but comparing Jobs vs Ritchie is like comparing apples with oranges. Ritchie’s work is a part of pretty much every electronic/computer product these days – if not explicitly then most likely in the tools used to design and build it. But much like unix or linux its all under the hood and people don’t realise it, even if they effectively use it everyday.
Steve Jobs on the other hand has had a very strong direct influence on how everyday people interact with computers. And that’s why he’s so publicly popular. His work has resulted in Apple making solutions for people, rather than products. And he’s had a big influence in other areas too – NeXT and Pixar.
Indeed. Jobs, in his insistence on good design, made computers a pleasure to use for many people. A great achievement, both by what Apple products did, and what their presence in the marketplace forced his competitors to do.
But Ritchie, in substantial part, provided two of the key tools that Jobs’ engineers used to build those computers.
None of this happened in a vacuum, of course, in either case. Jobs was inspired by earlier research work dating back to the 1960s and further developed at Xerox’s research labs (amongst other places), Ritchie was part of a team that tried and failed to build a much more ambitious operating system called Multics. And so it goes on.
But then, many other innovators who changed our world aren’t given their due if their innovations don’t touch many people’s daily lives directly. Can any of you name who invented the shipping container?
The wheel?
Unfortunately for the wheel’s inventor, they had the misfortune to do so before the invention of writing.
dear Robert Merkel
ok, i’ve got google chrome (intel inside (programed in c?)), i’ll bite.
but, do you mean keith tantlinger?
http://www.joc.com/container-shipping/container-twistlock-inventor-dies-92
http://en.wikipedia.org/wiki/Keith_Tantlinger
or malcom mclean?
http://www.imcbrokers.com/blog/overview/p/detail/malcolm-mclean-the-inventor-of-iso-shipping-containers
http://en.wikipedia.org/wiki/Malcom_McLean
and i thought i’d read the guy’s obit recently, but i don’t recall it being either of these. sigh.
yours sincerely
alfred venison
Well what about the inventor of writing then, Cleverpants?
What’s this about the demise of “C” in our institutions ?
I have 4 programmers in my team and they write all the really important firmware stuff in C. No assembler, no machine code only C.
We do use Java for some peripheral stuff. Most of these persons are straight out of Uni and they all know C.
Huggy
dear FDB
ok, “cyrillic”, at least, was invented by cyril.
yours sincerely
alfred venison
And perhaps sanskrit is just a misprint for Sam’s script.
Dennis Ritchie could have worn black skivvies if he had wanted to.
Re: Java and C, remember that Java is much more than just a language. C is the bare bones whereas with the JDK you get lots of stuff for free.
@19
I not disagreeing with the fact that Jobs had an impact on the IT industry. What pissed me off was the homogeneity of the tributes. When the PM said that he had a huge influence on all our lives it was head slap time for me.
hehehe, I’ve always judged my colleagues on their ability to understand pointers and dereferencing variables. The good ones not only understand it but love it with a passion – whereas the newer ones (those who are fed MCSE courses and live on Wintel) … well, their eyes tend to gloss over at the thought of loosing control.
**ritchie->missed = &sorely;
That’s easy — Ms Eleanore Shipping, working under the pseudonym ‘Ed’.
Shipping containers were mostly the work of Malcolm Purcell McLean, a US truck (not shipping) magnate. He almost went broke several times trying to get them introduced – another person whose contribution is largely unrecognised.
Homage to dmr:
http://www.youtube.com/watch?v=rc2G5b5NvE4
it appears that Schoenberg was right about exactly one thing in his life…
(maybe FDB will get my joke)