Thursday, October 13, 2011

Dennis Ritchie: RIP

Caption: C language source code - Dennis Ritchie's gift to the world. This particular bit is part of the Linux operating system.

Image credit: Screenshot by Cujo359

The other day, I left a comment at another site regarding Steve Jobs' death, pointing out that, while Jobs certainly helped popularize the computer, he didn't "democratize" it. What he did, in fact, was the opposite - closing the technology of Apple products, so that only a small oligarchy could determine its direction.

In rebutting this idea, I mentioned some of the people who have worked to make computer technology more open and available, Linus Torvalds, Tim Berners-Lee, Richard Stallman, and Eric Raymond being the ones I can remember. Sadly, there was at least one giant omission from that list:
Dennis Ritchie, creator of the C programming language and co-creator of the Unix operating system, has died aged 70.

While the introduction of Intel's 4004 microprocessor in 1971 is widely regarded as a key moment in modern computing, the contemporaneous birth of the C programming language is less well known. Yet the creation of C has as much claim, if not more, to be the true seminal moment of IT as we know it; it sits at the heart of programming — and in the hearts of programmers — as the quintessential expression of coding elegance, power, simplicity and portability.

Dennis Ritchie, father of Unix and C, dies

Caption: My copy of the Bell System Journal that announced the development of the Unix operating system. Note the appearance of Dennis Ritchie's name on several articles.

Image credit: Cujo359

What Ritchie, together with Ken Thompson and Brian Kernighan, gave us was the basis for nearly every important piece of software produced in the next twenty years. The C language, together with the Unix operating system, revolutionized software development. These technologies took computers from the days of simple closed systems that were painstakingly constructed in assembly language code to the open multitasking, multi-user systems of today. The C language was not only used to create Unix, but was also used to create MacOS, Linux, and Microsoft Windows. While it is less important than other languages these days in applications development, it is still the heart of every major operating system in use today.

The power of C is in its elegance. Superficially a simple language, its power is in what's behind each keyword. It allowed a skilled programmer to write programs nearly as efficient as an assembly language program, but in far less time.

The power of Unix was also its simplicity, at least as far as how applications were developed around it. It was meant to be a software development environment, and this emphasis on ease of software development allowed other programmers to build the tools that made Unix useful. Anyone familiar with Linux or Unix nowadays would recognize the tools that were developed by the Bell Labs team in the 1970s: sh, the shell, a versatile program that is meant to run other programs both from a command line and scripts, awk, a simple text processor, troff and its cousin nroff, typesetting programs the authors used to write their dissertations on the Unix system, and are still used to this day by scientists and engineers to produce documents. The Unix philosophy was to create small programs that work with other programs to perform new tasks. It reduced the task of creating a program that did something useful from days of programming to writing a few lines of shell script.

Before Bell Labs' parent company AT&T's lamentable attempts to commercialize the Unix code, it was shared freely with other academic institutions. You could say it was one of the first true open source software projects. When the code reached the University of California's Berkeley campus, the Berkeley geeks created a whole host of new software for it, including the editor vi, a derivative of which I used to present the C code in the lead image of this article, the sockets system of network programming as well as their own version of Unix, BSD Unix. This led to Sun Microsystems and the first flowering of truly networked multi-user workstation systems.

A little later, the Massachusetts Institute of Technology developed the X Window System, a graphical user interface (GUI) that was later ported to many other architectures. Several desktop environments have been developed based on this GUI. Like so many parts of the Unix system, if you don't like one there are others to choose from. If you don't like any of those, you can build your own.

What Unix did was make it possible to build on and improve Unix, whether its parent company wanted it to happen or not.

Like the other members of his team, Ritchie's talents weren't in self-promotion, they were in producing elegant computer software, and letting the world build on that to produce better things. Instead of locking people into a particular architecture, it allowed anyone with the ability to make it better, or make it to his liking. Lots of folks, including Apple did just that.

It's complicated, it's messy and difficult sometimes, but ultimately, Unix and the software it has spawned are whatever you can make of it.

That, my friends, is democracy.

UPDATE (Oct. 15): The other day, Yves Smith wrote an article entitled On #OccupyWallStreet and the Power of Open Source and Consensual Processes. Unix is an early and striking example of how open source processes work – they’re often almost invisible, yet they have a power that most things above the surface can’t match.

No comments: