Dennis Ritchie

Dennis MacAlistair Ritchie was a computer scientist most well-known for the development of the C programming language and co-development of the UNIX operating system alongside Ken Thompson. He was born on September 9, 1941 and died on October 12, 2011. He spent most of his career working for Bell Laboratories with Thompson as a long time colleague. It was at Bell Laboratories where Dennis worked on both C and UNIX. He was the recipient of several awards and honors including the ACM A.M. Turing Award, the National Medal of Technology, and the Japan Prize.

Early Life
Dennis was born September 9, 1941 in Bronxville, New York. His father, as Dennis would eventually follow, worked for Bell Laboratories. Dennis’s mother was a homemaker. Dennis graduated from high school in Summit, New Jersey where the family moved when he was younger. After graduating high school Dennis would proceed to earn his Bachelors of Science in Physics from Harvard University in 1963. He then received a PhD in Applied Mathematics in 1967 from Harvard University. Dennis worked part-time on the Multics Project (Multiplex Information and Computing Service) as a graduate student. In 1967 Dennis joined Bell Laboratories with whom he would remain until he retired in 2007.

Career
From 1967 to 2007 Dennis would work full time for Bell Laboratories or their derivatives. Even before coming on full time at Bell Laboratories, Dennis’s first experience with them was during a summer job in 1962. When Dennis joined Bell Laboratories, they were developing the operating software for the Multics Project. Dennis was involved in several sub-projects or Multics including adapting the BCPL language for Multics and GECOS systems. In 1969, after four years in the project, Bell Laboratories retracted due to over complexity and cost. Dennis and Ken Thompson (another programmer working on the Multics Project) were displeased to see the Multics Project fail. They both believed that one of the major downfalls was the over complexity of the operating system required. This thought would later lead them to the inspiration to create UNIX. Dennis would later create the C language and its compiler based of the B language written by Thompson. Thompson and Dennis would then continue to convert most of UNIX to C. Dennis would eventually become head of Bell Laboratories Computing Techniques Research Department in 1990. Five years later alongside other colleagues, Dennis would work on the Inferno Distributed Operating System and the Limbo language. In 1984 Bell Laboratories would be dissolved as a company and ingested by AT&T (AT&T was the parent Bell Laboratories). Lucent Technologies would then come to be as a child of AT&T in 1996. Dennis would work as head of their Systems Software Department until he retired in 2007.

C and UNIX
Stemming from the failure of the Multics Project, Ken Thompson proposed the idea of developing a simple light-weight operating system. Thompson’s superiors did not initially take to the idea leaving Thompson with limited resources with which to develop what would eventually become UNIX. UNIX was first written on a Digital Equipment Corporation PDP-7. Thompson’s rapid progress on the software soon attracted Dennis’s attention. Soon after Dennis would join the project.

From the start UNIX drew heavy contrast from Multics. Even the name UNIX stems from a pun on the name Multics. Multics’ main downfall was its over-encumbering size. UNIX was light-weight both by intention and from the PDP-7’s limitations. From the beginning, UNIX provided advantages not previously seen, such as the ability of small research groups to experiment with it on inexpensive microcomputers. Users could also share programs directly and informally. When Dennis and Thompson agreed to write text processing software for the patent department Bell Lab authorities offered them a full size computer to continue work on. UNIX was then moved to a Digital Equipment Corporation PDP-11 in 1971. Only a year later there were ten UNIX installs at AT&T.

UNIX was originally written in BCPL (Basic Combined Programming Language). Thompson would eventually write a new language known as B based off of BCPL. Dennis would later improve upon B to create C language and its compiler. In 1973 UNIX was re-written in C as it increased portability and made the writing process easier. The number of UNIX systems doubled from 1972 to 1973. UNIX became more widespread within AT&T and eventually broke into academic, commercial, and government sectors. Because of legal limitations of AT&T (being considered a telephone monopoly) they were not allowed to become active in the computer technology market which allowed Dennis and Thompson to freely distribute UNIX software. More than 600 UNIX systems existed by 1978. Eventually Dennis and Thompson recognized that UNIX had grown past them and continued to new projects.

One of the most important capabilities of UNIX was it portability. This portability came largely from the portability of C. Though C was not initially intended for portability the benefits of such capabilities soon became clear. Many systems that employed C software when transferred to new machines held significant cost. Alternatively many groups withheld upgrading machines to avoid these transfer costs. Soon portability became an important goal. The first step in creating a portable C was to create a portable compiler; initially several C compilers came into existence all of which lacked compatibility with each other. Over time a compiler compatible with a variety of machines was developed to replace the limited original compilers.

According to Dennis himself UNIX owes its success not only to its technical benefits but also to the mindset of the computer science community at the time. When UNIX first came to be scientists were beginning to experiment with the idea of creating their own small scale computing facilities. Scientists were finding difficulty in the lack of capabilities in the software created by manufactures. The idea of personal computing facilities led to a rise in popularity of the PDP-11 minicomputer. UNIX was already available for the PDP-11 along with its portability and ease of software writing it soon became common place. Additionally, early on UNIX was controlled mostly by its original creators and therefore was able to be refined to best fit its purpose. With UNIX’s appearance in many computing facilities it generated a collection of users that provided improvements and ideas. This collection of users helped to cement the foundation for UNIX’s success.

