my last request for certifications yielded nothing. so, i repeat: will you please certify me? thank you.
-Grace Murray Hopper, 1978
Between October of 1951 and May of 1952 I wrote a compiler. Now, there was a curious thing about it: it wasn't what you'd call one today, and it wasn't what you'd call a "language" today. It was a series of specifications. For each subroutine you wrote some specs. The reason it got called a compiler was that each subroutine was given a "call word", because the subroutines were in a library, and when you pull stuff out of a library, you compile things. It's as simple as that.
The program was a program which, given a call word, pulled a particular subroutine. Following the call word were the specifications of the arguments and results which were to be entered into the subroutine with no language whatsoever. The programs were butted, one bang against another. There was no attempt, really, at optimization. Because it was designed to let people write quickly the specs for a mathematical program, one time usually -- one-time execution, and get an answer fast. And the main purpose was to get programs out fast, and get answers fast.
One of the reasons that we had to write programs faster, I think some people have forgotten. Mark I did three additions every single second, 23 digits to 23 digits. If you go back and look at the newspapers and magazines, you find she was the most fantastic thing man ever built. By the time we got to UNIVAC I, it was doing 3,000 additions every second, and it was chewing up programs awful fast. And the programmers had not accelerated in an equal degree! It was perfectly clear that we were going to have to produce programs faster.
There was also the fact that there were beginning to be more and more people who wanted to solve problems, but who were unwilling to learn octal code and manipulate bits. They wanted an easier way of getting answers out of the computer. So the primary purposes were not to develop a programming language, and we didn't give a hoot about commas and colons. We were after getting correct programs written faster, and getting answers for people faster. I am sorry that to some extent I feel the programming language community has somewhat lost track of those two purposes. We were trying to solve problems and get answers. And I think we should go back somewhat to that stage.
We were also endeavoring to provide a means that people could use, not that programmers or programming language designers could use. But rather, plain, ordinary people, who had problems they wanted to solve. Some were engineers; some were business people. And we tried to meet the needs of the various communities. I think we somewhat lost track of that too. I'm hoping that the development of the microcomputer will bring us back to reality and to recognizing that we have a large variety of people out there who want to solve problems, some of whom are symbol-oriented, some of whom are word-orientred, and that they are going to need different kinds of languages rather than trying to force them all into the pattern of the mathematical logician. A lot of them are not.