Gary Kildall

Sketched portrait of Gary Kildall, operating system pioneer, creator of CP/M, and founder of Digital Research.

Gary Kildall (May 19, 1942 – July 11, 1994) was among the earliest individuals to recognize microprocessors as fully capable computers. Together with his invention of the BIOS(Basic Input Output System), his operating system allowed a microprocessor-based computer to communicate with disk storage. These inventions were fundamental to the success of personal computers. His life and many contributions to the field were cut short by his early death at the age of 52 from an accident.

Excerpts from the 1985 Interview in the Book

Gary came to meet with me in a conference room around noon. He is tall, with red hair and a trim beard, and he was wearing crisp new western-style blue jeans, a white cowboy snap shirt, and boots. Having just come from a weekend in Tahoe where, he confessed, he ate too much, he ordered a Diet Pepsi while the rest of us called for sandwiches. And with that, Gary, in his reserved and calculated manner, discussed programming with great seriousness and passion.

In fact, we had pulled him away from writing source code for his latest CD ROM encyclopedia project in order to do the interview. One reason he had started KnowledgeSet was so that he could get back to the nuts and bolts of programming, away from the management demands of his first company, Digital Research, which has grown so large. Gary often turned to the white board to draw diagrams or illustrate important points as he explained the meticulous, creative process he goes through to write code that makes computers perform.
INTERVIEWER: You taught programming at the Naval Postgraduate School. It’s difficult to teach problem-solving principles. How did you go about it?

KILDALL: On the first day in a particular data-structures class, I said, “We’re going to have a little test. Put your books on the floor and get a piece of paper. I want you to write a program that will symbolically solve differential equations. Given a polynomial, the program should differentiate the polynomial and produce the symbolic, not numeric, result.

So the students started writing away, thinking, and scratching their heads. This went on for about ten minutes, then I told everyone to stop. I asked them to think about how they approached solving that problem. What tools were they using? Were they starting to write a program? Were they thinking about mathematics? Were they starting to write little examples down? That whole quarter we worked with the techniques and tools of problem solving. Then, in the final exam, I gave them the same problem I had given them to solve on the very first day.

Excerpt 1:

INTERVIEWER: How would you characterize your own particular style of writing programs?

KILDALL: I follow very definite procedures which work for me, though they may not work for other people. I start with drawing the data structures, and I spend a lot of time thinking about them. I also think about what the program has to go through before I start writing code.

Programs are like mechanical devices; the way one piece of code works with another is very similar to the way one gear meshes with another gear. Building code is a little like building a transmission. The PL/1 compiler I wrote a few years back is a good example. People said it was impossible to write a compiler on a microcomputer, but after a couple years of work, it was considered one of the best optimizing compilers around.

Once the data structures are developed, I start writing small chunks of code that I improve and monitor along the way. Checking them as I go assures me that the changes I make are localized; and if I have problems, I discover them immediately. This whole process of iterative improvement requires speed, so for me at least, it’s very important to have fast edit, execute, and debug cycles. This method doesn’t work as well on a mainframe or a card-batch system because you can’t make small changes and check them out.

INTERVIEWER: Do you remember the first program you wrote?

KILDALL: Yes. It calculated the number of seconds between any two times of the day and any two calendar dates. That program is still around; every time I clean my desk I find it, like old clothes I find in my closet.

Excerpt 2:

INTERVIEWER: So when you were developing CP/M you had no idea it would be so successful?

KILDALL: No, I didn’t know CP/M would be such a hit, but it was very clear to me that floppy disks would be. I had been working with paper tapes for a year and a half. A floppy-disk drive was $500 and a paper-tape reader with a fancy punch was over $2,000. Just by looking at the cost comparison of the two drives, I realized the floppy disk would be a commercial success.

INTERVIEWER: Some programmers throw out code and start over when they run into extremely serious problems with their code. Do you ever do that?

KILDALL: No, because my problems never get serious enough to start over. I never would have been coding if I didn’t think I had the right data structure. Whenever I tear code apart, it is usually because the underlying data structures weren’t any good, not because of the algorithms I applied.

Excerpt 3:

Gary Kildall CP/M creator handwritten menu tree sketch from Programmers at Work showing the graphic structure of his Knowledge Retrieval System.
Gary Kildall CP/M creator handwritten menu tree sketch from Programmers at Work showing the graphic structure of his Knowledge Retrieval System.

Gary Kildall made this sketch during development of the Knowledge Retrieval System to provide a graphic picture of the menu tree design. The Appendix (pages 370–371) shows more details of this menu.