CHM Ref:
X5142.2009
© 1980 Computer History Museum Page
6
of 54
1943-1949: Mark I, II, and III Computers at HarvardError! Bookmark not defined.
Grace Hopper:
[I started to work on the] Mark I, second of July 1944. There was no so
such thing as a programmer at that point. We had a code book for the machine and that was all.
It listed the codes and what they did, and we had to work out all the beginning of
programming…and writing programs and all the rest of it.
We stayed there through the building of Mark II and Mark III. What was carried over from Mark I
was that, after a while, each of us began to build a notebook, what turned out to be subroutines.
We didn’t know they were; we called them programs.
If I needed a sine routine, angles less than five over 4, I’d call over Dick Bloch* and say “Can I
copy your sine routine?” We’d copy pieces of coding.
Angeline Pantages: What was your function with the Mark series?
Hopper:
I was a mathematical officer. We did coding, we ran the computer, we did
everything. We were coders. I wrote [programs for] both Mark I and Mark II. Commander
[Howard H.] Aiken came up to my desk one day and he said, “You’re going to write a book.” I
said, “I can’t write a book.” And he said, “You’re in the Navy now.” And that settled that, and I
learned to write a book.
Pantages:
When you look back at that period, did you have a sense of history or was it an
evolution?
Hopper:
It was a steady evolution to doing things easier and better, more correctly. Dick
Bloch was the only person I ever knew who could write a program in ink correctly the first time.
He could, we did. And, I guess during those years, up as far as 1946, we didn’t think ahead.
The whole thing was the war, the end of the war, getting a job done, terrific pressure. We didn’t
think ahead at all.
It wasn’t until after that that we ran the first problem for Prudential. This was when we used two
digits to indicate alphabetic characters on Mark I. They (Prudential Insurance) were the first
ones to try to do anything in data processing on a computer. . We ran a program for them – I’ve
forgotten what it was about – but we used two digits to show each alpha character. Mark I was
only numeric, it had no alpha. That opened up a new perspective that none of us every thought
of. It was totally new.
[U.S. Navy ensigns Richard Bloch and Robert Campbell began working on Mark I in 1943, while
it was still being assembled at IBM, and were involved in programming, development, and
maintenance at the laboratory for the next few years. Both moved on to Raytheon. Bloch later
CHM Ref:
X5142.2009
© 1980 Computer History Museum Page
7
of 54
went to GE to develop large systems, while Campbell went to Burroughs, as a systems analyst,
and to Mitre Corp.]
[Further discussion on this era begins on page 21.]
1949-1964: Eckert and Mauchly, Univac, and the One-Pass Compiler
Hopper:
Then in 1949, I was at the end of my time at Harvard, and I joined Eckert and
Mauchly [at the Eckert- Mauchly Computer Corp.]. John Mauchly hired me. Again, we built up
those pieces of coding.
It was not until 1951 when I was given the assignment to collect them all together so that we
would have a library of subroutines that we could all use, and some means of getting at it. Now
by then we had the book from Wheeler, Wilkes, Gill, and they had their whole family of
subroutines for the EDSAC, remember?
[Maurice V. Wilkes, David J. Wheeler, and Stanley Gill – professors at the University of
Cambridge and builders of EDSAC, the first storage program computer – authored “The
Preparation of Programs for an Electronic Digital Computer,” in 1951. This is the first textbook
written on computers, programming and software.]
As far as I was concerned there were two problems. One was you had to copy these darn
things, and I sure found out fast that programmers can not copy things correctly. On Univac I we
used a “delta” for a space, and if he wrote a careless delta it could look like a 4. We also put a
decimal in Univac I. Any number of people used Bs that turned out 13s. Programmers couldn’t
copy things correctly.
On each of these routines they started with zero, which when you put them into a new program
you had to add every one of the addresses to position it in the new program. Programmers
could not add.
There sat that beautiful big machine whose sole job was to copy things and do addition. Why
not make the computer do it? That’s why I sat down and wrote the first compiler. It was very
stupid. What I did was watch myself put together a program and make the computer do what I
did.
And that’s why it was a single-pass compiler and that always astonishes everybody. Because
obviously you couldn’t do that, because you’d run into a place where in the flowchart, for
instance, you could have two kinds of tests. One would jump back to somewhere you’d been
and you knew where you put that program piece, but you would have another test that jumped
forward and you haven’t processed that yet, so you didn’t know where it was going to go.