“What we wanted to preserve was not just a good environment in which to do programming, but a system around which fellowship could form.”
—Dennis Ritchie, 1941 – 2011
Technological relics from the past are often oddly charming. As technology rapidly changes, consolidates, and improves, it’s amusing to think that machines from years ago could only perform a few tasks. Some notable nostalgia includes the first mobile phones (which could fill briefcases), the original Walkman, and the iconic video game, “Pong.” While these inventions are certainly recognizable in their own right, they don’t resemble modern phones, nor games, nor other devices. What’s arguably the most long-lasting “relic” from this era comes from Dennis Ritchie, co-creator of the Unix Operating System and developer of the programming language C.
Despite the numerous achievements in technology since the early 70’s, few inventions have made quite the impact that Unix and C have made. The operating system, the programming language, and the philosophy behind them both are nearly ever-lasting, especially considering that its direct ancestors still power the bulk of devices and applications today. With just shy of 50 years of existence, we still see very recognizable code in modern applications, making this “relic” as relevant as ever.
Rooted in Tech History
Dennis Ritchie earned both undergraduate and advanced degrees from Harvard University, however he concentrated on different subjects during his time there. By his own humble admission, “My undergraduate experience convinced me that I was not smart enough to be a physicist, and that computers were quite neat. My graduate school experience convinced me that I was not smart enough to be an expert in the theory of algorithms and also that I liked procedural [programming] languages better than functional ones.” Through this academic self-discovery, Ritchie quickly earned his place as a researcher in the historic Bell Labs.
While the structure of this organization has evolved over the years, Bell Labs’ origins are connected to the accredited inventor of the telephone itself, Alexander Graham Bell. Since its founding in the late 1800’s, it has an impressive resumé of technological advancements. Research from this lab has yielded the laser, the transistor, and thanks to Dennis Ritchie in particular, the Unix Operating System and the programming language C. While AT&T (aka the American Telephone and Telegraph Company) was part of Bell Labs, roughly 50% of researchers at the time were involved in creating unique software. For IBM, it was estimated that roughly 5,000 “staff years of effort” were required to build the operating system for their 360 series computers, a time constraint that surely could not be met year after year. Bell Labs, in turn, demanded that software could change as rapidly as possible.
By Jason Scott – Flickr: IMG_9976, CC BY 2.0
A New Approach
Creating functional, yet flexible operating systems required a new approach. Rather than creating massive, single programs with thousands upon thousands of lines of code, both Dennis Ritchie and colleague Ken Thompson thought, what would happen if smaller packages of information worked together within a pipeline? If changes needed to be made, they could easily be pin-pointed and adjusted rather than uprooting an entire program from its core. This thinking ultimately led them to Unix, an operating system that functions not at the will of a single program, but relies on the relationship between smaller programs.
This philosophy alone has stood the test of time as it is now commonly referred to the “Unix Philosophy,” a set of cultural norms and even best practices when creating new software. As recorded in A Quarter-Century of Unix (1994):
1. Write programs that do one thing and do it well.
Do not confuse tasks or try to create too many things at once. To do a new job, build a new design rather than adding clunky “features.”
2. Write programs to work together.
Each output should function as the input to another, perhaps an even newer, unforeseen program. Try not to clutter outputs with too much information.
3. Write programs to handle text streams, because that is a universal interface.
A Universal Language
Enter programming language C. While C’s development is intertwined with that of Unix, Dennis Ritchie is credited for creating this elegantly simple programming language in 1973. In line with the collaborative philosophy of Unix, and in line with other projects at Bell Labs at the time, both Ritchie and Thompson experimented with the use of high-level languages. Instead of assembly languages, which are considered to be very granular and machine-code specific, high-level languages, or general-purpose languages as they are often called, are broadly applicable across domains. Despite its relatively “old” establishment in the tech world, the C language and its direct ancestors are still quite recognizable today.
One feature of C that made it so compatible across several application domains was its unique compiler. As explained by former colleague and co-author of the first instruction manual for the C language, Brian Kernighan, previous languages could not account for differences in integer sizes. “Instead of having everything in the machine be a single size of an effect integer, there were different sizes that the machine would naturally manipulate: 8-bit, 16-bit, maybe 32-bit…. Dennis Ritchie undertook to design [a language] that had the mechanisms to say, ‘This is an 8-bit quantity, this is a 16-bit quantity…’ and he wrote a compiler for that.”
This compiler feature in C is what makes the language so portable. Since it can recognize different sizes of information, it can easily be re-compiled and implemented on a different machine. Based on these high-level features, both Ritchie and Thompson wrote their Unix operating system in the C programming language, ultimately creating a collaborative, program-based system that anyone could build upon.
What inspires us here at Tetra about Dennis Ritchie was his ability to make programming more accessible to more systems, more machines, and even more people. Creating an entire operating system that relied on the combination of several programs within the most universal language possible is perhaps what helps our technology adapt and change so quickly now.
Sadly, Ritchie passed away in his home in New Jersey in 2011 at the age of 70. He is widely remembered as a humble, introverted researcher, all while being a programming trailblazer. We recognize Ritchie for his incredible craftsmanship and his philosophy of collaboration. We agree with computer historian, Paul E. Ceruzzi’s warm sentiments when he says: “Ritchie was under the radar. His name was not a household name at all, but… if you had a microscope and could look in a computer, you’d see his work everywhere inside.”