@inproceedings{mcgee_omnicode_1957,
	address = {Philadelphia, {PA}},
	series = {Journal of the Franklin Institute Monograph},
	title = {Omnicode — A Common Language Programming System},
	booktitle = {Automatic Coding: Proceedings of the Symposium on Automatic Coding, January 24-25, Franklin Institute, Philadelphia},
	publisher = {The Franklin Institute},
	author = {{McGee}, Russell C.},
	month = apr,
	year = {1957},
	pages = {57--70}
}

The “third language” of pseudocode. “The crux of what has been done in the past has been the introduction of a third language into programming — the first two being the language of the machine and the language in which the problem is formulated. (The following analogy is illustrated in Fig. 1.) Until very recently programmers have been like an American who can speak German who finds himself with a Frenchman who can speak Russian. In order to communicate with the Frenchman, the American must find a German who can speak Russian. It would be simpler if the American would learn to speak French or the Frenchman English but, of course, the American would rather have the Frenchman learn to speak English than learn French himself. Similarly, programmers would like computers and data-processing machines to understand the language in which their problems are formulated” (57).

[[proglang-fig-mcgee1957-p57-fig1]]

[[proglang-fig-mcgee1957-p57-fig1.jpeg]]

Definition of “automatic coding.” [F]or purposes of our discussion today, I should like to define automatic programming as follows:

  1. The development of a way of writing programs (a language) which is closely akin to the language in which problems are formulated.
  2. An assembly routine for translating this language to machine language.
  3. Accomplish 1 and 2 so that the expenditure in time, money and manpower from problem origination to solution is minimized.” (57)

Advantages of automatic coding: training. “Training is […] substantially reduced by using a common programming language. One teaches a programming system instead of a machine.” (59) “We have trained 45 engineers, physicists and mathematicians in 36 hours of classroom instruction. Most of these people had never seen a computer before taking our courses but were able to write, debug and run their own problems on the ‘650’ after this small amount of training.” (65)

Advantages of automatic coding: documentation. “We have arrived at a language which we feel is well suited for writing both scientific and commercial applications. We can take very little credit for this; for, after all, the language we are using is ordinary English with certain constraints applied to it by a programming form. […] The problems of documentation and communication that were present in symbolic and actual codes have been greatly lessened because OMNICODE programs are self-descriptive.”

OMNICODE. “In view of these considerations, our objective became to develop a common language for writing programs for solving scientific and commercial problems for any present and future machines at Hanford [the Hanford Works managed by General Electric at the Hanford Site].” (58)

Debugging in English too? “[A]ssuming that future versions of OMNICODE are completely successful, we will have solved only half the problem of communicating with the machine in English. Although we are confident that debugging will be reduced in future versions of OMNICODE, we are not so naïve that we think debugging will become a thing of the past. Hence, in order to complete the picture, we should be able to derive diagnostic routines whose output is in the same language in which the program is written. Or (if I may again be excused for over-endowing the machine with intelligence, we might say: We have taught the machine to understand English, now let’s teach it to write English.” (66)

Discussion section following paper

Extension of definition of “automatic coding.” John Carr, as moderator: “After hearing a definition of automatic programming, I should like to give you an extension of the automatic programming definition in rather crude terms, as to the direction in which I think the trend will go from here. First, the computer must, in addition to the job you have heard about today, be able to do the job of the automatic programmer. It must be able to manipulate its own language; it must be able to understand its own language; it must be able to add symbols to its own vocabulary that it will find of use to itself. […] I think the entire information which is available to the system now consisting of programming and computer must be made available to the machine alone. That is something that will come.” (67)