Ken Thompson, creator of Unix speaks with Dr. Dobbs on a wide variety of topics.
Unix's ubiquity was a surprise, says Thompson
The Japan Prize, one of the highest honors awarded for outstanding contribution to science and technology, was awarded jointly this year to Ken Thompson and Dennis Ritchie for the creation of Unix.
The prize is normally given to the recipients at a lavish banquet in Tokyo attended by the emperor. However, due to the April earthquake and tsunami, the prizes this year were distributed at the honorees' place of work. Ken Thompson's ceremony was held at Google headquarters, where he currently works, and afterward he spoke with Dr. Dobb's editor in chief Andrew Binstock on a wide variety of topics. Their discussion ranged from the development of Unix, beginning in the late 1960s, to the collaboration with Ritchie, to Thompson's current project, the open source programming language Go, which is designed to get the most performance out of today's multicore and networked computers.
On Developing Unix
Dr. Dobb's: At what point in Unix's development did it become clear it was going to be something much bigger than you'd anticipated?
Thompson: The actual magnitude, that no one could have guessed. I gather it's still growing now. I thought it would be useful to essentially anybody like me, because it wasn't built for someone else or some third party. That was a pejorative term then. It was written for Dennis and me and our group to do its work, and I thought it would be useful to anybody who did the kind of work that we did. And therefore, I always thought it was something really good that was going to take off.
Especially the language [C]. The language grew up with one of the rewritings of the system and, as such, it became perfect for writing systems. We would change it daily as we ran into trouble building Unix out of the language, and we'd modify it for our needs.
Dr. Dobb's: A symbiosis of sorts.
Thompson: Yeah. It became the perfect language for what it was designed to do. I always thought the language and the system were widely applicable.
Dr. Dobb's: The presentation for the Japan Prize mentioned that Unix was open source. Was Unix open source from the beginning?
Thompson: Well there was no such term as "open source" then.
Dr. Dobb's: I was under the impression that Unix really became open source with the Berkeley distribution.
Thompson: No, we charged $100, which was essentially the reproduction cost of the tape, and then sent it out. And we distributed, oh, probably close to 100 copies to universities and others.
On The Go Language
Dr. Dobb's: Skipping several decades of work, let's speak about Go. I was just at the Google I/O Conference, where it was announced that Go will be supported on the Google App Engine. Does that presage a wider adoption of Go within Google, or is it still experimental?
Thompson: It's expanding every day and not being forced down anybody's throat. It's hard to adopt it to a project inside of Google because of the learning curve. It's brand new, and there aren't good manuals for it, except what's on the Web. And then, of course, it's labeled as being experimental, so people are a little afraid. In spite of that, it's growing very fast inside of Google.
Dr. Dobb's: In the presentation, you were quoted on the distinction between research and development. [Thompson said research is directionless, whereas development has a specific goal.] So in that context, is Go experimental?
Thompson: Yes. When we [Thompson, Rob Pike, and Robert Griesemer] got started, it was pure research. The three of us got together and decided that we hated C++. [Laughs]
Dr. Dobb's: I think there'd be a lot of people who are with you on that.
Thompson: It's too complex. And going back, if we'd thought of it, we'd have done an object-oriented version of C back in the old days.
Dr. Dobb's: You're saying you would have?
Thompson: Yes, but we were not evangelists of object orientation. [In developing Go,] we started off with the idea that all three of us had to be talked into every feature in the language, so there was no extraneous garbage put into the language for any reason.
Dr. Dobb's: It's a lean language, indeed.
On Collaborating With Dennis Ritchie
Dr. Dobb's: Returning to Unix, when you and Dennis worked together, how did that collaboration operate? Were you working side by side?
Thompson: I did the first of two or three versions of Unix all alone. And Dennis became an evangelist. Then there was a rewrite in a higher-level language that would come to be called C. He worked mostly on the language and on the I/O system, and I worked on all the rest of the operating system. That was for the PDP-11, which was serendipitous, because that was the computer that took over the academic community.
Dr. Dobb's: Right.
Thompson: We collaborated every day. There was a lunch that we went to. And we'd talk over lunch. Then, at night, we each worked from our separate homes, but we were in constant communication. In those days, we had mail and writ [pronounced "write"], and writ would pop up on your screen and say there was a message from so-and-so.
Dr. Dobb's: So, IM, essentially.
Thompson: Yes, IM. There was no doubt about that! And we discussed things from home with writ. We worked very well together and didn't collaborate a lot except to decide who was going to do what. Then we'd run and very independently do separate things. Rarely did we ever work on the same thing.
Dr. Dobb's: Was there any concept of looking at each other's code or doing code reviews?
Thompson: [Shaking head] We were all pretty good coders.
Dr. Dobb's: I suspect you probably were. Did you use any kind of source code management product when working together?
Thompson: No, those products really came later; after Unix. We had something like it, which we called "the code motel," because you could check your code in but you couldn't check it out! So, really, no we didn't.
Dr. Dobb's: I bet you use source code management today, in your work on Go.