The origins of the word “program” in computing

The word program stems from the Greek prographein = pro (before) + graphein (write), meaning to write publicly. Eventually it evolved to the Greek and late Latin programma, relating to “public notice”. The spelling programme, established in Britain, is from French in modern use and began to be used early 19th century, originally in the “playbill” sense. This eventually evolved to program which is the word most often used in a computer context.

One might expect the computing related context of the word program to stem from the 19th century with the likes of Babbage. The work on his Analytic Engine contains no reference to the word, nor does the work of Ada Lovelace, which only describes “weaving algebraic patterns“.

If we looked up the word program (or programme) in a dictionary from the first half of the 20th century it would define it as “a regular plan of action in any undertaking“. By 1945 the development of ENIAC allowed for the computation of problem solutions based on a “program of operations” [3]. The ENIAC whitepaper [3] discusses the problem of “programming” the ENIAC, and uses the term “program” extensively, but in this context it really refers to the actions required to set up ENIAC for running a computation, in some way a precursor to programs in the modern context. This made sense as the ENIAC predated the use of even the most basic machine code.

In 1948 Goldstine and von Neumann [1] defined the coded sequence of a problem as a “routine”, rather than a program. By 1949 “Mathematics Dictionary“, define programming as “...the process of planning the logical sequence of steps to be taken by the machine.“. This made sense considering the definitions provided by David Wheeler (one of the designers of the EDSAC system) at the “Conference on high speed automatic calculating-machines” in 1949 [2]:

A PROGRAMME is a flowchart showing the operations (in block form) corresponding to the action of the calculator during the solution of the problem.
A ROUTINE is the programme written in the detailed code of a particular machine.

In this context, a routine was likely written in the instruction set of a particular system. A paper in 1950 described a program for playing chess [4] – “The computer operates under the control of a ‘program’. The program consists of a sequence of elementary ‘orders’“. The same author published an article in Scientific American [5] where a program is described as “a sequence of elementary computer orders“. The author also describes “sub-programs”. The program in this instance is still really just an “algorithm” converted to whatever instruction set was used by a particular computer.

The definition likely slightly changed with the appearance of early human-readable “high-level” languages such as Autocode. Brooker, who developed the Mark I Autocode ca. 1955, described “programs” as being written in an idealized language or “instruction code” which would then be converted by the machine to precise instructions [6]. In reality the use of the word “program” likely evolved from the idea of a set of operations, morphing to describe the precursor of an algorithm, and eventually to the code itself.

  1. Goldstine, H.H., von Neumann, J., “Planning and Coding of Problems for an Electronic Computing Instrument”, Part II, Volume III, The Institute for Advanced Study (1948)
  2. Wheeler, D.J., “Planning the use of a paper library”, in Proc. Conference on high speed automatic calculating-machines, p.36-40 (1950)
  3. Eckert Jr., J.P., et al., “Description of the ENIAC and Comments on Electronic Digital Computing Machines“, Moore School of Electrical Engineering, U.Pennsylvania (1945)
  4. Shannon, C.E., “Programming a computer for playing chess”, Philosophical Magazine, 41(314) (1950)
  5. Shannon, C.E., “A chess-playing machine”, Scientific American, 182(2), pp.48-51 (1950)
  6. Brooker, R.A., “The Autocode programs developed for the Manchester University Computers”, The Computer Journal, pp.15-21 (1958)

Leave a comment

This site uses Akismet to reduce spam. Learn how your comment data is processed.