But maths turned out to be a bit too hard because Cambridge is stuffedwith extremely brainy mathematicians so I switched to electrical sciences.
Seibel: And electrical sciences—that’s what we’d call electrical engineeringin the U.S.?
Peyton Jones: That’s right. At that stage my same friend that I was atschool with, Thomas Clarke, was also here at Cambridge. So Thomas and Ibuilt various computers. You would buy yourself a microprocessor and lotsof 7400 series TTL and wire it up. Our biggest problem, I remember, wasprinters. Printers and screens. Those were the hard bits.
Seibel: Because they’re expensive.
Peyton Jones: They’re so expensive—yes. You could get the electrical partsfor the kind of money students could afford but printers were typically big,fridge-sized line printer things. They had a lot of mechanics in them that madethem completely out of our price bracket. That and storage devices—any kind ofpermanent storage device tended to be tricky. So we tended to have computerswith a keyboard, a screen, and not much else. And some kind of primitive tapemechanism.
Seibel: You guys were building these computers from scratch in ’76 to ’79.Isn’t that about the same time the Altair was coming out?
Peyton Jones: That’s right. Hobbyist computers were definitely starting tocome out. But we considered those to be rather cheating.
The thing about this machine that we built ourselves was that software wasthe problem. I think my most advanced program for this machine wasConway’s Game of Life. That worked very nicely. But writing any kind ofserious program, like a programming language, was just too much workbecause it had very limited permanent storage medium. And it was all typingin hexadecimal stuff—no assembler.
Seibel: So more raw machine code.
Peyton Jones: Of course the Cambridge mainframe understood BCPL sowe were writing lots of BCPL programs. We were actually writing acompiler then for a programming language that we’d invented. We nevercompleted this compiler—it was very elaborate. There were these twocompletely divorced worlds. Writing compilers in a high-level language for amainframe and diddling with hardware on the other end.
Seibel: What was the first interesting program you remember writing?
Peyton Jones: A program to extract 24-digit square roots on this schoolscomputer and fit it into 99 memory locations.
Seibel: So you had one spare!
Peyton Jones: That’s right. It was some kind of Newton-Raphsonapproximation to do square roots. I was terribly proud of it. What afterthat? I suppose the next scale up must have been this compiler that wenever completed. It was written in BCPL and it was extremely elaborate.We were extremely ambitious with it. There was no type system so we justhad enormous sheets of printout with pictures, diagrams of structures andarrows between them.
Seibel: You mean in BCPL there was no type system.
Peyton Jones: Yeah, that’s right. So essentially we wrote out our types bydrawing them on large sheets of papers with arrows. That was our typesystem. That was a pretty large program—in fact it was over ambitious; wenever completed it.
Seibel: Do you think you learned any lessons from that failure?
Peyton Jones: That was probably when I first became aware that writing areally big program you could end up with problems of scale—you couldn’tkeep enough of it in your head at the same time. Previously all the things Ihad written, you could keep the whole thing in your head without anytrouble. So it was probably the first time I’d done any serious attempt atlong-standing documentation.
Seibel: But even that wasn’t enough, in this case?
Peyton Jones: Well, we had a lot of other things to do, like get degrees.This was all between 9:00 p.m. and 3:00 a.m.
Seibel: And is there anything you wish you had done differently aboutlearning to program?
Peyton Jones: Well, nobody every taught me to program. I’m not sure Iever really missed that. Today I feel as if my main programming blank spot isthat I don’t have a deep, visceral feel for object-oriented programming. Ofcourse I know how to write object-oriented programs and all that. Butsomething different happens when you do something at scale. When youbuild big programs that last for a long time and you use class hierarchies in acomplex way and you build frameworks—that’s what I mean by a deep,visceral understanding. Not the kind of stuff that you’d learn immediatelyfrom a book.
I feel that as a lack because I don’t feel I can really be authoritative aboutwhat you can and can’t do with object-oriented programming. I’m alwaysvery careful in what I say, particularly not to be negative about imperativeprogramming because it’s an incredibly sophisticated and rich programmingparadigm. But somehow because of the way my life developed, I never reallyspent several years writing big C++ programs. That’s how you get somekind of deep, visceral feel and I never have.
Seibel: I think that feeling is usually revulsion.
Peyton Jones: That’s right—but it’s a well-informed revulsion rather thana superficial, “Oh, that sucks” kind of revulsion.
Seibel: So you finished your three years at Cambridge, then what?
Peyton Jones: Then I thought, “Alright, better do a little bit of work oncomputing.” So I spent one year doing a postgraduate diploma in computerscience—my sole formal education in computer science.
Seibel: Is that kind of like a master’s degree?
Peyton Jones: Kind of like a master’s degree. I had a great year. I suspect itwas very similar to the computer science tripos, the undergraduate degree.But it was intended for students who hadn’t done any other computerscience.
Seibel: Then you spent a couple years in industry before getting back intoresearch. What were you doing then?
Peyton Jones: That was a very small process control and monitoringcompany. We built hardware and software that sat in microprocessor-basedcomputers that were physically sitting in weigh scale controllers forconveyor belts. One thing I built watched a load cell on a conveyor belt thatcarried coal; it controlled the speed of the belt and listened to what theload cell was saying and adjusted the speed to make the flow rate what itshould be. It was a little real-time operating system, which I wrote in alanguage called PL/Z. It was a little bit like Algol. I wrote it on a Z80machine that ran a sort of cut-down Unix called Chromix.
It was a very small company—it was like half a dozen people. Varied up to15 at times. But because it was small everything was quite volatile.Sometimes we had plenty of money, other times we had none. After twoyears I’d decided that the entrepreneurial life was not for me. This was mymain insight about small companies: to be an entrepreneur you need to getenergy from stressful situations involving money, whereas my energy issapped by stressful situations involving money. My boss was the managingdirector of this company. The worse things got, the more energetic hewould be. He’d come bouncing around and he’d have new technical ideasfor software. He was just as happy as a bee. And I realized, that’s what youneed, because if it saps your energy, you spend your whole time in a slump.
So I decided that was all much too hard work and looked around for a joband ended up getting a job as a lecturer at University College London. Andwhen I was there I had no PhD, I had no research training. So my head ofdepartment gave me time off to do research. Gave me a light teaching loadso I could get my research gig started. But I hadn’t the faintest idea what todo. So I would sit in my office with a blank sheet of paper and a sharpenedpencil and wait for great ideas. And there was this sort of silence while Iwould sort of stare around the room waiting for great ideas to come. Andnothing much would happen.