Interview to Gary Kildall



Hello all!

I have found this interview in the internet. I believe that it is very
interesting.

Best regards,

Source: http://www.sourcesystems.net/gary_interview.html

--- begins here ---

Developer Resources / Network

Gary Kildall

ProgrammersAtWork/GaryKildall
(From http://web.archive.org/web/20010222060611/www.rjh.org.uk/PAW/m1105.htm)

As the founder and chairman of the board of Digital Research, Gary A.
Kildall developed the first operating system for a microcomputer
during 1972 and 1973. He called it the CP/M (Control Program/Monitor)
operating system and it became his company's first product. In
addition, he designed the DR Logo programming language for the IBM PC
and he developed PL/1, one of the first high-level languages for
microcomputers.

A native of Seattle, Kildall was born on May 19, 1942. He received his
Ph.D. in computer science from the University of Washington in 1972.
He then joined the Navy and taught computer science at the Naval
Postgraduate School in Monterey, California, where he continued to
teach after his discharge from the Navy.

In 1984 Kildall formed a new company called Activenture Corporation
(recently renamed KnowledgeSet Corporation) to explore the potential
of optical-disc publishing. In 1985, Activenture announced they would
publish Grolier's Encyclopedia in a CD ROM format. Kildall retains the
position of chairman of the board at Digital Research along with his
position as president of KnowledgeSet Corporation.

We went to Digital Research on a Monday morning via Highway 1 along
the California coastline. The scenery is some of the most spectacular
in the country and the coastline is dotted with more resorts than
computer-related businesses. Digital Research and KnowledgeSet, both
started by Gary Kildall, are two of the few high-tech companies in the
area. I couldn't help but wonder how one could coop oneself up in the
characteristic dingy, dimly lit office to write source code, knowing
that such stunning beauty was right outside the door. But Gary Kildall
seems to have no difficulty devoting attention to his work, and
appreciating the surroundings during his leisure time. Kildall likes
to work and play equally hard. His "toys" include a new Lamborghini
Countach, a Pitts aerobatic biplane, and a Rolls Royce.

Gary came to meet with us 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 at the Naval Postgraduate School. If you were
to go back and teach again, would you teach any differently?

KILDALL: Probably not, because I don't program any differently now
than when I was teaching. I would teach the course I enjoyed most, the
data-structures course. It goes back to the fundamentals of
programming: simplifying the problem. Part of the programming process
is general problem solving. How do you solve a problem that's complex,
whether it's designing a computer program or constructing a building?
You start at the point where you think it's too hard to solve, and
then you break it down into smaller pieces. That's what I try to
teach.

INTERVIEWER: 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.

INTERVIEWER: What were the most important principles your students had
learned when they completed your classes?

KILDALL: I taught two things that are important for students to learn:
problem solving and how to study. Knowing how to study takes care of
getting through tests and leads to other school-survival skills. And
if you learn how to solve problems, you can go through life and do
pretty well.

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 prefer to work in an interpretive environment?

KILDALL: No, I don't like existing interpreters very much. I'd like to
have one for a systems language like C that would parallel an existing
compiler, but it's still questionable how well that would work,
because most systems programs are performance-oriented or timing-
dependent. If I had a very effective interpreter--something like I
used when I developed PL/M, or now maybe C--an interpreter might be
worthwhile using.

INTERVIEWER: How did you get interested in programming?

KILDALL: I originally planned to be a high school math teacher, and
started taking math courses at the University of Washington. But a
friend of mine had this FORTRAN statement card, showed it to me, and
told me it was going to be a really big thing. I became so intrigued I
had to get into it. So I took an assembly-language programming course
and FORTRAN right after that, and I was hooked. I found I liked
programming for the same reasons I liked to build models, cars, and
things of that sort. I found constructing a program to be a similar
experience.

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.

INTERVIEWER: What about the first professional program you wrote?

KILDALL: I wrote it at the navigation school my father owned. We used
to prepare tide tables by hand for one of the local publishing
companies in Seattle. I wrote a FORTRAN program that calculated the
tides. It was the first program I made money on--$500 or so.

INTERVIEWER: So how did you happen to begin working on the CP/M
operating system?

KILDALL: The operating system was actually just a little fragment of a
very large project. I was working with XPL, a language for mainframe
computers, written by Bill McKeeman at Stanford. I developed a similar
language called PL/M, a programming language for microcomputers. I was
trying to get PL/M to run resident on the 8080 microprocessor, and I
had to write an interface to communicate with a disk drive. It turned
out that the operating system, which was called CP/M for Control
Program for Micros, was useful too, fortunately.

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 comparision 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.

INTERVIEWER: Do you use comments when you write code?

KILDALL: Rarely, except at the beginning of procedures, and then I
only comment on the data structure. I don't comment on the code itself
because I feel that properly written code is very much self-
documented. Once I get the algorithms down, I start writing code
directly on the machine. I don't even write it on a piece of paper
before it goes into the computer; it just doesn't seem necessary. The
actual coding process has always been a little scary for me because I
don't know if I'm writing the right code, nor do I know what I'll
write next. It just seems to come out. Sometimes I realize the code's
not exactly right, but I also realize intuitively that it will relate
to something else--it will factor out and become right even if I don't
know exactly how at the time I'm writing it.

The magical part is that, at some point, all at once the whole thing
comes together. It's like taking a logical Boolean expression that
simplifies and simplifies until, bam, you've got it. When I reach the
point where the code coalesces, I'm certain the program will work, and
I also have no doubt I did it about the best way it could be done. I
don't completely understand the process, but it sure seems to work for
me, even when I make fairly massive changes to data structures and
algorithms.

INTERVIEWER: Is writing code always an unknown and difficult process?

KILDALL: No. When I code without pressure to meet a deadline, it's
very relaxing. Sometimes when I'm scheduled for a long plane ride,
I'll take a little portable along and code just for fun. In fact, even
when there's a deadline, it's fun to sit at a terminal and let the
code flow. It sounds strange, but it just comes out of my brain; once
I'm started, I don't have to think about it.

INTERVIEWER: Have you ever been unable to get the code to work just
the way you envision?

KILDALL: There are very few cases where someone has gone into my code
and said, "We could have done it a lot better," but there are times
when it just doesn't come together. The editor in the DR Logo
interpreter is a good example. I had some pieces of code I knew were
not quite right--it worked fine but hadn't factored out correctly and
just wasn't right. The engineers who took over the code zeroed in on
that piece of programming, but we didn't have time to make changes
because we had to get the product out. That's the kind of thing you
hope never happens, but it does sometimes, so you go back and fix it,
and learn something about your style.

INTERVIEWER: Do you think programming is something you can practice as
you would practice the piano?

KILDALL: Well, you can practice in a sense. Seymour Papert has this
notion that kids learn to be inventive by tinkering with gears and
other mechanical gadgets. The skills you learn and practice with this
kind of play carry over into other areas. Papert is certainly talking
about my childhood experience. My father was a great craftsman. I used
to stay and watch him by the hour, and then I would go outside and try
to imitate him with my own hammer and nails.

Data structures, which are the foundations of programs, are mechanical
by nature, like the things I played with as a kid. So, in that sense,
I practiced programming. The big difference is that building something
out of wood or steel takes hours of labor; if you don't do it right,
you have to go back and rebuild. Programs can be altered instantly.

INTERVIEWER: How else can you build your repertoire as a programmer?

KILDALL: You need to study other people's work. Their approaches to
problem solving and the tools they use give you a fresh way to look at
your own work. You need to learn only a small set of procedures before
you can write a program. For example, when you're writing compilers,
the first thing you write is a scanner, which is a little tool you use
a lot. Once you learn those tools, it becomes a matter of putting
pieces together. You grab pieces from here and there and stick them
all together. Looking at programs others have written gives you new
ideas for constructing coherent code. That's why, as a teacher, I
spent a lot of time with students showing them clean algorithms I had
picked up.

INTERVIEWER: You've talked about how you taught others. Has anyone or
anything influenced your style of programming?

KILDALL: I'm very pragmatic. I like to build programs that are fast
and small, and use clear, concise algorithms. I learned that style
from the early Burroughs 5500, a very advanced machine for the day,
which was based upon the ALGOL philosophy of block-structured
languages. The ALGOL compiler was probably one of the nicest pieces of
code to come out at that time. I spent hours trying to fix and change
the compiler. Working with it so closely affected the way I think
about programming and had a profound influence on my style.
Fortunately, the ALGOL philosophy became the basis for design of
popular languages like Pascal and C, so the style works for me.

INTERVIEWER: One hears stories about the crazy hours programmers keep.
How about you? Do you have a certain routine?

KILDALL: My pace varies during the development of the program. At some
points, the code gets explosive and I have everything inside my brain
at one time: all the variable names and how they relate to one
another, where the pointers start and where they end, disk access, et
cetera. All sorts of things go on in my brain that I can't put on
paper simply because I'm always changing them. I'd spend more time
writing than I would coding, and I'd never get the project done in a
reasonable amount of time.

When the data structures are so new, they require intense
concentration to keep them organized in your head. So at this point in
the process, I'll usually start at 3:00 a.m. and work until maybe 6:00
p.m. Then I'll have dinner, go to bed early, get up again pretty early
in the morning, and keep banging on it until things are calmer.

During the calm times, when my pace is more relaxed, I come up with
solutions for the next phase. When I'm trying to solve a problem that
has a series of steps, I take them in order, one at a time--step A,
step B, then step C. I've tried, but I just can't work on C until B
has been Completed.

I take short vacations during the lulls because I like to enjoy life,
too. That's the time I go out and fly airplanes just to get away. It's
good for my work, because I always come back with some fresh ideas.

INTERVIEWER: Does your flying airplanes have any other impact on your
programming?

KILDALL: I certainly hope my program planning is better than my
flying. I've heard that quite a few programmers are also fliers. I
know Charles Simonyi flies a helicopter. And both Fred Gibbons and
Vern Rayburn were very interested in flying.

Programmers like flying a plane because it is a mechanical process
just like programming. Also, people who like computers like gadgets,
and airplanes are just loaded with gadgets. They've got all the dials
and wheels and knobs you could ever want to play with. You get to play
a little dangerously because it's the real thing, not just a video
game. Computers are very abstract, but airplanes are real.

INTERVIEWER: Do you ever get tired of programming?

KILDALL: I don't think of my work as tedious, if that's what you mean.
When I go on vacation I look forward to returning to work. The only
time I don't want to come back is when the code explodes. Then it
becomes tough because I'm working under pressure to get the code back
together. When you've got the code all ripped apart, it's like a car
that's all disassembled. You've got all the parts lying all over your
garage and you have to replace the broken part or the car will never
run. It's not fun until the code gets back to the baseline again.

INTERVIEWER: Do you find anything aesthetically pleasing in your work?

KILDALL: Oh, absolutely. When a program is clean and neat, nicely
structured, and consistent, it can be beautiful. I guess I wouldn't
compare a program with the Mona Lisa, but it does have a simplicity
and elegance that's quite handsome. Stylistic distinctions of
different programs are intriguing, very much like the differences art
critics might see between Leonardo's Mona Lisa and a Van Gogh. I like
the LISP programming language so much because it's so pleasing.
There's a concise form of LISP called the M expressions. When you
write an algorithm using M expressions, it's so beautiful you almost
feel it could be framed and hung on a wall.

When I was working on my Ph.D. thesis, I was trying to solve a
difficult global flow analysis problem. I knew there had to be a
solution, but I just couldn't crack it. Finally, when I got a clean
mathematical model, I coded the algorithms in LISP. The program took
only two hours to write, and it was beautiful; it did exactly what I
wanted it to do. At that point, I had no direct proof the program
worked, but every example I ran through LISP was functioning the way I
expected. I wrote the same program in XPL, which is a systems language
for running compilers. Later, when I got proof that the program was
correct, I found it was based on the concepts of the very pretty LISP
program, not the concepts developed in the relatively ugly XPL
program.

INTERVIEWER: Do you consider programming to be an art or a science?

KILDALL: There certainly is some art in it. But a lot of programming
is invention and engineering. It's much like a carpenter who has a
mental picture of a cabinet he's trying to build. He has to wrestle
with the design and construction to get it into a physical form.
That's very much what I do in programming.

Programming has some science as well, though not a lot. Experimental
science means you hypothesize, try things, and compare results, and in
that way programming is science. You may have a concept of how a
retrieval system should work, but it's not until you run it with
sufficient data that you can see the mechanism operating and get some
statistics.

But remember, I'm in one special area of programming: compilers,
operating systems, retrieval, and other system software. A programmer
who specializes in graphics, for example, may have an entirely
different view of the programming world. Because graphics programmers
are dealing more with the physical world--talking about the way light
sources affect objects, for instance--there may be a lot more
mathematics and science involved in their work. You know, I also think
programming is very much a religious experience for a lot of people.

INTERVIEWER: What do you mean when you say programming is a religious
experience for a lot of people?

KILDALL: Well, if you talk about programming to a group of programmers
who use the same language, they can become almost evangelistic about
the language. They form a tight-knit community, hold to certain
beliefs, and follow certain rules in their programming. It's like a
church with a programming language for a Bible.

FORTH is a good example; it's a programming language that is probably
close to being a religious experience for many people. When FORTH
first came out, its disciples claimed any algorithm could be done ten
times faster. That was a typical claim. If you argued that point or
any other, you found yourself talking to a brick wall and you
definitely weren't allowed in the church. Now I don't mean to be
derogatory about the people who use that language. It's a very
supportive group and a very effective language, but the discussions
were not based on reason. They were based on belief. By saying this,
I'll probably get about a thousand letters about FORTH and the
religious experience people are having over it. But I'm not putting
myself in a special category either; I can preach about the wonders of
LISP all day.

INTERVIEWER: What do you think will be the future role of computers?

KILDALL: Basically, our technology tends to simplify mechanical
processes. That's why computers have been so successful: We take
things normally done with cogs, wheels, and relays, and do them with
vacuum tubes and then with semiconductors. Look at automobiles, for
example. More and more of the processes in the automobile, like in the
1984 Corvette, are being turned over to the semiconductor or its
equivalent. When semiconductors take the place of speedometer cables
and tachometers, they turn the car into a less expensive and more
reliable product that is easier to produce. Computer systems are going
through identical changes right now; the hard disk drive is a
mechanical device. Because it is mechanical, we know it will
eventually go away. We don't know how it will go away, but we know
it's a prime target.

Some gadgets and processes will continue to function mechanically,
such as wheel bearings on cars, because it's pretty hard to make those
from a semiconductor. But many other things in our daily lives will go
through the transition from mechanical to electronic. The print
industry is a good example; CD ROMs and optical storage are becoming
important there now. Computers help to get away from the mechanical
processes of printing: running printing presses, laying out and
pasting up by hand, setting up the cameras. The semiconductor will
take over the mechanical process. But computers won't stop there.
Right now they control the production of print but not the actual
display of information.

Right now, a very big bottleneck--one of the reasons why the personal
computer industry is in the doldrums--is that we have a difficult time
thinking about what to do with computers once we get past spreadsheets
and word processing. We don't know what the next step is. We're stuck.

It goes back to what I was saying about the dependence of programming
on beliefs rather than reason. Ultimately the problem is that we, as a
society, took the big computers that we understood and applied their
underlying architecture, languages, and concepts to the development of
microcomputers. As we move toward using computers as controllers, we
will find that communication between processors will become more
important than the processes they are carrying out. Then we will be
forced to change the way we code. That will be a very slow
evolutionary process.

INTERVIEWER: So the future really depends on our ability to free
ourselves from old patterns of thinking?

KILDALL: I felt strongly in the early days of microprocessors that
they should be used primarily as embedded processors, talking to one
another and coordinating the transition from mechanical to electronic
processes. That's where I felt the computer industry was going. I saw
them as replacements for random logic, with engineers being the
primary users of these small machines. In fact, someone from Lawrence
Livermore Labs suggested I develop a BASIC for the microcomputer--that
was probably in 1974. I told him that was the most stupid idea I had
ever heard. Who would want to do a BASIC for microprocessors when they
were being put into such tools as inventory-control systems, cathode-
ray tube displays, and word processors? Obviously, I was wrong about
that. It turns out that one of my thesis students, Gordon Eubanks, did
very well with C BASIC, as did Paul Allen and Bill Gates.

Somehow we have to break loose from the ways we think about
microcomputers if we want to stimulate advances in computers. People
at home don't want to buy another computer system. They bought one and
there was no real use for it. They don't want to be ripped off again.
And we're talking about 95 percent, not 5 percent, of computer users.
There are 16 million television sets sold every year; there's no
reason why we shouldn't sell 16 million gizmos with embedded
microprocessors.

INTERVIEWER: You mentioned CD ROM a minute ago, and its potential
impact on the printing industry. Will it have any other role in the
evolution of computers?

KILDALL: Optical storage will clearly pull the computer industry in a
new direction. When we worked with floppy disks, we were just making
little machines out of big machines. And we haven't yet gone a whole
lot farther than that today.

Optical storage is completely different. We're not talking about
computing anymore; we're talking about putting information into
people's hands. People now might buy personal computers because
somebody else told them they should, but with optical storage, people
will buy computers because they want the information. Computers will
be competing more with publishing.

INTERVIEWER: So information could take the form of an electronic
encyclopedia, like the one you're putting on CD ROM? How do you
envision the design--both the retrieval system and the enhancements?

KILDALL: I take the concept for the initial product, get an overall
idea of what I want to do, and start coding right from the nucleus,
letting it expand in the direction it flows. As long as I don't limit
the fundamental data structures, features can be added. We did a
videodisc called the Knowledge Disc, which carried over nicely into CD
ROM retrieval systems. All text was done with bit-mapped fonts at the
pixel level. A very nice side effect of working with pixels is that
pictures go into the whole thing very cleanly and nicely. So we don't
have to go back and do total redesigns of anything to add images to
text that already exists on the CD ROM.

It's a problem if the design doesn't let you add features at a later
date. If you have to redo a program, the hours you spend can cause you
to lose your competitive edge. A flexible program demonstrates the
difference between a good designer and someone who is just getting a
piece of code out.

Right now, we're going full speed ahead just to blast as many people
out of the water as we possibly can. We're hoping to be ready by the
first part of 1986. Economically, we have no choice but to go fast and
to use this technology. It's the best. Then we make sure that we
license the rights to it.

INTERVIEWER: Are knowledge systems part of where you see the home
market going?

KILDALL: Yes. People don't usually go home to work. Some tasks people
do at home are related to work, like keeping track of taxes or running
a little home business. But mostly they go home to relax. I think
games and entertainment are valuable. We have a lot of trouble
figuring out how to entertain people at home. And TV does a good job
right now; competing with "Dynasty" is extremely difficult.

One possible computer application is something to help kids study. My
fourteen-year-old daughter is taking some hard courses and she needs
help studying. Computer applications like that would give me a direct
benefit: My child does better and that helps her in the future. That's
clearly an important area for development.

Another area for development is providing general information about
selected subjects, such as medicine. People go to doctors for many
reasons. Some are psychological. But sometimes they only want medical
information. It costs a lot to go to the doctor, and if people had
less expensive ways to access that data, they would. Here's another
example: When I want a car, I try and shop L.A., San Francisco, and
San Jose to get the best prices. But it's virtually impossible to get
the facts about car dealers because people who don't want you to be
able to shop like that are protecting the information. I'd be a
candidate for that information because it could save me thousands of
dollars, not to mention a lot of time. I'd pay a reasonable amount to
get it.

We want to develop applications that will give people a definite
economic advantage if they buy them. That's why we went for an
encyclopedia as the first CD ROM application. Everyone knows
encyclopedias usually cost about $1,000. Someone can rationalize
buying a computer that has the encyclopedia, if it's in the same price
range as the printed encyclopedia.

INTERVIEWER: How friendly will this machine be?

KILDALL: Well, I don't think it's a matter of friendliness, because
ultimately if the program is going to accomplish anything of value, it
will probably be relatively complex.

Some people suggest that machines would be friendlier if input could
be in a natural language. But natural language is probably the worst
kind of input because it can be quite ambiguous. The process of
retrieving information from the computer would be so time-consuming
that you would be better off spending that time getting the
information directly from an expert.

Expert systems will be the ultimate in user friendliness. But we're a
long way from having the expert in the box. The doctor-in-a-box,
although a phenomenal product, is incredibly complex. It would have to
be perfect. Someday, we'll have programs like that. I just don't know
how far off they are, and there are lots of problems to solve along
the way, but that's the fun part.

Gary Kildall made this sketch during development of the Knowledge
Retrieval System to provide a graphic picture of the menu tree design.

---- ends here ---

.


Loading