compiler; the âhuman coderâ was not theFORTRAN programmer but the programmer in the 704âs assembly (or machine) language. Vocabulary was being refined.
Soon after the preliminary report was written, Backus and two of his language code-signers gave talks on FORTRAN to groups of IBM customers in various citiesâcustomers who had ordered the IBM 704 (which had been announced around May 1954). By and large, they found their audience skeptical about this new prospect. 41
The design and implementation of the FORTRAN compiler (still called
translator
, at the time)âwritten in the ânativeâ language of the IBM 701 that would execute the compilerâbegan in earnest in early 1955. 42 By summer 1956, âlarge parts of the system was working.â 43 The complete compiler was available in early 1957. 44 Also in summer 1956, David Sayre (1924â2012), a PhD in crystallography from Oxford University, began writing a document describing the language. The outcome was the
Programmerâs Reference Manual
(1956). 45 In early 1957, Backus and his whole group presented a paper on the FORTRAN system at the Western Joint Computer Conference in Los Angeles, California. 46 That same year, the
Programmerâs Primer
for the FORTRAN system was published by IBM. 47
IX
The FORTRAN language as it was originally conceived in 1954 to 1956 (Backus called it FORTRAN
I
48 ) would evolve in its features and capabilities over several versions: FORTRAN II, III, and IV; it spawned other âdialects.â It became, among other things, a machine-independent or high-level language. To speak later of FORTRAN was to speak of a language genus, one might say. However, the fundamental and unmistakable
style
of this genus was established with the original ancestor. We get a sense of this style in the little and trivial program written in the âoriginalâ FORTRAN shown in Table 13.1 .
This program reads an array of 20 integers into an array data structure
A
. It then initializes
X, Y, Z
, and
W
to zero, then scans in sequence the integers in
A
and keeps count (in
X
) of the number of integers that are between â50 and + 50 and tallies the total of these numbers in
Y
. It also keeps count of the number of integers that fall outside the range in a separate counter (
Z
) and also adds the total of these numbers in
W
. When all 20 numbers in
A
have been accounted for, it prints out the values of the counters and the corresponding totals and stops.
The formulaic nature of most of these
statements
âby 1956, this word was used to refer to each of the basic meaningful units of action, although they were originally called formulas, 49 hence, no doubt, the name of the languageâis quite apparent. Yet, algebraic or formulaic though they seemed, they were not mathematical expressions but descriptions of actions to be performed by a computer.
X
=
X
+ 1 is not an algebraic expression in FORTRAN (indeed, mathematically or logically it would not make sense); rather, it signifies an action. The = is not the mathematical equality symbol; it denotes the assignment operation, synonymous with Zuseâs => in Plankalkül (see Section III, this chapter). The statement means: Read the value of the variable
X
, increment by one, and write the resulting value into
X
.
TABLE 13.1 A FORTRAN Program
Â
DIMENSION A(20)
Â
READ A
Â
X=0
Â
Y=0
Â
Z=0
Â
W=0
Â
DO 2 I=1,20
Â
IF ABS(A(I)) > 50 GO TO 1
Â
X=X+1
Â
Y=Y+A(I)
Â
GO TO 2
1
Z=Z+1
Â
W=W+A(I)
2
CONTINUE
Â
PRINT X,Y
Â
PRINT Z,W
Â
STOP
----
Other statements in Table 13.1 , such as the
DO
or
IF
would seem, however, less transparent to the neophyte FORTRAN user; the former denotes an iteration, the latter a conditional branch. The purpose of the FORTRAN
Programmerâs Reference Manual
was to explain
all
aspects of the language for the userâs benefit. Such an explanation took the form of first specifying the legal form of each