I never in my wildest dreams would have predicted the evolution of theInternet. And I never would’ve predicted the degree to which corporateinfluence over the Internet has changed its character over time. I would’vethought that the Internet was inherently uncontrollable, and I no longerthink that. China shows that you can do it pretty effectively.
And I think there’s a good chance that if Microsoft plays its cards right, theywill have a lock on the Internet. I’m sure they would love to, but I think theymight be smart enough to see the path from where they are to having whateffectively is control of essentially all the software that gets used on theInternet.
So I’m not really much of an optimist about the future of computing. To beperfectly honest, that’s one of the reasons why it wasn’t hard for me to getout. I mean, I saw a world that was completely dominated by an unethicalmonopolist, and I didn’t see much of a place for me in it.
Ken Thompson
Ken Thompson is the original bearded Unix hacker. He has spent a careerworking on whatever he finds interesting, which has, at various times, includedanalog computing, systems programming, regular expressions, and computerchess.
Hired as a researcher at Bell Labs to work on the MULTICS project, after BellLabs pulled out of MULTICS, Thompson went on, with Dennis Ritchie, to inventUnix, an endeavor for which he fully expected to be fired. He also invented the Bprogramming language, the precursor to Dennis Ritchie’s C.
Later he got interested in computer chess, building Belle, the first special-purposechess computer and the strongest computerized chess player of its time. He alsohelped expand chess endgame tablebases to cover all four- and five-pieceendgames.
When working on Bell Labs’ Plan 9 operating system, he devised the nowubiquitous UTF-8 Unicode encoding.
In 1983, Thompson and Ritchie received the Turing Award for their “developmentof generic operating systems theory and specifically for the implementation of theUnix operating system.” He was also awarded the National Medal of Technologyand the Institute of Electrical and Electronics Engineers Tsutomu Kanai Award,both for his work on Unix.
In this interview he talked about his early love of electronics, a rather unorthodoxacademic career that had him teaching courses while he was still a student, andwhy modern programming scares him.
Seibel: How did you learn to program?
Thompson: I was always fascinated with logic and even in grade school I’dwork on arithmetic problems in binary, stuff like that. Just because I wasfascinated.
Seibel: Did you turn them in that way?
Thompson: No, no. But I worked out the algorithms for adding indifferent bases, what carry means, and what each column means and thingslike that. Then I had a little calculator, a decimal calculator. It was like adecimal abacus. Instead of one and two it had a slide from zero to nine. Ithad a subtract one from a previous column down and an add one from theprevious column up. So you’d put a stylus in, like a four, and run it up andhook over if you want to carry. And I built some binary stuff based on thatand how that generalized to n-ary.
Seibel: Where did you even get that notion of binary arithmetic?
Thompson: In the class at the time I actually started doing this, theyintroduced binary.
Seibel: Were you a victim of the “new math?”
Thompson: No, no. I was victim of bad math. I moved every year or soand I was in some really, really horrible schools and then some goodschools. So I would have to do two years of work in one year and then I’dbe off a year. I was just loafing through math, so I had a horrible mathprimary education. And this one class they just described binary arithmetic. Itook that and extended it to any base and played with that. So that’s kind ofwhere I got started.
Seibel: And that was in grade school?
Thompson: Yeah, seventh grade. Then around senior year in high school,somewhere around in that time, I was into electronics a lot, building radiosand amplifiers and oscillators and theremins. And I got hooked on analogcomputing. It was really marvelous. Electronics was my passion during allthat time. I went into double E at Berkeley, and there I saw real digitalcomputers for the first time in my junior year.
Seibel: And so what year would that have been?
Thompson: I went to junior semester early, so it was three semesters in. Istarted school in September ’60, so it would be the fall or spring of ’62.They had an analog computer which I had a great time with. And they had aG15, a drum computer. They had one lab class on it and then it was open.Anybody could play with it, but no one did, so it was free. And I used itessentially exclusively. I wrote programs on it, on my own, to scale ananalog computer—analog computing is almost all scaling.
Seibel: Scaling in the sense of?
Thompson: Time scaling and amplitude scaling. Basically what you do isyou build it to do a function. You put some input in and then you get afunction of that input out and you concatenate these things with feedback.And at every point in this process you can’t go too high or you’ll clip.
Likewise there’s time scaling—you halve the frequency at different places ordouble the frequency in different places. And when you do that, a bunch ofthe linear scaling changes also. So if you have a simple job that doesn’t needscaling, analog is really great. But as soon as you need scaling it becomesvery, very complex. And so I wrote digital computer programs to scale theanalog computer setups. Without computing the actual wave forms, youcompute the amplitude and frequency of the wave form at every point. Andthen it tells you when you’re out of range for whatever operation you’redoing at that time.
Seibel: And the programs on the digital computer were written in assemblyor Fortran?
Thompson: They were assembly mostly. There was an interpretedlanguage that turned out to be too slow. That’s why I was forced to go toassembly and actually learn what the computer was.
Seibel: So load in your program, hit the run button, and away you go. Wasit using punch cards?
Thompson: No, no. It was a Flexowriter, which is like a Teletype andpaper tape. And you’d store it on paper tape and talk to it on theFlexowriter.
Seibel: Did they actually teach you assembly in that lab?
Thompson: Nah.
Seibel: What was your next exposure to programming?
Thompson: This G15 had an interpreter called Intercom 501. And thedouble-E class would program it in Intercom. There was a graduate studentthat I was friends with that wrote an interpreter for Intercom on the bigIBM machine, the big campuswide computing facility. I got a listing of thatand on vacation, Christmas or something, I read it and just dissected it. Ididn’t know the language it was written in. which happened to be NELIAC.And it was just a marvelously written program. And I learned programming,NELIAC, Intercom, and how to interpret something—everything—fromthat. I just sat and I read it for probably the entire vacation, a week. Andthen came back and asked him questions about it, nagging little bugs kinds ofthings. After that I knew how to program and I was pretty good at it. Then Igot jobs programming.
I was basically working my way through school, work-study and then oddjobs. I was a research assistant—a grunt for a graduate student to getprogramming done for his thesis. And I was a TA. I did programming for thecomputer center. Part of the computer-center stuff was to sit in a littlebooth and have people come in and say, “I only changed one thing.” “Well,let’s look at that one thing and see what happened to you.”