This vignette is primarily about an interpretive program I created for
IBM in 1956. In one of those "lessons lost" it has a lot to do with
today's JAVA language, 40 years later.
How? Well, JAVA is an interpreter, too. A form of language processor
that was supposed to have been obsoleted by compilers like FORTRAN and
COBOL.
I had found, as the JAVA people did, that interpreters were slow, slow!
And I created a preprocessor to modify the source so that every decision
that would be made exactly the same would be made once and for all at the
beginning, in the source program as modified. Hello, JIT compilers! The
latest way to run those slow JAVA programs. I'll accept your thanks, Scott!
[Note 1].
Leaving Lockheed Missiles and Space Division
In the summer of 1955 I was working at the Missile Systems Division of
Lockheed Aircraft Corporation, where I had started their computing section
from scratch. We had first a CPC, then 650's. And were looking forward to
a 704. In fact, I was the Lockheed MSD representative to the first meeting
of SHARE, in 1955 August.
But then a new research division was formed under a Dr. Ernst Krause. He
had hired his own computer chief, Dr. Werner Leutert (it may be strange
fate that, when I became Director of Systems Programming for UNIVAC some
6-plus years later, I replaced that same Dr. Werner Leutert).
My thought that PhDs were snobs was reinforced when all the new
people with doctorates were given a wooden title bar for their desks. I
complained to Bob Birdsall of personnel. He said he was sorry, but that
was how it was. "Not for me!", I exclaimed modestly. "For Dr. Middleton
of my department, who feels neglected". Name bar duly furnished. I
stuck a wire in it, topped with a ping pong ball painted with nail
polish as a bloodshot eyeball. Our Dr. Middleton's degree was in
optometry! He had gotten it after leaving the RAND Corporation,
where we shared the graveyard shift. But he wasn't that enamored
with the profession. I talked him into being a programmer again.
Anyhow, perhaps to be different, or to show that THEY were now in charge,
they preferred a UNIVAC 1103, and their influence won. I was left on
the old limb. Don Pendery, that great IBM Applied Science Representative
in the Los Angeles area (and later V.P. of Xerox) came to my rescue,
arranging an interview with Dr. Charlie DeCarlo in New York.
IBM Hires Me
Usually IBM did not like to hire from their customers. I was hired
because they eventually found out that one Dr. George Petrie had been
receiving many letters that asked "What are you going to do about
scientific calculation on the 705?", but had been stuffing them into
the back recesses of his desk. Eventually a large enough number of
prospective customers blew the whistle, and something had to be done for
this group. I.e., many users, even then, did both scientific and
commercial computing.
Charlie DeCarlo, then Director of Applied Science, knew of the work that
Bob Bosak and I had done on FLAIR for the 650. It seemed to match his
needs. So I went to New York to talk.
He took me to lunch at Reubens, where we had a few whiskey sours with
the famous original sandwiches. Afterwards we passed Mr. Watson, Sr.,
on the street, and he was tottering a bit. Both omens (good in the view
of this prehistoric hippie) settled any objections. I accepted
employment. At a going-away celebration at the DCA (Digital Computer
Association) meeting in Los Angeles, one Joe Sider said I would not last
6 weeks at IBM. It was 6.5 years.
PRINT I
The system I did to enable "scientific" computation on the IBM 705, an
originally "commercial" machine, was PRINT I. The name came from
"PRe-edited INTerpretive" Routine. DeCarlo was busier elsewhere,
apparently trusting me, so I was left in the managerial hands of Vice
President John McPherson. How the company handled my reporting line I
have no idea, but he was my boss in practice. With a very light
managerial touch, I should add.
I made two significant innovations with this system:
- Although an interpreter, like many systems of that era, the
interpreted program was not the program the user had written.
That program was processed and modified prior to its execution,
such that all decisions invariant with execution were already made,
so as not to be subject to any repetitive aspects of the usual
interpreter. As a compiler does. This first pass, prior to
actual execution, was a form of compilation.
- It was the first "LOAD-AND-GO" system in the world. Prior to this,
particularly for compilers, one had to run two separate processes --
the first to convert the program to the form the computer would
run from, and then a later submission of that form. This 2-step
process pretty much had its origins in punch card limitations.
I had the advantage of Austin Hoggatt and Richard Levitan being
assigned to me to write a mag-tape-based operating system. This
made it much easier to do the first process, write results to
magnetic tape, and immediately read the tape back in again to do
the actual program run. Thus "load-and-go", which was not to be
done again until IBM's GOTRAN (FORTRAN) system was created.
PRINT I was done quite quickly. I arrived at IBM about mid-December of
1955, presented a paper on it at the Western Joint Computer Conference
in February, and had it running quite well by late summer. It's
understating that I worked long hours. Once that same Don Pendery went
home late to Connecticut (on the last train out) and found me with
printouts all over the floor of the train.
Gul Hira was assigned to me directly. Dorothy Walsh was borrowed from
Computer Usage Corp. for documentation, and somewhere we found a New
York type called Ellie Krasnow. I put her to work on floating point
arithmetic.
Mrs. Krasnow was a bit opinionated, and did not know my bona fides, but
she learned. One day she came in with a floating point divide that took
51 instructions. Being a near perfectionist, and wanting the system to
run as fast as possible, I ventured that 51 was too many. She said "Oh
yeah? How many can you do it in?" "Oh - about 39". That did it; she
challenged me. Fortunately by the next day I was able to produce a new
routine that did it in just 39 instructions. She checked it out, and
from that day on it was a salute and "How many instructions should I
use?"
She was a good sport. Once she lost some card decks in the trash. She
borrowed a pair of coveralls from a janitor, dug into the pile, and
found her decks.
PRINT I design and checkout got a lot of help from a Bob Brittenham and
his employer A. O. Smith, from Dr. Jack Sherman at Texaco, and from
Standard Oil of Indiana, another user to be. My records show three
checkout sessions in Chicago, the only place we could get enough
machine time. At the end of July, early August, and a final in early
September.
In general PRINT I was a great success with IBM's commercial customers.
Studies from a few firms that had both 704 FORTRAN and 705 PRINT I showed
a remarkably good comparison in overall efficiency.
However, yours truly made a mistake he would never make again -- using some
unused bit positions in the address to speed up the processing. You
guessed it! As always happens, more storage or memory was needed and
supplied. The unused positions were no longer unused! PRINT I collapsed
for these larger systems. Fortunately I had already promoted a real
FORTRAN processor for the 705.
Sidelight
The PRINT I system established me as a IBM Headquarters authority. I once
received this "IBM-O-GRAM" (an internal telegram) saying:
"Dear Mr. Bemer:
Please send me:
- The times to do commercial problems on the 704.
- The times to do scientific problems on the 705.
Dr. X, Applied Science Representative"
I was so stricken that I could not reply, so I just framed it, and
hung it on the wall.
NOTE 1: My knowledge of JAVA and JIT first derived from a paper by
Andy Johnson-Laird.
See
"Kewl Technologies: Hot Issues For The Law", because it's a great article
about many legal issues!
Back to History Index
Back to Home Page