Medical Biophysics Graduate Student Association

View Original

Dennis MacAlistair Ritchie (1941-2011): Father of C, co-creator of Unix

U.S. National Medal of Science 1999. Left to right: Kenneth L. Thompson, Dennis M. Ritchie, Bill Clinton
[Photo credit http://www.bell-labs.com/news/1999/april/28/1.html] Some of you may not have heard of Dennis Ritchie, but you are most certainly familiar with his work. In fact, you're probably using several technologies derived from his work at this very moment! Ritchie is the creator of the C programming language, arguably the most influential programming language since Assembly. He began working at AT&T Bell Labs in 1967 after completing a B.Sc. in physics and applied mathematics from Harvard University in 1963 and shortly before earning his Ph.D. in computer science, also from Harvard, in 1968. Back in the 60s, computers were a huge thing...so huge that one could easily fill a room, or two.

The availability of portable desktop computers was on the rise, but most operating systems available at the time were clunky and painful to use. In particular, the operating system being developed by Bell Labs for the Multics (Multiplexed Information and Computing Service) computer server was rather complex and did not scale up easily. Bell Labs gave up on the Multics project in 1969. As a side project with no funding from Bell Labs, Ritchie, working with Ken Thompson, M. D. McIlroy, and J. F. Ossanna, began working on a simpler multi-tasking, multi-user operating system in 1969 and the first version was released in 1971. Originally named Unics (UNiplexed Information and Computing Service), it would later become the revolutionary Unix kernel. Unix offered superior native support for networking capabilities, and would eventually be a key player in the birth of the world wide web (but we'll save the Unix-WWW story for another time).

Like every other operating system at the time, the first incarnation of Unix was written in assembly, a low-level programming language that is, in many ways, just a human-readable version of 01100010 01101001 01101110 01100001 01110010 01111001. Programming in assembly language usually required a lot of skill, time, patience, and paper tape (remember this was back in the 60s). Furthermore, due to the nearly one-to-one correspondence between assembly code and machine instructions, programs written in assembly usually had poor portability. An assembly program written for one machine architecture may not have run on any other, so a software developer would have had to maintain a separate set of code for each architecture that the software was supposed to support. These challenges drained much of the fun out of software development.

Thompson used a language intended for writing compilers known as BCPL (Basic Combined Programming Language) in the process of writing the Unix kernel. One feature unique to BCPL at the time was the use of curly brackets to enclose modules of code. Thompson made a stripped-down version of BCPL named B, first released in 1969. From 1969 to 1973, Ritchie made many contributions to B, including the introduction of Boolean logic, new variable types, structures, preprocessor directives, and byte-wise memory addressing. His newly rewritten compiler was able to produce machine language that ran fast enough to compete with programs written directly in assembly language. Thompson and Ritchie dubbed this emerging language C in 1971. C would become a de facto standard of high-level programming languages and go on to inspire numerous other languages including Java, Perl, Python, PHP, JavaScript, C++/--/#, and C shell (csh).

The success of Unix really stemmed from two factors. First, Ritchie began to rewrite Unix in C in 1972. Unix would become one of the first operating system kernels to be written in anything other than assembly. Second, AT&T was not allowed to commercialize non-telephone technology at the time, so it was required to provide licenses and the full source code to anyone who asked, free of charge. Unix became hugely popular with universities, corporations, and governments. Furthermore, the C code was now portable and users were able to implement Unix on various computer architectures, especially newly built machines, providing an operating system that can easily co-evolve with hardware technologies.

AT&T eventually obtained the rights to commercialize Unix in 1982, but by that time Unix had already made an impression on the world and open-source development would continue in the extended user community. The first community development was the BSD (Berkeley Software Distribution) operating system. First released in 1977, BSD continues to be a popular choice for server applications. Later, Unix would inspire Linus Torvalds to write his own Unix-compatible kernel, Linux, first released in 1991. Today, over 60% of web servers run on a Unix-like operating system.

Ritchie and Thompson received the Turing Award of the Association of Computing Machinery in 1983 and the U.S. National Medal of Science from Bill Clinton in 1999. Ritchie's work has shaped our society in ways too extensive to describe. Virtually all modern software contains C code, explicitly or in the form of derivative languages. Remnants of Unix code can be found in all major operating systems, both commercial and open-source. Unix-like operating systems power all sorts of modern gadgets, from cell phones to MRI scanners. It can be argued that the information age began with the creation of Unix. Curly brackets are everywhere! Most importantly, he reminds us that invention is not about the pursuit of fame and fortune, but rather an expression of passion and curiosity.

Ritchie passed away on October 8 at the age of 70.