Unix, C, and the Labs

Also in this week’s Economist Technology Quarterly supplement is a well-written and concise version of the story of Dennis Ritchie, Bell labs, C and Unix. Well worth reading. Contains a few gems, which I’ll quote at length for you:

"The severe limitations of the computers of the day forced Dr Thompson and Dr Ritchie to be ruthlessly efficient in their designs. Of course, this was true of other operating systems and languages of the time, which have long since faded from use. What distinguished the Bell Labs team is that, from the beginning, they focused on doing things that had not been done before, and doing them with clarity. In the words of Arnold Ross, an American mathematics educator, they “thought deeply of simple things”. One key and ambitious innovation was the idea of portability. At the time, different kinds of computer hardware ran different operating systems. Both Unix and C were, from the beginning, meant to move beyond the PDP-7; indeed, soon after its invention, Dr Ritchie and Dr Thompson “ported” it to the PDP-11, a more powerful model."

"Unix was re-written almost entirely in C. Until then, operating systems, which handle all the day-to-day workings of a computer, had been written in “machine language” which was different for different computers, and nearly opaque to humans. C, on the other hand, is a “high-level language” in that it has a greater degree of abstraction. This step meant that Unix could easily be moved to just about any computer of the time that had adequate memory; all one had to do was write a compiler (a program that translates C into machine language) for each computer. And because Dr Ritchie had been careful to keep the core of C very compact, this was relatively easy to do."

"The second factor Dr Ritchie cites is the “software tool approach” of Unix—breaking up complicated tasks into discrete software tools made the system easier to work with. For example, “paging”—the need, in the old days of character-based displays, to show only one screenful of information at a time—was broken into a separate small program. Dr McIlroy was the one who devised the system of “pipes” that allowed different programs to pass data to one another. This was unusual for the time."

Check the key points: portability; abstraction; the compact core, with the beginnings of object-oriented programming in those "discrete software tools".

The article ends beautifully with a further observation; the social aspects of creativity, and the potential beauty implicit in programming:

"Dr (Rob) Pike says that the thing he misses most from the 1970s at Bell Labs was the terminal room. Because computers were rare at the time, people did not have them on their desks, but rather went to the room, one side of which was covered with whiteboards, and sat down at a random computer to work. The technical hub of the system became the social hub. It is that interplay between the technical and the social that gives both C and Unix their legendary status. Programmers love them because they are powerful, and they are powerful because programmers love them. David Gelernter, a computer scientist at Yale, perhaps put it best when he said, “Beauty is more important in computing than anywhere else in technology because software is so complicated. Beauty is the ultimate defence against complexity.” Dr Ritchie’s creations are indeed beautiful examples of that most modern of art forms."

The Economist: Unix’s founding fathers [subscription required]

Also in this week’s Economist Technology Quarterly supplement is a well-written and concise version of the story of Dennis Ritchie, Bell labs, C and Unix. Well worth reading. Contains a few gems, which I’ll quote at length for you: "The severe limitations of the computers of the day forced Dr Thompson and Dr Ritchie to…

4 responses to “Unix, C, and the Labs”

  1. The “discrete software tools” are perhaps better likened to Service Oriented Architectures (SOA). The reason for this is that objects seldom are discrete. There is a principle in object-oriented programming that says that objects shouldn’t make any assumptions about their “users” (other objects), but generally that principle isn’t followed. More commonly, an object’s interface is shaped by whatever it is its users need. But with SOA, as with discrete tools chained using pipes, there’s no choice; you don’t have control over your users.

    Like

  2. David Gelerntner on Beauty in Computing

    Here’s a great thought to start off my day.

    Like

  3. Trackbacks on this post, received at the time (before I turned trackbacks off due to spam):


    » David Gelerntner on Beauty in Computing from McGee’s Musings
    Here’s a great thought to start off my day. [Read More]

    Like

Leave a comment

City of Sound.
Written by Dan Hill since 2001.

More at Medium.

⏬

Designed with WordPress