UNIX: A History and a Memoir
Rate it:
Kindle Notes & Highlights
Read between January 4 - April 5, 2021
Multics was intrinsically a challenging prospect, and it soon ran into problems. In retrospect, it was partly a victim of the second system effect: after a success (like CTSS), it’s tempting to try to create a new system that fixes all the remaining problems with the original while adding everybody’s favorite new features too. The result is often a system that’s too complicated, a consequence of taking on too many different things at the same time, and that
was the case with Multics.
Although each Research MTS had a private office, much Unix development went on in a shared space called “the Unix room.” Its actual location changed a couple of times over the years, but it was always a place to hang out, learn what was going on, contribute ideas, or just socialize. The original Unix room was briefly on the fourth floor of Building 2 where the PDP-7 lived, but the main location for many years was on the sixth floor of Building 2 in room 2C-644.
In retrospect, I think that Bell Labs did a good job with space. Private offices, though they cost more than open areas, give people peace and quiet, a place to focus without constant noise in the background, storage for books and papers, and a door to close for intense thought or private conversations. By now, I’v e spent enough time in open-plan work areas to know that, for me at least, they are utterly destructive of concentration. The Bell Labs mixture of one’s own private office and a shared space for the community worked very well.
The full story of Peter’s many faces can be found at spinroot.com/pjw, a web site maintained by Gerard, who with Rob Pike did many of the original enhancements of Peter’s picture.
Peter filtered through AT&T logo (Courtesy of Gerard Holzmann)
Bell Labs was an informal place, but sometime in the early to mid 1980s, a new policy was instituted: employees had to wear their badges at all times. This was undoubtedly a sensible precaution to discourage interlopers, but it wasn’t popular. Asaprotest, one colleague, who will remain nameless here, stuck his badge to his forehead with super-glue; another took to wearing it clipped to the hair on his chest, revealing it only upon demand.
“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 languages better than functional ones.”
I still use some scripts that I wrote 30 or 40 years ago, and this is not at all unusual among long-time Unix users.
This is a common Unix story: a real problem from a real user, deep knowledge of relevant theory, effective engineering to make the theory work well in practice, and continuous improvement. It all came together because of broad expertise in the group, an open environment, and a culture of experimenting with new ideas.
The new language was called “NB,” for “New B,” and eventually it became C.
I thought that it would be worth trying to write a book about C. Naturally I asked Dennis if he would write it with me. He might have initially been reluctant, but I twisted his arm harder and eventually he agreed.
For instance, every day at 1PM, the Votrax would say “Lunchtime, lunchtime, lunchtime. Yummy, yummy, yummy.”
The name Lint comes from the image of picking lint off clothing. Although its functionality is now often subsumed into C compilers, the idea is common in analogous tools for a number of other languages.
“Lex was rewritten almost immediately by Eric Schmidt as a summer student.
Cfront, the original version of C++, would be more accurately described as an object-oriented preprocessor for C that evolved into C++. Sometimes, as with C++, the preprocessor eventually went away as functionality was absorbed into the downstream process.
I doubt that any of us ever wrote a book explicitly to make money—no one at the Labs would be dumb enough to think that writing a technical book was lucrative—but if a book had some success, the authors kept the money.
I even have a bumper sticker that says “Sed and Awk: together we can change everything.”
It was also the environment in which Rob Pike wrote a series of mouse-based text editors, one of which I use by preference even today: this book was written with Sam.
In 1977, John wrote a line-by-line “commentary” on the 6th edition source code. Every part of the source code was explained in detail, so one could see how it worked, why it was the way it was, and how it might be done differently.
One comment in the Unix source has become famous, thanks to the Commentary. Line 2238 says /* You are not expected to understand this. */
† UNIX is a trademark of Bell Laboratories. but if the command was used with an additional undocumented parameter, it would instead print † UNIX is a footnote of Bell Laboratories. I don’t think that anyone ever noticed when we occasionally used this Easter egg, but the code is still there in the standard macro package.
Unix sectional bookcases, 1941 (Courtesy of Ian Utting)
I had obviously been seduced by the famous Jobs “reality distortion field.”
The Unix philosophy, a style of programming, of how to approach a computing task, was summarized by Doug McIlroy in his foreword to the special issue of the Bell Labs Technical Journal on Unix, in July 1978:
(i) Make each program do one thing well. To doanew job, build afresh rather than complicate old programs by adding new “features.” (ii) Expect the output of every program to become the input to another, as yet unknown, program. Don’t clutter output with extraneous information. Avoid stringently columnar or binary input formats. Don’t insist on interactive input. (iii) Design and build software, even operating systems, to be tried early, ideally within weeks. Don’t hesitate to throw away the clumsy parts and rebuild them. (iv) Use tools in preference to unskilled help to lighten a programming ...more