With the arrival of UNIX and C at universities students began to receive training in the two. This helped to carry both into the industrial world with graduating students. This helped to dramatically increase the popularity of UNIX and C. Eventually in 1978 Dennis would co-author with Brian Kernighan a textbook titled The C Programming Language. It would remain a best seller for 15 years. The book not only offered knowledge of the C language but also advice on programming practices, some of which remain staples even to this day.

Both UNIX and C helped lay the foundation for much of computing’s future. Many more advanced languages such as C++ and Java use key principles set forth by C. Many newer operating systems originated as evolutions of UNIX. For example, in 1995 Steve Jobs instilled UNIX as the backbone of Apple Computers. UNIX has also played a key role in the open source movement. After AT&T was free from its legal limitations it eventually began to claim intellectual property rights to UNIX. The hacker Richard Stallman founded the Free Software Foundation which allowed hundreds of fellow programmers to work together in creating a free version of UNIX. The final key to the puzzle was gifted by Linus Torvalds who provided the operating system kernel. This lead to the creation of Linux, which is one of the leading operating systems today.

Standardization of C
With the growth and development of C it became necessary to create standardization for C. The first informal standard for C was The C Programming Language, however C soon grew past the capabilities described in the book and the compiler it referenced. ANSI formed X3J11 in 1983 with the goal of producing a C standard. In 1989 X3J11 released a report on a C standard which was later accepted by ISO. X3J11 would then evolve to serve as an interpreter of the existing standard and did not attempt to extend the standard. A subgroup of X3J11 known as X3J11.1 formed to continue considering possible extension of the standard. Most of the extensions considered by X3J11.1 are for numerical calculation purposes.

Popular Criticism
C and UNIX do find arguments for their short comings. One short coming considered the most impactful is the use of a NUL-terminated string. The alternative and more often used format is a string constructed with an address + length pair. The existing hardware was typically designed for an address + length type string, but with the growing popularity of C and UNIX hardware had to be redesigned to best handle the new NUL-terminated strings (redesigning carried a significant cost with it).

NUL-terminated strings also impose a performance hit. With NUL-terminated strings it is not possible to know the length of the string without accessing the memory where the string is stored at. This leads to several limitations with memory manipulation. The code required for a compiler to best optimize a program using NUL-terminated strings is also more involved and difficult to write. There are also security implications for systems that use NUL-terminated strings. NUL-terminated strings allow for buffers to more easily be overloaded, an attack often used by hackers.

Honors and Awards
Dennis was the recipient of several awards and honors for his work in the computer science field Dennis and Thompson were jointly given several awards for the UNIX operating system. Dennis was also invited to speak at the History of Programming Languages Conference where he discussed his paper “The Development of the C Programming Language”.
 * ACM Programming Systems and Language Paper Award; 1975
 * ACM A.M. Turing Award; 1983
 * ACM Software System Award; 1983
 * IEEE Emanuel R. Piroe Award; 1983
 * IEEE Richard W. Hamming Medal; 1990
 * IEEE Computer Pioneer Award; 1994
 * Computer History Museum Fellow Award; 1997
 * 1998 National Medal of Technology from President Bill Clinton
 * ACM SIGOPS Hall of Fame Award; 2005
 * Japan Prize for Information and Communications; 2011

Inferno Operating System
Another large project of Dennis’s, although not as famous, is the Inferno Operating System. The Inferno Operating System began in 1995. Dennis, now a Lucent department head, alongside his fellow colleagues began to develop an operating system that could ideally fit the future plans of AT&T’s entertainment business. The Inferno System sought to supplement the growing needs of a communications company in the evolving entertainment world. With AT&T seeking to branch out from just telecommunications they needed a system that can handle the more complex networks associated with services such as cable television and satellite broadcasting.

Inferno was intended as an operating system that could be installed across a variety of devices from a traditional computer to cable television boxes. Some of the advantages of the Inferno System for its intended environment were as follows:


 * Can be ported to a variety of processors
 * Can be a stand-alone operating system or a user application under a parent operating system
 * Dynamic splitting of applications between server and client
 * Applications for Inferno are written in Limbo™ and are portable between all platforms

The Inferno Operating system was also designed for longevity and adaptability for future applications. The system sought to allow applications to adapt their functionality based on hardware and network type.

The Inferno System was designed for an environment consisting of mostly simple devices using Inferno as the primary operating system connected to a few complex computers running Inferno as a virtual system. For example, a cable television service would employ an environment similar to this.

Most applications for the Inferno system saw all available resources as files or directories. Resources were represented independent of whether or not they were local or remote. In order to allow resources to be represented this way Inferno used the Styx protocol. An example of using resources in this environment type could be a DNS server. The DNS server could be located in directory as a file and the system would write to the file the name of the webpage desired; if the file was then read the output would be the IP address of the webpage.

Limbo Programming Language
The Limbo Language was created specifically for the Inferno Operating System. The language was very similar to C but carried additional data types and constructs useful for Inferno. Several of the advanced features of Limbo were achieved by its close integration to the Inferno system.

Limbo was capable of transferring advanced structures across networks due to the use of channels. Limbo supported multi-tasking which utilized the channels to improve reliability. Limbo programs were constructed of parts known as modules. The modules of a Limbo program were loaded dynamically and would be released when the module was no longer needed. The module system allowed programs to remain both small and adaptable. Limbo was designed to run safely on a machine without memory protection hardware and also included a garbage collector.

Later Life
In his later life, Dennis was in poor health having been affected by both prostate cancer and heart disease. He was said to have been very frail by family members close to him. He died on October 12, 2011 (the same month as Steve Jobs) at the age of 70.