THE
HISTORY
OF FORTRAN
I,
II,
AND
III
John Backus IBM R e s e a r c h L a b o r a t o r y San Jose, C a l i f o r...
30 downloads
654 Views
2MB Size
Report
This content was uploaded by our users and we assume good faith they have the permission to share this book. If you own the copyright to this book and it is wrongfully on our website, we offer a simple DMCA procedure to remove your content from our site. Start by pressing the button below!
Report copyright / DMCA form
THE
HISTORY
OF FORTRAN
I,
II,
AND
III
John Backus IBM R e s e a r c h L a b o r a t o r y San Jose, C a l i f o r n i a
I.
Early background
1.1 Attitudes in the 1950's.
A f t e r M a y 1954 the A-2 c o m p i l e r a c q u i r e d a " p s e u d o c o d e " w h i c h was s i m i l a r to the order c o d e s for m a n y f l o a t i n g p o i n t i n t e r p r e t ive s y s t e m s t h a t w e r e a l r e a d y in o p e r a t i o n in 1953: e.g., the Los A l a m o s systems, D U A L and S H A C O [Bouricius 1953; S c h l e s i n g e r 1953], the M I T "Summer S e s s i o n C o m p u t e r " [Adams and L a n i n g 1954], a s y s t e m for the I L L I A C des i g n e d by D. J. W h e e l e r [Muller 1954], and the S P E E D C O D I N G s y s t e m for the IBM 701 [Backus 1954].
and e n v i r o n m e n t .
about automatic
programming
B e f o r e 1954 a l m o s t all p r o g r a m m i n g was d o n e in m a c h i n e l a n g u a g e or a s s e m b l y language. Programmers rightly regarded their w o r k as a c o m p l e x , c r e a t i v e art t h a t req u i r e d h u m a n i n v e n t i v e n e s s to p r o d u c e an efficient program. M u c h of their e f f o r t was d e v o t e d to o v e r c o m i n g the d i f f i c u l t i e s c r e a t e d by the c o m p u t e r s of t h a t era: the lack of i n d e x r e g i s t e r s , the lack of b u i l t in f l o a t i n g p o i n t o p e r a t i o n s , r e s t r i c t e d i n s t r u c t i o n sets (which m i g h t h a v e A N D but not OR, for e x a m p l e ) , and p r i m i t i v e i n p u t output arrangements. G i v e n the n a t u r e of c o m p u t e r s , the s e r v i c e s w h i c h " a u t o m a t i c p r o g r a m m i n g " p e r f o r m e d for the p r o g r a m m e r w e r e c o n c e r n e d w i t h o v e r c o m i n g the m a c h i n e ' s shortcomings. Thus the p r i m a r y c o n c e r n of some " a u t o m a t i c p r o g r a m m i n g " s y s t e m s was to a l l o w the use of s y m b o l i c a d d r e s s e s and d e c i m a l n u m b e r s (e.g., the M I D A C I n p u t T r a n s l a t i o n P r o g r a m [Brown and C a r r 1954]).
The L a n i n g and z i e r l e r s y s t e m was q u i t e a d i f f e r e n t story: it was the w o r l d ' s f i r s t o p e r a t i n g a l g e b r a i c c o m p i l e r , a r a t h e r eleg a n t but s i m p l e one. K n u t h and P a r d o [1977] a s s i g n this h o n o r to A l i c k G l e n n i e ' s A U T O CODE, but I, for one, am u n a b l e to r e c o g n i z e the s a m p l e A U T O C O D E p r o g r a m they g i v e as " a l g e b r a i c " , e s p e c i a l l y w h e n it is c o m p a r e d to the c o r r e s p o n d i n g L a n i n g and Z i e r l e r program. All of the e a r l y " a u t o m a t i c p r o g r a m m i n g " s y s t e m s w e r e c o s t l y to use, s i n c e they slowed the m a c h i n e d o w n by a f a c t o r of five or ten. The m o s t c o m m o n r e a s o n for the slowd o w n was t h a t t h e s e s y s t e m s w e r e s p e n d i n g m o s t of t h e i r time in f l o a t i n g p o i n t subroutines. S i m u l a t e d i n d e x i n g and o t h e r " h o u s e k e e p i n g " o p e r a t i o n s c o u l d be d o n e w i t h s i m p l e i n e f f i c i e n t t e c h n i q u e s , since, s l o w as they were, t h e y t o o k far less time t h a n the f l o a t i n g p o i n t work.
But m o s t of the l a r g e r "automatic. p r o g r a m m i n g " s y s t e m s (with the e x c e p t i o n of L a n i n g and Z i e r l e r ' s a l g e b r a i c s y s t e m [Laning and Z i e r l e r 1954] and the A-2 c o m p i l e r [ R e m i n g t o n R a n d 1953; M o s e r 1954]) s i m p l y p r o v i d e d a s y n t h e t i c " c o m p u t e r " w i t h an order c o d e d i f f e r e n t f r o m that of the real machine. This s y n t h e t i c c o m p u t e r u s u a l l y had f l o a t i n g p o i n t i n s t r u c t i o n s and i n d e x r e g i s t e r s and had i m p r o v e d i n p u t - o u t p u t commands; it was t h e r e f o r e m u c h e a s i e r to prog r a m t h a n its real c o u n t e r p a r t .
Experience with slow "automatic programm i n g " systems, plus t h e i r own e x p e r i e n c e w i t h the p r o b l e m s of o r g a n i z i n g loops and a d d r e s s m o d i f i c a t i o n , had c o n v i n c e d p r o g r a m m e r s t h a t e f f i c i e n t p r o g r a m m i n g was s o m e t h i n g that c o u l d not be a u t o m a t e d . Ano t h e r r e a s o n that " a u t o m a t i c p r o g r a m m i n g " was not t a k e n s e r i o u s l y by the c o m p u t i n g c o m m u n i t y came f r o m the e n e r g e t i c p u b l i c r e l a t i o n s e f f o r t s of some v i s i o n a r i e s to s p r e a d the w o r d t h a t t h e i r " a u t o m a t i c p r o g r a m m i n g " s y s t e m s had a l m o s t h u m a n a b i l i t i e s to u n d e r s t a n d the l a n g u a g e and n e e d s of the user; w h e r e a s c l o s e r i n s p e c t i o n of t h e s e same s y s t e m s w o u l d o f t e n r e v e a l a c o m p l e x , e x c e p t i o n - r i d d e n p e r f o r m e r of c l e r i c a l tasks w h i c h was b o t h d i f f i c u l t to use and i n e f f i cient. W h a t e v e r the r e a s o n s , it is d i f f i c u l t to c o n v e y to a r e a d e r in the late sev-
The A-2 c o m p i l e r a l s o c a m e to be a synt h e t i c c o m p u t e r s o m e t i m e a f t e r e a r l y 1954. But in e a r l y 1954 its i n p u t had a m u c h c r u d e r form; i n s t e a d of " p s e u d o - i n s t r u c tions" its i n p u t was t h e n a c o m p l e x s e q u e n c e of " c o m p i l i n g i n s t r u c t i o n s " t h a t c o u l d take a v a r i e t y of forms r a n g i n g f r o m m a c h i n e c o d e i t s e l f to l e n g t h y g r o u p s of w o r d s c o n s t i t u t i n g r a t h e r c l u m s y c a l l i n g s e q u e n c e s for the d e s i r e d f l o a t i n g p o i n t s u b r o u t i n e , to " a b b r e v i a t e d form" i n s t r u c t i o n s that w e r e c o n v e r t e d by a " T r a n s l a t o r " into o r d i n a r y " c o m p i l i n g i n s t r u c t i o n s " [Moser 1954].
© 1978 Association for Computing Machinery, Inc.
1 65
ACM SlGPLAN Notices, VoI. 13, No. 8, August 1978
e n t i e s the s t r e n g t h of the s k e p t i c i s m a b o u t " a u t o m a t i c p r o g r a m m i n g " in g e n e r a l and a b o u t its a b i l i t y to p r o d u c e e f f i c i e n t p r o g r a m s in p a r t i c u l a r , as it e x i s t e d in 1954.
s t a n d p o i n t of its i n p u t " p r o g r a m s " it p r o v i d e d f e w e r c o n v e n i e n c e s t h a n m o s t of the then c u r r e n t i n t e r p r e t i v e s y s t e m s m e n t i o n ed e a r l i e r ; it l a t e r a d o p t e d a " p s e u d o code" as i n p u t w h i c h was s i m i l a r to the i n p u t c o d e s of t h e s e i n t e r p r e t i v e systems.
(In the a b o v e d i s c u s s i o n of a t t i t u d e s a b o u t " a u t o m a t i c p r o g r a m m i n g " in 1954 I h a v e m e n t i o n e d o n l y t h o s e a c t u a l s y s t e m s of w h i c h m y c o l l e a g u e s and I w e r e a w a r e at the time. For a c o m p r e h e n s i v e t r e a t m e n t of e a r l y p r o g r a i n i n g s y s t e m s and l a n g u a g e s I r e c o m m e n d the a r t i c l e by K n u t h and P a r d o [1977] and S a m m e t [1969].) 1.2
The e c o n o m i c s
The L a n i n g and Z i e r l e r s y s t e m a c c e p t e d as i n p u t an e l e g a n t b u t r a t h e r s i m p l e a l g e braic language. It p e r m i t t e d s i n g l e - l e t t e r variables (identifiers) which could have a s i n g l e c o n s t a n t or v a r i a b l e s u b s c r i p t . The r e p e r t o i r e of f u n c t i o n s one c o u l d use w e r e d e n o t e d by "F" w i t h an i n t e g e r s u p e r s c r i p t to i n d i c a t e the " c a t a l o g n u m b e r " of the desired function. Algebraic expressions were c o m p i l e d into c l o s e d s u b r o u t i n e s and p l a c e d on a m a g n e t i c d r u m for s u b s e q u e n t use. The s y s t e m was o r i g i n a l l y d e s i g n e d for the W h i r l w i n d c o m p u t e r w h e n it had 1,024 s t o r age cells, w i t h the r e s u l t t h a t it c a u s e d a s l o w d o w n in e x e c u t i o n s p e e d by a f a c t o r of a b o u t ten [Adams and L a n i n g 1954].
of p r o g r a m m i n g .
A n o t h e r f a c t o r w h i c h i n f l u e n c e d the dev e l o p m e n t of F O R T R A N w a s the e c o n o m i c s of p r o g r a m m i n g in 1954. The c o s t of p r o g r a m m e r s a s s o c i a t e d w i t h a c o m p u t e r c e n t e r was u s u a l l y at l e a s t as g r e a t as the c o s t of the c o m p u t e r itself. (This f a c t f o l l o w s f r o m the a v e r a g e s a l a r y - p l u s - o v e r h e a d and n u m b e r of p r o g r a m m e r s at e a c h c e n t e r and f r o m the computer rental figures.) In a d d i t i o n , f r o m one q u a r t e r to one h a l f of the c o m p u t e r ' s t i m e was s p e n t in d e b u g g i n g . Thus p ~ o g r a m m i n g and d e b u g g i n g a c c o u n t e d for as m u c h as t h r e e q u a r t e r s of the c o s t of o p e r a t i n g a c o m p u t e r ; and o b v i o u s l y , as c o m p u t e r s g o t c h e a p e r , this s i t u a t i o n w o u l d get worse.
The e f f e c t of the L a n i n g and Z i e r l e r s y s t e m on the d e v e l o p m e n t of F O R T R A N is a q u e s t i o n w h i c h has b e e n m u d d l e d by m a n y m i s s t a t e m e n t s on my part. For m a n y y e a r s I b e l i e v e d t h a t we had g o t t e n the idea for u s i n g a l g e b r a i c n o t a t i o n in F O R T R A N f r o m s e e i n g a d e m o n s t r a t i o n of the L a n i n g and Z i e r l e r s y s t e m at MIT. In p r e p a r i n g a paper [Backus 1976] for the I n t e r n a t i o n a l R e s e a r c h C o n f e r e n c e on the H i s t o r y of Comp u t i n g at Los A l a m o s (June 10-15, 1976), I r e v i e w e d the m a t t e r w i t h I r v i n g Z i l l e r and o b t a i n e d a c o p y of a 1954 l e t t e r [Backus 1954a] (which Dr. L a n i n g k i n d l y s e n t to me). As a r e s u l t the f a c t s of the m a t t e r h a v e b e c o m e clear. The l e t t e r in q u e s t i o n is one I sent to Dr. L a n i n g a s k i n g for a d e m o n s t r a t i o n of his system. It m a k e s c l e a r t h a t we had l e a r n e d of his w o r k at the O f f i c e of N a v a l R e s e a r c h S y m p o s i u m on A u t o m a t i c P r o g r a m m i n g for D i g i t a l C o m p u t e r s , M a y 13-14, 1954, and t h a t the d e m o n s t r a t i o n t o o k p l a c e on J u n e 2, 1954. The l e t t e r a l s o m a k e s c l e a r t h a t the F O R T R A N p r o j e c t was w e l l u n d e r w a y w h e n the l e t t e r was s e n t (May 21, 1954) and i n c l u d e d H a r l a n H e r r i c k , R o b e r t A. N e l s o n , and I r v i n g Z i l l e r as w e l l as m y s e l f . F u r t h e r m o r e , an a r t i c l e in the p r o c e e d i n g s of t h a t same O N R S y m p o s i u m by H e r r i c k and m y s e l f [Backus and H e r r i c k 1954] shows c l e a r l y t h a t we w e r e a l r e a d y c o n s i d e r i n g i n p u t e x p r e s s i o n s like "Zaij •b jk "
T h i s e c o n o m i c f a c t o r was one of the p r i m e m o t i v a t i o n s w h i c h led m e to p r o p o s e the F O R T R A N p r o j e c t in a l e t t e r to m y boss, C u t h b e r t Hurd, in late 1953 (the e x a c t d a t e is n o t k n o w n but o t h e r f a c t s s u g g e s t D e c e m b e r 1953 as a l i k e l y date). I b e l i e v e t h a t the e c o n o m i c n e e d for a s y s t e m like F O R T R A N was one r e a s o n w h y IBM and my s u c c e s s i v e bosses, Hurd, C h a r l e s D e C a r l o , and J o h n M c P h e r s o n , p r o v i d e d for our c o n s t a n t l y e x p a n d i n g n e e d s o v e r the n e x t five y e a r s w i t h o u t e v e r asking us to p r o j e c t or j u s t i f y t h o s e n e e d s in a f o r m a l budget. 1.3
Programming
systems
in 1954.
It is d i f f i c u l t for a p r o g r a m m e r of tod a y to c o m p r e h e n d w h a t " a u t o m a t i c p r o g r a m m i n g " m e a n t to p r o g r a m m e r s in 1954. To m a n y it t h e n m e a n t s i m p l y p r o v i d i n g m n e m o n ic o p e r a t i o n c o d e s and s y m b o l i c a d d r e s s e s , to o t h e r s it m e a n t the s i m p l e ' p r o c e s s of o b t a i n i n g s u b r o u t i n e s f r o m a l i b r a r y and i n s e r t i n g the a d d r e s s e s of o p e r a n d s i n t o each subroutine. Most "automatic programming" systems were either assembly programs, or s u b r o u t i n e - f i x i n g p r o g r a m s , or, m o s t p o p u l a r l y , i n t e r p r e t i v e s y s t e m s to p r o v i d e f l o a t i n g p o i n t and i n d e x i n g o p e r a t i o n s . My f r i e n d s and I w e r e a w a r e of a n u m b e r of a s s e m b l y p r o g r a m s and i n t e r p r e t i v e systems, some of w h i c h h a v e b e e n m e n t i o n e d above; b e s i d e s t h e s e t h e r e w e r e p r i m a r i l y two o t h e r s y s t e m s of s i g n i f i c a n c e : the A-2 c o m p i l e r [ R e m i n g t o n R a n d 1953; M o s e r 1954] and the L a n i n g and Z i e r l e r [1954] a l g e b r a i c c o m p i l e r at MIT. As n o t e d above, the A-2 c o m p i l e r was at t h a t time l a r g e l y a subr o u t i n e - f i x e r (its o t h e r p r i n c i p a l t a s k was to p r o v i d e for " o v e r l a y s " ) ; but f r o m the
and "X÷Y". We w e n t on to r a i s e the q u e s tion "...can a machine translate a sufficiently rich mathematical language into a s u f f i c i e n t l y e c o n o m i c a l p r o g r a m at a suff i c i e n t l y low c o s t to m a k e the w h o l e a f f a i r feasible?" T h e s e and o t h e r r e m a r k s in o u r p a p e r p r e s e n t e d at the S y m p o s i u m in M a y 1954 m a k e it c l e a r t h a t we w e r e a l r e a d y c o n s i d e r i n g algebraic input considerably more sophist i c a t e d t h a n t h a t of L a n i n g and Z i e r l e r ' s s y s t e m w h e n we f i r s t h e a r d of t h e i r p i o n e e r ing work. Thus, a l t h o u g h L a n i n g and Z i e r l e r had a l r e a d y p r o d u c e d the w o r l d ' s f i r s t al-
166
g e b r a i c c o m p i l e r , our b a s i c ideas for F O R T R A N had b e e n d e v e l o p e d i n d e p e n d e n t l y ; thus it is d i f f i c u l t to k n o w what, if any, new ideas we got f r o m s e e i n g the d e m o n s t r a t i o n of t h e i r system.
e x i s t e d to p r o v i d e ; second, it i n c r e a s e d the p r o b l e m of g e n e r a t i n g e f f i c i e n t p r o g r a m s by an o r d e r of m a g n i t u d e by s p e e d i n g up f l o a t ing p o i n t o p e r a t i o n s by a f a c t o r of ten and t h e r e b y l e a v i n g i n e f f i c i e n c i e s n o w h e r e to hide. In v i e w of the w i d e s p r e a d s k e p t i c i s m a b o u t the p o s s i b i l i t y of p r o d u c i n g e f f i c i e n t p r o g r a m s w i t h an a u t o m a t i c p r o g r a m m i n g system and the f a c t that i n e f f i c i e n c i e s c o u l d no l o n g e r be hidden, we w e r e c o n v i n c e d t h a t the k i n d of s y s t e m we had in m i n d w o u l d be w i d e l y u s e d o n l y if we c o u l d d e m o n s t r a t e that it w o u l d p r o d u c e p r o g r a m s a l m o s t as e f f i c i e n t as h a n d c o d e d o n e s and do so on v i r t u a l l y e v e r y job.
Q u a s i - f o o t n o t e : In r e s p o n s e to s u g g e s t i o n s of the P r o g r a m C o m m i t t e e let me try to d e a l e x p l i c i t l y w i t h the q u e s t i o n of w h a t w o r k m i g h t h a v e inf l u e n c e d our e a r l y ideas for F O R T R A N , alt h o u g h it is m o s t l y a m a t t e r of l i s t i n g w o r k of w h i c h we w e r e then u n a w a r e . I have a l r e a d y d i s c u s s e d the w o r k of L a n i n g and Z i e r l e r and the A-2 c o m p i l e r . The w o r k of H e i n z R u t i s h a u s e r [1952] is d i s c u s s e d l a t e r on. L i k e m o s t of the w o r l d (except p e r h a p s R u t i s h a u s e r and C o r r a d o B 6 h m - - w h o was the f i r s t to d e s c r i b e a c o m p i l e r in its own l a n g u a g e [B6hm 195~]) we w e r e e n t i r e l y una w a r e of the w o r k of K o n r a d Zuse [1959; 1972]. Zuse's " P l a n k a l k ~ l " , w h i c h he comp l e t e d in 1945, was, in some ways, a m o r e e l e g a n t and a d v a n c e d p r o g r a m m i n g l a n g u a g e t h a n t h o s e t h a t a p p e a r e d ten and f i f t e e n y e a r s later.
It was our b e l i e f that if F O R T R A N , d u r ing its f i r s t m o n t h s , w e r e to t r a n s l a t e any r e a s o n a b l e " s c i e n t i f i c " s o u r c e p r o g r a m into an o b j e c t p r o g r a m o n l y half as fast as its h a n d c o d e d c o u n t e r p a r t , then a c c e p t a n c e of our s y s t e m w o u l d be in s e r i o u s danger. This b e l i e f c a u s e d us to r e g a r d the d e s i g n of the t r a n s l a t o r as the r e a l c h a l l e n g e , not the s i m p l e t a s k of d e s i g n i n g the language. Our b e l i e f in the s i m p l i c i t y of l a n g u a g e d e s i g n was p a r t l y c o n f i r m e d by the relative ease with which similar languages had b e e n i n d e p e n d e n t l y d e v e l o p e d by R u t i s h a u s e r [1952], L a n i n g and Z i e r l e r [1954], and o u r s e l v e s ; w h e r e a s we w e r e a l o n e in s e e k i n g to p r o d u c e r e a l l y e f f i c i e n t o b j e c t programs.
We w e r e a l s o u n a w a r e of the w o r k of M a u c h l y et al. ("Short Code", 1950) , B u r k s ( " I n t e r m e d i a t e PL", 1950) , B 6 h m (1951) , G l e n n i e ("AUTOCODE", 1952) as d i s c u s s e d in K n u t h and P a r d o [1977]. We w e r e a w a r e of but not i n f l u e n c e d by the a u t o m a t i c p r o g r a m ming efforts which simulated a synthetic c o m p u t e r (e.g., M I T "Summer S e s s i o n Computer", SHACO, DUAL, S P E E D C O D I N G , and the I L L I A C system), s i n c e t h e i r l a n g u a g e s and s y s t e m s w e r e so d i f f e r e n t f r o m t h o s e of FORTRAN. Nor w e r e we i n f l u e n c e d by a l g e braic systems which were designed after our " P r e l i m i n a r y R e p o r t " [1954] but w h i c h b e g a n o p e r a t i o n b e f o r e F O R T R A N (e.g., B A C A I C [Grems and P o r t e r 1956], IT [Perlis, S m i t h and V a n Z o e r e n 1957], M A T H M A T I C [Ash et al. 1957]). Although PACT I [Baker 1956] was not an a l g e b r a i c compiler, it d e s e r v e s m e n t i o n as a s i g n i f i c a n t d e v e l o p m e n t d e s i g n e d a f t e r the F O R T R A N l a n g u a g e but in o p e r a t i o n b e f o r e F O R T R A N , w h i c h a l s o did not i n f l u e n c e our work. (End of q u a s i - f o o t n o t e . )
To this d a y I b e l i e v e t h a t our e m p h a s i s on o b j e c t p r o g r a m e f f i c i e n c y r a t h e r t h a n on l a n g u a g e d e s i g n was b a s i c a l l y correct. I b e l i e v e t h a t had we f a i l e d to p r o d u c e eff i c i e n t p r o g r a m s , the w i d e s p r e a d use of l a n g u a g e s like F O R T R A N w o u l d h a v e b e e n seriously delayed. In fact, I b e l i e v e t h a t we are in a similar, but u n r e c o g n i z e d , situ a t i o n today: in s p i t e of all the fuss t h a t has b e e n m a d e o v e r m y r i a d l a n g u a g e d e t a i l s , c u r r e n t c o n v e n t i o n a l l a n g u a g e s are still v e r y w e a k p r o g r a m m i n g aids, and far m o r e p o w e r f u l l a n g u a g e s w o u l d be in use t o d a y if a n y o n e had f o u n d a w a y to m a k e t h e m run with adequate efficiency. In o t h e r words, the n e x t r e v o l u t i o n in p r o g r a m m i n g w i l l take p l a c e o n l y w h e n b o t h of the f o l l o w i n g r e q u i r e m e n t s h a v e b e e n met: (a) a new k i n d of p r o g r a m m i n g l a n g u a g e , far m o r e p o w e r f u l t h a n those of today, has b e e n d e v e l o p e d and (b) a t e c h n i q u e has b e e n f o u n d for exe c u t i n g its p r o g r a m s at not m u c h g r e a t e r c o s t than t h a t of t o d a y ' s p r o g r a m s .
Our O N R S y m p o s i u m a r t i c l e [Backus and H e r r i c k 195~] a l s o m a k e s c l e a r t h a t the F O R T R A N g r o u p was a l r e a d y a w a r e t h a t it f a c e d a n e w k i n d of p r o b l e m in a u t o m a t i c programming. The v i a b i l i t y of m o s t c o m p i l ers and i n t e r p r e t e r s p r i o r to F O R T R A N had r e s t e d on the f a c t that m o s t s o u r c e l a n g u a g e o p e r a t i o n s w e r e not m a c h i n e o p e r a t i o n s . Thus e v e n l a r g e i n e f f i c i e n c i e s in p e r f o r m ing b o t h l o o p i n g / t e s t i n g o p e r a t i o n s and c o m p u t i n g a d d r e s s e s w e r e m a s k e d by m o s t ope r a t i n g time b e i n g s p e n t in f l o a t i n g p o i n t subroutines. B u t the a d v e n t of the 70~ w i t h b u i l t in. f l o a t i n g p o i n t and i n d e x i n g r a d i c a l l y a l t e r e d the s i t u a t i o n . The 70~ p r e s e n t e d a d o u b l e c h a l l e n g e to t h o s e w h o w a n t e d to s i m p l i f y p r o g r a m m i n g ; f i r s t it rem o v e d the r a i s o n d ' E t r e of e a r l i e r s y s t e m s by p r o v i d i n g in h a r d w a r e the o p e r a t i o n s t h e y
B e c a u s e of our 1954 v i e w t h a t s u c c e s s in p r o d u c i n g e f f i c i e n t p r o g r a m s was m o r e imp o r t a n t than the d e s i g n of the F O R T R A N language, I c o n s i d e r the h i s t o r y of the comp i l e r c o n s t r u c t i o n and the w o r k of its inv e n t o r s an i n t e g r a l p a r t of the h i s t o r y of the F O R T R A N l a n g u a g e ; t h e r e f o r e a later s e c t i o n d e a l s w i t h that subject. 2. The e a r l y
s t a g e s of the F O R T R A N p r o j e c t .
After Cuthbert Hurd approved my proposal to d e v e l o p a p r a c t i c a l a u t o m a t i c p r o g r a m m i n g s y s t e m for the 704 in D e c e m b e r 1953 or
167
J a n u a r y 1954, I r v i n g Z i l l e r w a s a s s i g n e d to the p r o j e c t . We s t a r t e d w o r k in one of the m a n y s m a l l o f f i c e s the p r o j e c t w a s to occ u p y in the v i c i n i t y of IBM h e a d q u a r t e r s at 590 M a d i s o n A v e n u e in N e w York; the f i r s t of t h e s e was in the Jay T h o r p e B u i l d ing on F i f t h A v e n u e . By M a y 1954 we h a d b e e n j o i n e d by H a r l a n H e r r i c k and then by a n e w e m p l o y e e w h o h a d b e e n h i r e d to do t e c h n i c a l typing, R o b e r t A. N e l s o n (with Ziller, he soon b e g a n d e s i g n i n g o n e of the m o s t s o p h i s t i c a t e d s e c t i o n s of the c o m p i l e r ; he is n o w an IBM F e l l o w ) . By a b o u t M a y we h a d m o v e d to the 19th f l o o r of the a n n e x of 590 M a d i s o n A v e n u e , n e x t to the e l e v a t o r m a c h i n e r y ; the g r o u n d f l o o r of this b u i l d ing h o u s e d the 701 i n s t a l l a t i o n on w h i c h c u s t o m e r s t e s t e d t h e i r p r o g r a m s b e f o r e the a r r i v a l of t h e i r o w n m a c h i n e s . It w a s h e r e t h a t m o s t of the F O R T R A N l a n g u a g e w a s designed, m o s t l y by H e r r i c k , Z i l l e r and m y self, e x c e p t t h a t m o s t of the i n p u t - o u t p u t l a n g u a g e and f a c i l i t i e s w e r e d e s i g n e d by Roy Nutt, an e m p l o y e e of U n i t e d A i r c r a f t Corp. w h o w a s soon to b e c o m e a m e m b e r of the F O R T R A N p r o j e c t .
puter, n o t to m e n t i o n t h o s e of o t h e r m a n u facturers. (After all, t h e r e w e r e v e r y few c o m p u t e r s a r o u n d then.) B u t we did e x p e c t our s y s t e m to h a v e a big impact, in the s e n s e t h a t it w o u l d m a k e p r o g r a m m i n g for the 704 v e r y m u c h faster, c h e a p e r , m o r e reliable. W e a l s o e x p e c t e d that, if we w e r e s u c c e s s f u l in m e e t i n g our g o a l s , o t h e r g r o u p s and m a n u f a c t u r e r s w o u l d f o l l o w our e x a m p l e in r e d u c i n g the c o s t of p r o g r a m m i n g by p r o v i d i n g s i m i l a r s y s t e m s w i t h d i f f e r e n t but similar languages [Preliminary Report 1954]. By the fall of 1954 w e had b e c o m e the " P r o g r a m m i n g R e s e a r c h G r o u p " and I h a d bec o m e its " m a n a g e r " . By N o v e m b e r of t h a t y e a r we h a d p r o d u c e d a paper: " P r e l i m i n a r y R e p o r t , S p e c i f i c a t i o n s for the I B M M a t h e m a t ical F O R m u l a T R A N s l a t i n g S y s t e m , F O R T R A N " [ P r e l i m i n a r y R e p o r t 1954] d a t e d N o v e m b e r 10. In its i n t r o d u c t i o n w e n o t e d t h a t " s y s t e m s w h i c h h a v e s o u g h t to r e d u c e the job of c o d ing and d e b u g g i n g p r o b l e m s h a v e o f f e r e d the c h o i c e of e a s y c o d i n g and s l o w e x e c u t i o n or l a b o r i o u s c o d i n g and f a s t e x e c u t i o n . " On the b a s i s m o r e of f a i t h t h a n of k n o w l e d g e , we s u g g e s t e d t h a t p r o g r a m s "will be e x e c u t e d in a b o u t the same time t h a t w o u l d be req u i r e d h a d the p r o b l e m b e e n l a b o r i o u s l y hand coded." In w h a t t u r n e d o u t to be a t r u e s t a t e m e n t , we said t h a t " F O R T R A N m a y a p p l y c o m p l e x , l e n g t h y t e c h n i q u e s in c o d i n g a p r o b l e m w h i c h the h u m a n c o d e r w o u l d h a v e n e i t h e r the t i m e nor i n c l i n a t i o n to d e r i v e or a p p l y . "
A f t e r we h a d f i n i s h e d d e s i g n i n g m o s t of the l a n g u a g e we h e a r d a b o u t R u t i s h a u s e r ' s p r o p o s a l s for a s i m i l a r l a n g u a g e [Rutish a u s e r 1952]. It w a s c h a r a c t e r i s t i c of the u n s c h o l a r l y a t t i t u d e of m o s t p r o g r a m m e r s then, and of o u r s e l v e s in p a r t i c u l a r , t h a t we d i d n o t b o t h e r to c a r e f u l l y r e v i e w the s k e t c h y t r a n s l a t i o n of his p r o p o s a l s t h a t we f i n a l l y o b t a i n e d , s i n c e f r o m t h e i r symb o l i c c o n t e n t they d i d n o t a p p e a r to add a n y t h i n g n e w to our p r o p o s e d l a n g u a g e . R u t i s h a u s e r ' s l a n g u a g e h a d a for s t a t e m e n t and o n e - d i m e n s i o n a l a r r a y s , b u t no IF, GOTO, n o r I/O s t a t e m e n t s . Subscript variables c o u l d n o t be u s e d as o r d i n a r y v a r i a b l e s and operator precedence was ignored. His 1952 a r t i c l e d e s c r i b e d two c o m p i l e r s for this l a n g u a g e (for m o r e d e t a i l s see [Knuth and P a r d o 1977]). As far as we w e r e aware, w e s i m p l y m a d e up the l a n g u a g e as we w e n t along. We did not r e g a r d l a n g u a g e d e s i g n as a d i f f i c u l t p r o b l e m , m e r e l y a s i m p l e p r e l u d e to the real problem: designing a compiler which could produce efficient programs. Of c o u r s e o n e of our g o a l s was to d e s i g n a l a n g u a g e w h i c h w o u l d m a k e it p o s s i b l e for e n g i n e e r s and s c i e n t i s t s to w r i t e p r o g r a m s t h e m s e l v e s for the 704. W e a l s o w a n t e d to e l i m i n a t e a lot of the b o o k k e e p i n g and detailed, repetitive planning which hand coding i n v o l v e d . V e r y e a r l y in our w o r k w e h a d in m i n d the n o t i o n s of a s s i g n m e n t s t a t e m e n t s , s u b s c r i p t e d v a r i a b l e s , and the DO s t a t e m e n t (which I b e l i e v e w a s p r o p o s e d by Herrick). We felt that these provided a g o o d b a s i s for a c h i e v i n g o u r g o a l s for the l a n g u a g e , and w h a t e v e r else w a s n e e d e d em e r g e d as w e t r i e d to b u i l d a w a y of p r o g r a m m i n g o n t h e s e b a s i c ideas.
The l a n g u a g e d e s c r i b e d in the " P r e l i m i n a r y R e p o r t " h a d v a r i a b l e s of o n e or two c h a r a c t e r s in length, f u n c t i o n n a m e s of t h r e e or m o r e c h a r a c t e r s , r e c u r s i v e l y defined "expressions", subscripted variables w i t h up to t h r e e s u b s c r i p t s , "arithmetic formulas" (which t u r n o u t to be a s s i g n m e n t s t a t e m e n t s ) , and " D O - f o r m u l a s " . T h e s e latter f o r m u l a s c o u l d s p e c i f y b o t h the f i r s t and l a s t s t a t e m e n t s to be c o n t r o l l e d , thus p e r m i t t i n g a DO to c o n t r o l a d i s t a n t seq u e n c e of s t a t e m e n t s , as w e l l as s p e c i f y i n g a t h i r d s t a t e m e n t to w h i c h c o n t r o l w o u l d p a s s f o l l o w i n g the end of the i t e r a t i o n . If o n l y o n e s t a t e m e n t was s p e c i f i e d , the "range" of the DO w a s the s e q u e n c e of s t a t e m e n t s f o l l o w i n g the DO d o w n to the s p e c i f i e d statement. E x p r e s s i o n s in " a r i t h m e t i c f o r m u l a s " c o u l d be "mixed": i n v o l v e b o t h " f i x e d p o i n t " (integer) a n d " f l o a t i n g p o i n t " q u a n t i t i e s . The a r i t h m e t i c u s e d (all i n t e g e r or all f l o a t i n g point) to e v a l u a t e a m i x e d e x p r e s sion w a s d e t e r m i n e d by the t y p e of the v a r i a b l e on the l e f t of the "=" sign. "IFf o r m u l a s " e m p l o y e d an e q u a l i t y or i n e q u a l ity sign ("=" or ">" or ">=") b e t w e e n two (restricted) e x p r e s s i o n s , f o l l o w e d by two s t a t e m e n t n u m b e r s , o n e for the "true" case, the o t h e r for the "false" case. A " R e l a b e l f o r m u l a " w a s d e s i g n e d to m a k e it e a s y to r o t a t e , say, the i n d i c e s of the r o w s of a m a t r i x so t h a t the same c o m p u t a -
W e c e r t a i n l y h a d no idea t h a t l a n g u a g e s a l m o s t i d e n t i c a l to the o n e w e w e r e w o r k i n g on w o u l d be u s e d for m o r e t h a n one IBM com-
168
a p r o g r a m "by i n d e p e n d e n t l y r e c r e a t i n g the s p e c i f i c a t i o n s for a p r o b l e m f r o m its F O R T R A N f o r m u l a t i o n [!]" It says n o t h i n g a b o u t the s y s t e m c a t c h i n g s y n t a c t i c errors, but n o t e s t h a t an e r r o r - f i n d i n g p r o g r a m can be w r i t t e n a f t e r some e x p e r i e n c e w i t h e r r o r s has b e e n a c c u m u l a t e d .
tion w o u l d apply, a f t e r r e l a b e l l i n g , e v e n t h o u g h a n e w r o w had b e e n r e a d in and the n e x t c o m p u t a t i o n was n o w to take p l a c e on a d i f f e r e n t , r o t a t e d set of rows. Thus, for e x a m p l e , if b is a 4 by 4 m a t r i x , a f t e r R E L A B E L b(3,1), a r e f e r e n c e to b(1,j) has the same m e a n i n g as b(3,j) b e f o r e r e l a b e l ling; b(2,j) a f t e r = b(4,j) before; b(3,j) a f t e r = b(1,j) before; and b(4,j) a f t e r = b(2,j) b e f o r e r e l a b e l l i n g .
U n f o r t u n a t e l y we w e r e h o p e l e s s l y o p t i m i s t i c in 1954 a b o u t the p r o b l e m s of d e b u g g i n g F O R T R A N p r o g r a m s (thus we find on p a g e 2 of the Report: " S i n c e F O R T R A N s h o u l d v i r t u a l l y e l i m i n a t e c o d i n g and d e b u g g i n g . . . [!]") and h e n c e s y n t a c t i c e r r o r c h e c k i n g f a c i l i t i e s in the f i r s t d i s t r i b u t i o n of F O R T R A N I w e r e weak. Better facilities w e r e a d d e d not long a f t e r d i s t r i b u t i o n and f a i r l y g o o d s y n t a c t i c c h e c k i n g was p r o v i d e d in F O R T R A N II.
The i n p u t - o u t p u t s t a t e m e n t s p r o v i d e d inc l u d e d the b a s i c n o t i o n of s p e c i f y i n g the s e q u e n c e in w h i c h d a t a was to be r e a d in or out, but did not i n c l u d e any "Format" s t a t e ments. The R e p o r t also lists four k i n d s of " s p e c i f i c a t i o n s e n t e n c e s " : (I) " d i m e n s i o n s e n t e n c e s " for g i v i n g the d i m e n s i o n s of arrays, (2) " e q u i v a l e n c e s e n t e n c e s " for ass i g n i n g the same s t o r a g e l o c a t i o n s to v a r iables, (3) " f r e q u e n c y s e n t e n c e s " for ind i c a t i n g e s t i m a t e d r e l a t i v e f r e q u e n c y of b r a n c h p a t h s or loops to h e l p the c o m p i l e r o p t i m i z e the o b j e c t p r o g r a m , and (4) "rela t i v e c o n s t a n t s e n t e n c e s " to i n d i c a t e subs c r i p t v a r i a b l e s w h i c h are e x p e c t e d to change their values very infrequently.
The F O R T R A N l a n g u a g e d e s c r i b e d in the Programmer's Reference Manual dated October 15, 1956 [IBM 1956] d i f f e r e d in a few res p e c t s f r o m t h a t of the P r e l i m i n a r y Report, but, c o n s i d e r i n g our i g n o r a n c e in 1954 of the p r o b l e m s we w o u l d later e n c o u n t e r in p r o d u c i n g the c o m p i l e r , there w e r e r e m a r k a b l y few d e l e t i o n s (the R e l a b e l and R e l a tive C o n s t a n t s t a t e m e n t s ) , a few r e t r e a t s , some f o r t u n a t e , some not ( s i m p l i f i c a t i o n of DO s t a t e m e n t s , d r o p p i n g i n e q u a l i t i e s f r o m IF s t a t e m e n t s - - f o r lack of a ">" symbol, and p r o h i b i t i n g m o s t "mixed" e x p r e s s i o n s and s u b s c r i p t e d s u b s c r i p t s ) , and the r e c t i f i c a t i o n of a few o m i s s i o n s ( a d d i t i o n of FORMAT, C O N T I N U E , c o m p u t e d and a s s i g n e d GOTO s t a t e m e n t s , i n c r e a s i n g the l e n g t h of v a r i a b l e s to up to six c h a r a c t e r s , and g e n e r a l i m p r o v e m e n t of i n p u t - o u t p u t s t a t e m e n t s ) .
T o w a r d the end of the R e p o r t (pp. 26-27) t h e r e is a s e c t i o n " F u t u r e a d d i t i o n s to the F O R T R A N system". Its f i r s t i t e m is: "a v a r i e t y of new i n p u t - o u t p u t f o r m u l a s w h i c h w o u l d e n a b l e the p r o g r a m m e r to s p e c i f y v a r ious f o r m a t s for cards, p r i n t i n g , i n p u t tapes and o u t p u t tapes" It is b e l i e v e d t h a t this i t e m is a r e s u l t of our e a r l y c o n s u l t a t i o n s w i t h Roy Nutt. This s e c t i o n goes on to list o t h e r p r o p o s e d f a c i l i t i e s to be added: c o m p l e x and d o u b l e p r e c i s i o n arithmetic, matrix arithmetic, sorting, solving simultaneous equations, differential e q u a t i o n s , and l i n e a r p r o g r a m m i n g p r o b l e m s . It a l s o d e s c r i b e s f u n c t i o n d e f i n i t i o n capa b i l i t i e s s i m i l a r to those w h i c h later app e a r e d in F O R T R A N II; f a c i l i t i e s for numerical integration; a summation operator; and t a b l e l o o k u p f a c i l i t i e s . The final s e c t i o n of the R e p o r t (pp 2829) d i s c u s s e s p r o g r a m m i n g t e c h n i q u e s to use to h e l p the s y s t e m p r o d u c e e f f i c i e n t p r o grams. It d i s c u s s e s h o w to use p a r e n t h e s e s to h e l p the s y s t e m i d e n t i f y i d e n t i c a l sube x p r e s s i o n s w i t h i n an e x p r e s s i o n and t h e r e by e l i m i n a t e t h e i r d u p l i c a t e c a l c u l a t i o n . T h e s e p a r e n t h e s e s had to be s u p p l i e d o n l y w h e n a r e c u r r i n g s u b e x p r e s s i o n o c c u r r e d as p a r t of a t e r m (e.g., if a~b o c c u r r e d in s e v e r a l places, it w o u l d be b e t t e r to w r i t e the t e r m a ~ b ~ c as (a~b)~c to a v o i d d u p l i c a t e c a l c u l a t i o n ) ; o t h e r w i s e the s y s t e m w o u l d i d e n t i f y d u p l i c a t e s w i t h o u t any a s s i s t a n c e . It a l s o o b s e r v e s t h a t the s y s t e m w o u l d not p r o d u c e o p t i m a l c o d e for loops c o n s t r u c t e d w i t h o u t DO s t a t e m e n t s . This final s e c t i o n of the R e p o r t a l s o n o t e s that "no s p e c i a l p r o v i s i o n s h a v e b e e n i n c l u d e d in the F O R T R A N s y s t e m for l o c a t i n g e r r o r s in f o r m u l a s " . It s u g g e s t s c h e c k i n g
169
S i n c e our e n t i r e a t t i t u d e a b o u t l a n g u a g e d e s i g n had a l w a y s b e e n a v e r y c a s u a l one, the c h a n g e s w h i c h we felt to be d e s i r a b l e d u r i n g the c o u r s e of w r i t i n g the c o m p i l e r were made equally casually. We n e v e r f e l t t h a t any of t h e m i n v o l v e d a real s a c r i f i c e in c o n v e n i e n c e or p o w e r (with the p o s s i b l e e x c e p t i o n of the R e l a b e l s t a t e m e n t , w h o s e p u r p o s e was to c o o r d i n a t e i n p u t - o u t p u t w i t h c o m p u t a t i o n s on arrays, but this was one f a c i l i t y w h i c h we felt w o u l d h a v e b e e n r e a l l y d i f f i c u l t to i m p l e m e n t ) . I believe the s i m p l i f i c a t i o n of the o r i g i n a l DO s t a t e m e n t r e s u l t e d f r o m the r e a l i z a t i o n t h a t (a) it w o u l d be h a r d to d e s c r i b e p r e c i s e l y , (b) it was a w k w a r d to c o m p i l e , and (c) it p r o v i d e d l i t t l e p o w e r b e y o n d t h a t of the final v e r s i o n . In our n a i v e u n a w a r e n e s s of l a n g u a g e d e s i g n p r o b l e m s - - o f c o u r s e we k n e w n o t h i n g of m a n y i s s u e s w h i c h w e r e later t h o u g h t to be i m p o r t a n t , e.g., b l o c k s t r u c t u r e , cond i t i o n a l e x p r e s s i o n s , type d e c l a r a t i o n s - it s e e m e d to us t h a t o n c e one had the not i o n s of the a s s i g n m e n t s t a t e m e n t , the subs c r i p t e d v a r i a b l e , and the DO s t a t e m e n t in h a n d (and t h e s e w e r e a m o n g our e a r l i e s t ideas), then the r e m a i n i n g p r o b l e m s of lang u a g e d e s i g n w e r e t r i v i a l : e i t h e r t h e i r solu t i o n was t h r u s t u p o n one by the n e e d to p r o v i d e some m a c h i n e f a c i l i t y such as r e a d -
ing input, or by some p r o g r a m m i n g t a s k w h i c h c o u l d n o t be d o n e w i t h e x i s t i n g s t r u c t u r e s (e.g., s k i p p i n g to the end of a DO l o o p w i t h o u t s k i p p i n g the i n d e x i n g i n s t r u c t i o n s there: this g a v e rise to the C O N T I N U E s t a t e ment).
Washington (D.C.), A l b u q u e r q u e , P i t t s b u r g h , Los A n g e l e s , and o n e or two o t h e r p l a c e s were not very helpful. O n e t r i p to g i v e o u r talk, p r o b a b l y in J a n u a r y 1955, h a d an e x c e l l e n t p a y o f f . This talk, at U n i t e d A i r c r a f t Corp., r e s u l t e d in an a g r e e m e n t b e t w e e n o u r g r o u p and W a l t e r R a m s h a w at U n i t e d A i r c r a f t t h a t Roy N u t t w o u l d b e c o m e a r e g u l a r p a r t of o u r e f f o r t ( a l t h o u g h r e m a i n i n g an e m p l o y e e of U n i t e d A i r c r a f t ) to c o n t r i b u t e his e x p e r t i s e on i n p u t - o u t p u t and a s s e m b l y r o u t i n e s . With a few b r e a k s d u e to his i n v o l v e m e n t in w r i t i n g v a r i o u s S H A R E p r o g r a m s , he w o u l d t h e n c e f o r t h c o m e to N e w Y o r k two or t h r e e t i m e s a w e e k u n t i l e a r l y 1957.
O n e m u c h - c r i t i c i z e d d e s i g n c h o i c e in F O R T R A N c o n c e r n s the u s e of spaces: b l a n k s w e r e i g n o r e d , e v e n b l a n k s in the m i d d l e of an i d e n t i f i e r . Roy Nutt reminds me that t h a t c h o i c e w a s p a r t l y in r e c o g n i t i o n of a p r o b l e m w i d e l y k n o w n in SHARE, the 704 users' a s s o c i a t i o n . There was a common prob l e m w i t h k e y p u n c h e r s n o t r e c o g n i z i n g or p r o p e r l y c o u n t i n g b l a n k s in h a n d w r i t t e n data, a n d this c a u s e d m a n y e r r o r s . We also r e g a r d e d i g n o r i n g b l a n k s as a d e v i c e to ena b l e p r o g r a m m e r s to a r r a n g e t h e i r p r o g r a m s in a m o r e r e a d a b l e f o r m w i t h o u t a l t e r i n g t h e i r m e a n i n g or i n t r o d u c i n g c o m p l e x r u l e s for f o r m a t t i n g s t a t e m e n t s .
It is d i f f i c u l t to a s s e s s the i n f l u e n c e the e a r l y w o r k of the F O R T R A N g r o u p h a d on other projects. C e r t a i n l y the d i s c u s s i o n of L a n i n g and Z i e r l e r ' s a l g e b r a i c c o m p i l e r at the O N R S y m p o s i u m in M a y 1954 w o u l d h a v e b e e n m o r e l i k e l y to p e r s u a d e s o m e o n e to und e r t a k e a s i m i l a r l i n e of e f f o r t t h a n w o u l d the b r i e f d i s c u s s i o n of the m e r i t s of u s i n g "a f a i r l y n a t u r a l m a t h e m a t i c a l language" t h a t a p p e a r e d t h e r e in the p a p e r by H e r r i c k and m y s e l f [Backus and H e r r i c k 1954]. But it w a s o u r i m p r e s s i o n t h a t our d i s c u s s i o n s w i t h v a r i o u s g r o u p s a f t e r t h a t time, t h e i r a c c e s s to our P r e l i m i n a r y R e p o r t , and t h e i r a w a r e n e s s of the e x t e n t and s e r i o u s n e s s of our e f f o r t s , t h a t t h e s e f a c t o r s e i t h e r g a v e the i n i t i a l s t i m u l u s to some o t h e r p r o j e c t s or at l e a s t c a u s e d t h e m to be m o r e a c t i v e than they might have been otherwise. It w a s o u r i m p r e s s i o n , for e x a m p l e , t h a t the "IT" p r o j e c t [Perlis, S m i t h and V a n Z o e r e n 1957] at P u r d u e and l a t e r at C a r n e g i e - M e l l o n b e g a n s h o r t l y a f t e r the d i s t r i b u t i o n of our P r e l i m i n a r y R e p o r t , as d i d the " M A T H - M A T I C " p r o j e c t [Ash et al. 1957] at S p e r r y Rand.
A n o t h e r d e b a t a b l e d e s i g n c h o i c e w a s to rule out "mixed" m o d e e x p r e s s i o n s i n v o l v i n g b o t h i n t e g e r and f l o a t i n g p o i n t q u a n t i t i e s . A l t h o u g h our P r e l i m i n a r y R e p o r t had i n c l u d e d such e x p r e s s i o n s , a n d r u l e s for e v a l u a t i n g them, we f e l t t h a t if c o d e for t y p e c o n v e r sion w e r e to be g e n e r a t e d , the u s e r s h o u l d be a w a r e of that, and the b e s t w a y to i n s u r e t h a t he w a s a w a r e w a s to ask h i m to s p e c i f y them. I b e l i e v e we w e r e a l s o d o u b t f u l of the u s e f u l n e s s of the r u l e s in o u r R e p o r t for e v a l u a t i n g m i x e d e x p r e s s i o n s . In a n y case, the m o s t c o m m o n sort of " m i x t u r e s " was a l l o w e d : i n t e g e r e x p o n e n t s and f u n c t i o n a r g u m e n t s w e r e a l l o w e d in a f l o a t i n g point expression. In late 1954 and e a r l y 1955, a f t e r comp l e t i n g the P r e l i m i n a r y R e p o r t , H a r l a n H e r rick, I r v i n g Z i l l e r and I g a v e p e r h a p s five or six t a l k s a b o u t our p l a n s for F O R T R A N to v a r i o u s g r o u p s of I B M c u s t o m e r s w h o h a d ord e r e d a 704 (the 704 h a d b e e n a n n o u n c e d a b o u t M a y 1954). A t t h e s e t a l k s we c o v e r e d the m a t e r i a l in the R e p o r t and d i s c u s s e d o u r p l a n s for the c o m p i l e r (which w a s to be comp l e t e d w i t h i n a b o u t six m o n t h s [!] ; this w a s to r e m a i n the i n t e r v a l - t o - c o m p l e t i o n u n t i l it a c t u a l l y was c o m p l e t e d o v e r two y e a r s later, in A p r i l 1957). In a d d i t i o n to i n f o r m i n g c u s t o m e r s a b o u t our p l a n s , ano t h e r p u r p o s e of t h e s e t a l k s was to a s s e m b l e a list of t h e i r o b j e c t i o n s and f u r t h e r requirements. In this we w e r e d i s a p p o i n t e d ; o u r l i s t e n e r s w e r e m o s t l y s k e p t i c a l ; I bel i e v e t h e y h a d h e a r d too m a n y g l o w i n g d e s c r i p t i o n s of w h a t t u r n e d o u t to be c l u m s y s y s t e m s to take us s e r i o u s l y . In t h o s e d a y s o n e w a s a c c u s t o m e d to f i n d i n g lots of p e c u l iar b u t s i g n i f i c a n t r e s t r i c t i o n s in a s y s t e m w h e n it f i n a l l y a r r i v e d t h a t h a d n o t b e e n m e n t i o n e d in its o r i g i n a l d e s c r i p t i o n . Most of all, our c l a i m s t h a t w e w o u l d p r o d u c e efficient object programs were disbelieved. Whatever thereasons, w e r e c e i v e d a l m o s t no s u g g e s t i o n s or f e e d b a c k ; o u r l i s t e n e r s h a d d o n e a l m o s t no t h i n k i n g a b o u t the p r o b l e m s w e f a c e d and h a d a l m o s t no s u g g e s t i o n s or criticisms. T h u s we f e l t t h a t our t r ip s to
It is n o t c l e a r w h a t i n f l u e n c e , if any, our Los A n g e l e s t a l k and e a r l i e r c o n t a c t s w i t h m e m b e r s of t h e i r g r o u p had on the P A C T I e f f o r t [Baker 1956], w h i c h I b e l i e v e w a s a l r e a d y in its f o r m a t i v e s t a g e s w h e n we g o t to Los A n g e l e s . It is clear, w h a t e v e r inf l u e n c e the s p e c i f i c a t i o n s for F O R T R A N m a y h a v e had on o t h e r p r o j e c t s in 1 9 5 4 - 5 5 - 5 6 , t h a t our p l a n s w e r e w e l l a d v a n c e d a n d q u i t e f i r m by the end of 1954 and b e f o r e w e h a d c o n t a c t or k n o w l e d g e of t h o s e o t h e r p r o jects. Our s p e c i f i c a t i o n s w e r e n o t a f f e c t e d by t h e m in a n y s i g n i f i c a n t w a y as far as I am aware, e v e n t h o u g h some w e r e o p e r a t i n g b e f o r e F O R T R A N w a s (since t h e y w e r e p r i m a r i l y i n t e r e s t e d in p r o v i d i n g an i n p u t lang u a g e r a t h e r t h a n in o p t i m i z a t i o n , t h e i r t a s k w a s c o n s i d e r a b l y s i m p l e r t h a n ours). 3.
The
construction
of the
compiler.
T h e F O R T R A N c o m p i l e r (or " t r a n s l a t o r " as w e c a l l e d it then) w a s b e g u n in e a r l y 1955, a l t h o u g h a lot of w o r k on v a r i o u s s c h e m e s w h i c h w o u l d be u s e d in it h a d b e e n d o n e in 1954; e.g., H e r r i c k had d o n e a lot of t r i a l p r o g r a m m i n g to t e s t o u t o u r l a n g u a g e and w e h a d w o r k e d o u t the b a s i c sort of m a c h i n e
170
p r o g r a m s w h i c h w e w a n t e d the c o m p i l e r to g e n e r a t e for v a r i o u s s o u r c e l a n g u a g e p h r a s e s ; Z i l l e r and I h a d w o r k e d o u t a b a s i c s c h e m e for t r a n s l a t i n g a r i t h m e t i c e x p r e s sions.
the a d d r e s s of the p r e c e d i n g r e f e r e n c e to the a r r a y A w h e n e v e r I and J a r e c h a n g i n g linearly. To e m p l o y this far m o r e e f f i c i e n t m e t h o d s e c t i o n 2 h a d to d e t e r m i n e w h e n the s u r r o u n d i n g p r o g r a m was c h a n g i n g I and J linearly.
B u t the real w o r k on the c o m p i l e r g o t u n d e r w a y in our t h i r d l o c a t i o n o n the f i f t h f l o o r of 15 E a s t 56th Street. By the m i d d l e of F e b r u a r y t h r e e s e p a r a t e e f f o r t s w e r e underway. The f i r s t two of t h e s e c o n c e r n e d s e c t i o n s I and 2 of the c o m p i l e r , and the t h i r d c o n c e r n e d the input, o u t p u t and ass e m b l y p r o g r a m s w e w e r e g o i n g to n e e d (see below). We b e l i e v e d t h e n t h a t t h e s e e f f o r t s w o u l d p r o d u c e m o s t of the c o m p i l e r .
Thus one p r o b l e m w a s t h a t of d i s t i n g u i s h ing b e t w e e n , on the o n e hand, r e f e r e n c e s to an a r r a y e l e m e n t w h i c h the t r a n s l a t o r m i g h t t r e a t by i n c r e m e n t i n g the a d 4 r e s s u s e d for a p r e v i o u s r e f e r e n c e , and t h o s e a r r a y r e f e r e n c e s , o n the o t h e r hand, w h i c h w o u l d req u i r e an a d d r e s s c a l c u l a t i o n s t a r t i n g f r o m s c r a t c h w i t h the c u r r e n t v a l u e s of the subscripts.
(The e n t i r e p r o j e c t w a s c a r r i e d on by a l o o s e c o o p e r a t i o n b e t w e e n a u t o n o m o u s , sepa r a t e g r o u p s of one, two, or t h r e e people; each g r o u p was r e s p o n s i b l e for a " s e c t i o n " of the c o m p i l e r ; e a c h g r o u p g r a d u a l l y d e v e l o p e d and a g r e e d u p o n its own i n p u t and output s p e c i f i c a t i o n s w i t h the g r o u p s for neighboring sections; each group invented and p r o g r a m m e d the n e c e s s a r y t e c h n i q u e s for d o i n g its a s s i g n e d job.) S e c t i o n I was to r e a d the e n t i r e s o u r c e p r o g r a m , c o m p i l e w h a t i n s t r u c t i o n s it could, and fi]e all the r e s t of the i n f o r m a t i o n from the s o u r c e p r o g r a m in a p p r o p r i a t e tables'. Thus the c o m p i l e r w a s "one pass" in the s e n s e that it "saw" the s o u r c e prog r a m o n l y once. Herrick was responsible for c r e a t i n g m o s t of the tables, P e t e r S h e r i d a n (who had r e c e n t l y j o i n e d us) comp i l e d all the a r i t h m e t i c e x p r e s s i o n s , and Roy N u t t c o m p i l e d a n d / o r f i l e d the I/O statements. H e r r i c k , S h e r i d a n and N u t t g o t some h e l p l a t e r on f r o m R. J. B e e b e r and H. Stern, but they w e r e the a r c h i t e c t s of section I and w r o t e m o s t of its code. Sheridan d e v i s e d and i m p l e m e n t e d a n u m b e r of o p t i m i z ing t r a n s f o r m a t i o n s on e x p r e s s i o n s [Sheridan 1959] w h i c h s o m e t i m e s r a d i c a l l y a l t e r e d t h e m (of c o u r s e w i t h o u t c h a n g i n g t h e i r m e a n i n g ) . Nutt transformed the I/O "lists of q u a n t i t i e s " into n e s t s of DO s t a t e m e n t s w h i c h w e r e then t r e a t e d by the r e g u l a r m e c h a n i s m s of the c o m p i l e r . The r e s t of the I/O i n f o r m a t i o n he f i l e d for l a t e r t r e a t m e n t in section 6, the a s s e m b l e r s e c t i o n . (For f u r t h e r d e t a i l s a b o u t h o w the v a r i o u s s e c t i o n s of the c o m p i l e r w o r k e d see [Backus et al. 1957] .) U s i n g the i n f o r m a t i o n t h a t w a s f i l e d in s e c t i o n I, s e c t i o n 2 f a c e d a c o m p l e t e l y n e w k i n d of p r o b l e m ; it was r e q u i r e d to ana l y z e the e n t i r e s t r u c t u r e of the p r o g r a m i n o r d e r to g e n e r a t e o p t i m a l c o d e f r o m DO s t a t e m e n t s and r e f e r e n c e s to s u b s c r i p t e d variables. The s i m p l e s t w a y to e f f e c t a r e f e r e n c e to A(I,J) is to e v a l u a t e an exp r e s s i o n i n v o l v i n g the a d d r e s s of A ( I , 1 ) , I, and K×J, w h e r e K is the l e n g t h of a c o l umn (when A is s t o r e d c o l u m n - w i s e ) . B u t this calculation, w i t h its m u l t i p l i c a t i o n , is m u c h less e f f i c i e n t than the w a y m o s t h a n d c o d e d p r o g r a m s e f f e c t a r e f e r e n c e to A ( I , J ) , n a m e l y , by a d d i n g an a p p r o p r i a t e c o n s t a n t to
171
It was d e c i d e d that it was n o t p r a c t i c a l to t r a c k d o w n and i d e n t i f y l i n e a r c h a n g e s in s u b s c r i p t s r e s u l t i n g from a s s i g n m e n t statements. Thus the sole c r i t e r i o n for l i n e a r c h a n g e s , and h e n c e for e f f i c i e n t h a n d l i n g of a r r a y r e f e r e n c e s , w a s to be that the s u b s c r i p t s i n v o l v e d w e r e b e i n g c o n t r o l l e d by DO s t a t e m e n t s . D e s p i t e this s i m p l i f y i n g a s s u m p t i o n , the n u m b e r of c a s e s that s e c t i o n 2 had to a n a l y z e in o r d e r to p r o d u c e o p t i m a l or n e a r - o p t i m a l c o d e was v e r y large. (The n u m b e r of such c a s e s inc r e a s e d e x p o n e n t i a l l y w i t h the n u m b e r of s u b s c r i p t s ; this w a s a p r i m e f a c t o r in o u r d e c i s i o n to l i m i t t h e m to three; the fact t h a t the 704 had o n l y t h r e e i n d e x r e g i s t e r s was n o t a factor.) It is b e y o n d the s c o p e of this p a p e r to go into the d e t a i l s of the a n a l y s i s w h i c h s e c t i o n 2 c a r r i e d out. It w i l l s u f f i c e to say t h a t it p r o d u c e d code of s u c h e f f i c i e n cy that its o u t p u t w o u l d s t a r t l e the p r o g r a m m e r s w h o s t u d i e d it. It m o v e d c o d e o u t of l o o p s w h e r e t h a t was p o s s i b l e ; it t o o k a d v a n t a g e of the d i f f e r e n c e s b e t w e e n r o w w i s e and c o l u m n - w i s e scans; it took n o t e of s p e c i a l c a s e s to o p t i m i z e e v e n the e x i t s from loops. The d e g r e e of o p t i m i z a t i o n p e r f o r m e d by s e c t i o n 2 in its t r e a t m e n t of i n d e x i n g , a r r a y r e f e r e n c e s , and l o o p s was not equalled again until optimizing compilers b e g a n to a p p e a r in the m i d d l e and l a t e sixties. The a r c h i t e c t u r e and all the t e c h n i q u e s e m p l o y e d in s e c t i o n 2 w e r e i n v e n t e d by Robert A. N e l s o n and I r v i n g Ziller. They planned and p r o g r a m m e d the e n t i r e section. O r i g i n a l l y it was t h e i r i n t e n t i o n to p r o d u c e the c o m p l e t e c o d e for t h e i r area, i n c l u d i n g the c h o i c e of the i n d e x r e g i s t e r s to be u s e d (the 704 had t h r e e i n d e x r e g i s t e r s ) . W h e n t h e y s t a r t e d l o o k i n g at t h a t p r o b l e m it r a p i d l y b e c a m e c l e a r t h a t it w a s n o t going to be e a s y to t r e a t it o p t i m a l l y . At that p o i n t I p r o p o s e d t h a t they s h o u l d p r o d u c e a p r o g r a m for a 704 w i t h an u n l i m i t e d n u m b e r of i n d e x r e g i s t e r s , and t h a t l a t e r s e c t i o n s w o u l d a n a l y z e the f r e q u e n c y of exe c u t i o n of v a r i o u s p a r t s of the p r o g r a m (by a M o n t e C a r l o s i m u l a t i o n of its e x e c u tion) and t h e n m a k e i n d e x r e g i s t e r a s s i g n m e n t s so as to m i n i m i z e the t r a n s f e r s of i t e m s b e t w e e n the s t o r e and the i n d e x r e g -
isters.
fully ging.
This p r o p o s a l g a v e r i s e to two n e w sect ion s of the c o m p i l e r w h i c h we h a d n o t ant i c i p a t e d , s e c t i o n s 4 and 5 ( s e c t i o n 3 w a s a d d e d s t i l l l a t e r to c o n v e r t the o u t p u t of s e c t i o n s I and 2 to the f o r m r e q u i r e d for s e c t i o n s 4, 5, and 6). In the fall of 1955 L o i s M i t c h e l l H a i b t j o i n e d our g r o u p to p l a n and p r o g r a m s e c t i o n 4, w h i c h w a s to a n a l y z e the f l o w of a p r o g r a m p r o d u c e d by s e c t i o n s I and 2, d i v i d e it into "basic blocks" (which c o n t a i n e d no b r a n c h i n g ) , do a M o n t e C a r l o (statistical) a n a l y s i s of the e x p e c t e d f r e q u e n c y of e x e c u t i o n of b a s i c b l o c k s - - b y s i m u l a t i n g the b e h a v i o r of the p r o g r a m and k e e p i n g c o u n t s of the use of e a c h b l o c k - - u s i n g i n f o r m a t i o n f r o m DO s t a t e m e n t s and F R E Q U E N C Y s t a t e m e n t s , a n d c o l l e c t i n f o r m a t i o n a b o u t i n d e x r e g i s t e r u s a g e (for m o r e d e t a i l s see [Backus et al. 1957; C o c k e and S c h w a r t z 1970 p.511]) . S e c t i o n 5 w o u l d t h e n do the a c t u a l t r a n s f o r m a t i o n of the p r o g r a m f r o m o n e h a v i n g an u n l i m i t e d n u m b e r of i n d e x r e g i s t e r s to o n e h a v i n g o n l y three. A g a i n , the s e c t i o n w a s e n t i r e l y p l a n n e d and p r o g r a m m e d by Haibt.
and
took
charge
of
its
final
debug-
T h e f i n a l s e c t i o n of the c o m p i l e r , sect i o n 6, a s s e m b l e d the f i n a l p r o g r a m into a r e l o c a t a b l e b i n a r y p r o g r a m (it c o u l d also p r o d u c e a s y m b o l i c p r o g r a m in SAP, the S H A R E A s s e m b l y P r o g r a m for the 704). It p r o d u c e d a s t o r a g e m a p of the p r o g r a m and d a t a t h a t w a s a c o m p a c t s u m m a r y of the F O R TRAN output. Of c o u r s e it a l s o o b t a i n e d the n e c e s s a r y l i b r a r y p r o g r a m s for i n c l u s i o n in the o b j e c t p r o g r a m , i n c l u d i n g t h o s e req u i r e d to i n t e r p r e t F O R M A T s t a t e m e n t s and perform input-output operations. Taking a d v a n t a g e of the s p e c i a l f e a t u r e s of the p r o g r a m s it a s s e m b l e d , this a s s e m b l e r w a s a b o u t ten t i m e s f a s t e r t h a n SAP. It w a s d e s i g n e d and p r o g r a m m e d by Roy N u t t , w h o a l s o w r o t e all the I/O p r o g r a m s and the rel o c a t i n g b i n a r y l o a d e r for l o a d i n g o b j e c t programs. By the s u m m e r of 1956 l a r g e p a r t s of the system were working. S e c t i o n s I, 2, and 3 c o u l d p r o d u c e w o r k a b l e c o d e p r o v i d e d no more than three index registers were needed. A n u m b e r of t e s t p r o g r a m s w e r e c o m p i l e d and run at this time. N u t t t o o k p a r t of the s y s t e m to U n i t e d A i r c r a f t ( s e c t i o n s I, 2, and 3 and the p a r t of s e c t i o n 6 w h i c h p r o d u c e d SAP o u t p u t ) . T h i s p a r t of the s y s t e m w a s p r o d u c t i v e t h e r e f r o m the s u m m e r of 1956 u n t i l the c o m p l e t e s y s t e m w a s a v a i l a b l e in e a r l y 1957.
S e c t i o n 5 w a s p l a n n e d and p r o g r a m m e d by S h e l d o n Best, w h o w a s l o a n e d to our g r o u p by a g r e e m e n t w i t h his e m p l o y e r , C h a r l e s W. A d a m s , at the D i g i t a l C o m p u t e r L a b o r a t o r y at MIT; d u r i n g his s t a y w i t h us B e s t w a s a t e m p o r a r y IBM e m p l o y e e . S t a r t i n g in the e a r l y f a l l of 1955, he d e s i g n e d w h a t t u r n e d o u t to be, a l o n g w i t h s e c t i o n 2, o n e of the m o s t i n t r i c a t e and c o m p l e x s e c t i o n s of the c o m p i l e r , o n e w h i c h h a d p e r h a p s m o r e inf l u e n c e on the m e t h o d s u s e d in l a t e r comp i l e r s t h a n any o t h e r p a r t of the F O R T R A N compiler. (For a d i s c u s s i o n of his t ec h n i q u e s see [Cocke and S c h w a r t z 1970 pp. 510515].) It is i m p o s s i b l e to d e s c r i b e his r e g i s t e r a l l o c a t i o n m e t h o d here; it s u f f i c e s to say t h a t it w a s to b e c o m e the b a s i s for m u c h s u b s e q u e n t w o r k and p r o d u c e d code w h i c h w a s v e r y d i f f i c u l t to i m p r o v e .
F r o m late s p r i n g of 1956 to e a r l y 1957 the p a c e of d e b u g g i n g w a s i n t e n s e ; o f t e n w e w o u l d r e n t r o o m s in the L a n g d o n H o t e l (which d i s a p p e a r e d long ago) on 56th S t r e e t , s l e e p t h e r e a l i t t l e d u r i n g the d a y and t h e n s t a y up all n i g h t to g e t as m u c h u s e of the c o m p u t e r (in the h e a d q u a r t e r s a n n e x on 57th Street) as p o s s i b l e . It w a s an e x c i t i n g p e r i o d ; w h e n l a t e r on w e b e g a n to g e t f r a g m e n t s of c o m p i l e d p r o g r a m s out of the s y s t e m , w e w e r e o f t e n ast o n i s h e d at the s u r p r i s i n g t r a n s f o r m a t i o n s in the i n d e x i n g o p e r a t i o n s and in the arr a n g e m e n t of the c o m p u t a t i o n w h i c h the comp i l e r m a d e , c h a n g e s w h i c h m a d e the o b j e c t p r o g r a m e f f i c i e n t b u t w h i c h we w o u l d n o t h a v e t h o u g h t to m a k e as p r o g r a m m e r s o u r s e l v e s (even t h o u g h , of c o u r s e , N e l s o n or Z i l l e r c o u l d f i g u r e o u t h o w the i n d e x i n g w o r k e d , S h e r i d a n c o u l d e x p l a i n h o w an exp r e s s i o n had b e e n o p t i m i z e d b e y o n d r e c o g n i t i o n , and G o l d b e r g or S a y r e c o u l d tell us h o w s e c t i o n 5 h a d g e n e r a t e d a d d i t i o n a l indexing operations). T r a n s f e r s of c o n t r o l a p p e a r e d w h i c h c o r r e s p o n d e d to no s o u r c e s t a t e m e n t , e x p r e s s i o n s w e r e r a d i c a l l y rea r r a n g e d , and the same DO s t a t e m e n t m i g h t p r o d u c e no i n s t r u c t i o n s in the o b j e c t p r o g r a m in o n e c o n t e x t , and in a n o t h e r it w o u l d p r o d u c e m a n y i n s t r u c t i o n s in d i f f e r ent p l a c e s in the p r o g r a m .
A l t h o u g h I b e l i e v e that no p r o v a b l y o p t i m a l r e g i s t e r a l l o c a t i o n a l g o r i t h m is k n o w n for g e n e r a l p r o g r a m s w i t h loops, etc., e m p i r i c a l l y B e s t ' s 1 9 5 5 - 5 6 p r o c e d u r e app e a r e d to be o p t i m a l . For s t r a i g h t - l i n e c o d e B e s t ' s r e p l a c e m e n t p o l i c y w a s the same as t h a t u s e d in B e l a d y ' s M I N a l g o r i t h m , w h i c h B e l a d y p r o v e d to be o p t i m a l [Belady 1965]. Although Best did not publish a f o r m a l p r o o f , he h a d c o n v i n c i n g a r g u m e n t s for the o p t i m a l i t y of his p o l i c y in 1955. L a t e in 1955 it w a s r e c o g n i z e d t h a t y e t a n o t h e r s e c t i o n , s e c t i o n 3, w a s n e e d e d . T h i s s e c t i o n m e r g e d the o u t p u t s of the prec e d i n g s e c t i o n s into a s i n g l e u n i f o r m 704 p r o g r a m w h i c h c o u l d r e f e r to any n u m b e r of index registers. It w a s p l a n n e d and p r o g r a m m e d by R i c h a r d G o l d b e r g , a m a t h e m a t i c i a n w h o j o i n e d us in N o v e m b e r 1955. Also, late in 1956, a f t e r B e s t h a d r e t u r n e d to M I T a n d d u r i n g the d e b u g g i n g of the system, s e c t i o n 5 was t a k e n o v e r by G o l d b e r g and D a v i d S a y r e (see b e l o w ) , w h o d i a g r a m m e d it c a r e -
By the s u m m e r of 1956 w h a t a p p e a r e d to be the i m m i n e n t c o m p l e t i o n of the p r o j e c t s t a r t e d us w o r r y i n g (for p e r h a p s the f i r s t
172
time) a b o u t d o c u m e n t a t i o n . D a v i d Sayre, a c r y s t a l l o g r a p h e r w h o had j o i n e d us in the s p r i n g (he h a d e a r l i e r c o n s u l t e d w i t h B e s t on the d e s i g n of s e c t i o n 5 and had l a t e r b e g u n s e r v i n g as s e c o n d - i n - c o m m a n d of w h a t w a s n o w the '~Programming R e s e a r c h D e p a r t m e n t " ) took up the task of w r i t i n g the P r o g r a m m e r ' s R e f e r e n c e M a n u a l [IBM 1956]. It a p p e a r e d in a g l o s s y cover, h a n d s o m e l y p r i n t e d , w i t h the d a t e O c t o b e r 15, 1956. It s t o o d for some time as a u n i q u e e x a m p l e of a m a n u a l for a p r o g r a m m i n g l a n g u a g e (perhaps it s t i l l does): it h a d w i d e m a r g i n s , y e t was o n l y 51 p a g e s long. Its d e s c r i p t i o n of the F O R T R A N l a n g u a g e , e x c l u s i v e of i n p u t - o u t p u t s t a t e m e n t s , w a s 21 pages; the I/O d e s c r i p t i o n o c c u p i e d a n o t h e r 11 pages; the r e s t of it was e x a m p l e s and d e t a i l s a b o u t a r i t h m e t i c , t a b l e s , etc.. It g a v e an e l e g a n t r e c u r s i v e d e f i n i t i o n of e x p r e s s i o n s (as g i v e n b y S h e r idan), and c o n c i s e , c l e a r d e s c r i p t i o n s , w i t h e x a m p l e s , of e a c h s t a t e m e n t type, of w h i c h t h e r e w e r e 32, m o s t l y m a c h i n e d e p e n d e n t items like S E N S E LIGHT, IF D I V I D E CHECK, PUNCH, R E A D DRUM, and so on. (For e x a m p l e s of its s t y l e see figs. I, 2, and 3.)
time at n i g h t on t h e i r 704 to h e l p us in our m a d r u s h to d i s t r i b u t e the system. Up to this p o i n t t h e r e h a d b e e n r e l a t i v e l y l i t t l e i n t e r e s t f r o m 704 i n s t a b l a t i o n s (with the e x c e p t i o n of R a m s h a w ' s U n i t e d A i r c r a f t shop, H a r r y C a n t r e l l ' s GE i n s t a l l a t i o n in S c h e n e c t a d y , and S i d n e y F e r n b a c h ' s L i v e r m o r e o p e r a t i o n ) , b u t n o w t h a t the full system was b e g i n n i n g to g e n e r a t e o b j e c t p r o grams, i n t e r e s t p i c k e d up in a n u m b e r of places. S o m e t i m e in e a r l y A p r i l 1957 we felt the s y s t e m w a s s u f f i c i e n t l y b u g - f r e e to d i s t r i b ute to all 704 i n s t a l l a t i o n s . S a y r e and Grace Mitchell (see below) s t a r t e d to p u n c h out the b i n a r y d e c k s of the system, e a c h of a b o u t 2,000 cards, w i t h the i n t e n t i o n to m a k e 30 or 40 d e c k s for d i s t r i b u t i o n . This p r o c e s s was so e r r o r - p r o n e t h a t they h a d to g i v e up a f t e r s p e n d i n g an e n t i r e n i g h t in p r o d u c i n g o n l y one or two decks. ( A p p a r e n t l y one of t h o s e d e c k s was sent, w i t h o u t any i d e n t i f i c a t i o n or d i r e c t i o n s , to the W e s t i n g h o u s e B e t t i s i n s t a l l a t i o n , w h e r e a p u z z l e d g r o u p h e a d e d by H e r b e r t S. B r i g h t , s u s p e c t i n g t h a t it m i g h t be the l o n g - a w a i t e d F O R T R A N deck, p r o c e e d e d , ent i r e l y by g u e s s w o r k , to g e t it to c o m p i l e a test p r o g r a m - - a f t e r a d i a g n o s t i c p r i n t out noting that a comma was missing in a s p e c i f i c s t a t e m e n t ! This p r o g r a m then p r i n t e d 28 p a g e s of c o r r e c t r e s u l t s - - w i t h a few F O R M A T errors. The date: A p r i l 20, 1957. A n a m u s i n g a c c o u n t of this i n c i d e n t by B r i g h t is in C o m p u t e r s and A u t o m a t i o n [Bright 1971].)
One f e a t u r e of F O R T R A N I is m i s s i n g f r o m the P r o g r a m m e r ' s R e f e r e n c e M a n u a l , n o t f r o m an o v e r s i g h t of S a y r e ' s , b u t b e c a u s e it w a s a d d e d to the s y s t e m a f t e r the m a n u a l was w r i t t e n and b e f o r e the s y s t e m w a s d i s t r i b uted. This f e a t u r e was the a b i l i t y to define a f u n c t i o n by a " f u n c t i o n s t a t e m e n t " . T h e s e s t a t e m e n t s h a d to p r e c e d e the r e s t of the p r o g r a m . They looked like assignment s t a t e m e n t s , w i t h the d e f i n e d f u n c t i o n and d u m m y a r g u m e n t s on the left and an e x p r e s sion i n v o l v i n g t h o s e a r g u m e n t s on the right. T h e y are d e s c r i b e d in the a d d e n d a to the P r o g r a m m e r ' s R e f e r e n c e M a n u a l [Addenda 1957] w h i c h we sent on F e b r u a r y 8, 1957 to J o h n G r e e n s t a d t , w h o was in c h a r g e of I B M ' s facility for d i s t r i b u t i n g i n f o r m a t i o n to SHARE. T h e y are a l s o d e s c r i b e d in all subs e q u e n t m a t e r i a l o n F O R T R A N I.
A f t e r f a i l i n g to p r o d u c e b i n a r y decks, S a y r e d e v i s e d and p r o g r a m m e d the s i m p l e e d i t o r and l o a d e r that m a d e it p o s s i b l e to d i s t r i b u t e and u p d a t e the s y s t e m f r o m m a g n e t i c tapes; this a r r a n g e m e n t s e r v e d as the m e c h a n i s m for c r e a t i n g n e w s y s t e m t a p e s from a m a s t e r tape and the b i n a r y c o r r e c t i o n c a r d s w h i c h our g r o u p w o u l d g e n e r a t e in l a r g e n u m b e r s d u r i n g the long f i e l d d e b u g g i n g and m a i n t e n a n c e p e r i o d w h i c h f o l l o w e d distribution.
The n e x t d o c u m e n t a t i o n t a s k we set ours e l v e s w a s to w r i t e a p a p e r d e s c r i b i n g the F O R T R A N l a n g u a g e and the t r a n s l a t o r p r o g r a m . The r e s u l t was a p a p e r e n t i t l e d "The F O R T R A N a u t o m a t i c c o d i n g s y s t e m " [Backus et al. 1957] w h i c h we p r e s e n t e d at the W e s t e r n J o i n t C o m p u t e r C o n f e r e n c e in Los A n g e l e s in F e b r u a r y 1957. I h a v e m e n t i o n e d all of the t h i r t e e n a u t h o r s of t h a t p a p e r in the prec e d i n g n a r r a t i v e e x c e p t one: R o b e r t A. Hughes. He was e m p l o y e d by the L i v e r m o r e R a d i a t i o n L a b o r a t o r y ; by a r r a n g e m e n t w i t h S i d n e y F e r n b a c h , he v i s i t e d us for two or t h r e e m o n t h s in the s u m m e r of 1956 to h e l p us d o c u m e n t the system. (The a u t h o r s of t h a t p a p e r were: J. W. B a c k u s , R. J. B e e b e r , S. Best, R. G o l d b e r g , L. M. Haibt, H. L. H e r r i c k , R. A. H u g h e s , R. A. N e l s o n , R. Nutt, D. Sayre, P. B. S h e r i d a n , H. Stern, I. Ziller.)
W i t h the d i s t r i b u t i o n of the s y s t e m tapes went a "Preliminary Operator's Manual" [ O p e r a t o r ' s M a n u a l 1957] d a t e d A p r i l 8, 1957. It d e s c r i b e s h o w to use the tape editor and h o w to m a i n t a i n the l i b r a r y of functions. F i v e p a g e s of such g e n e r a l ins t r u c t i o n s are f o l l o w e d by 32 p a g e s of err o r stops; m a n y of t h e s e say " s o u r c e p r o g r a m error, g e t off m a c h i n e , c o r r e c t form u l a in q u e s t i o n and r e s t a r t p r o b l e m " and then, for e x a m p l e (stop 3624) " n o n - z e r o l e v e l r e d u c t i o n due to i n s u f f i c i e n t or red u n d a n t p a r e n t h e s e s in a r i t h m e t i c or IFtype f o r m u l a " . S h o r t l y a f t e r the d i s t r i b u t i o n of the s y s t e m we d i s t r i b u t e d - - o n e c o p y per i n s t a l l a t i o n - - w h a t was f o n d l y k n o w n as the "Tome", the c o m p l e t e s y m b o l i c l i s t i n g of the e n t i r e c o m p i l e r plus o t h e r s y s t e m and d i a g n o s t i c i n f o r m a t i o n , an 11" by 15" v o l u m e a b o u t four or five i n c h e s thick.
At a b o u t the time of the W e s t e r n J o i n t C o m p u t e r C o n f e r e n c e w e s p e n t some t i m e in Los A n g e l e s s t i l l f r a n t i c a l l y d e b u g g i n g the system. N o r t h A m e r i c a n A v i a t i o n g a v e us
173
Subscripts. GENERAL
FORM
EXAMPLES
Let v represent any fixed point variable and c (or c') any-unsigned fixed point constant. Then a subscript is an expression of one of the forms:
I 3 MU+2 MU-2 5*J 5"J+2 5"J-2
V C V+C or V--C c*v c* V + C ' or c*v--c'
T h e symbol • denotes multiplication. T h e variable v must not itself b e subscripted.
Subscripted Variables. GENERAL
FORM
EXAMPLES
A fixed or floating point variable
A(I)
followed, by parentheses enclosing 1, 2, or 3 subscripts separated by commas.
K(3) BEIA(5*.I-2, K + 2,L)
For each wlriable that appears in subscripted form the size of the array (i.e. the maxinuun wdues which its subscripts can attain) must be stated in a D I M E N SION statement (see Chapter 6) preceding the first appearance of the variable. The m i n i m u m value which a subscript may assume in the object p r o g r a m is + 1.
A rrangement o / A rrays in Storage. A 2-dimensional array A will, in the object program, be stored sequentially in the order A1,1, A2.1, • . . . . .
Am,l, A],z, A2,2, • . . . . .
Am,2, • . . . . . . . .
Am,,. Thus
it is stored "columnwise", with the first of its subscripts varying most rapidly, and the last varying least rapidly. The same is true of 3-dimensional arrays. l-dimensional arrays are of course simply stored sequentially. All arrays are stored backwards in storage; i.e. the above sequence is in the order of decreasing absolute location.
II
Figure
I:
O r i g i n a l F O R T R A N Manual,
174
Page
11
A n y such routine will be compiled into the object program as a closed subroutine. In the section on Writing Subroutines for the Master Tape in Chapter 7 are given the specifications which any such routine must meet.
Expressions
A n expression is any sequence of constants, w~riables (subscripted or not subscripted), and functions, separated by operation symbols, commas, and parentheses so as to form a meaningful mattmmatical expression. However, one special restriction does exist. A FORTRAN expression may be either a fixed or a lloating point expression, but it must not be a mixed expression. This does not mean that a floating point quantity can not appear in a fixed point expression, or vice versa, but rather that a quantity of one mode can appear in an expression of the other mode only in certain ways. Brielty, a floating point quantity can appear in a fixed point expression only as an a r g u m e n t of a function; a fixed point quantity can appear in a floating point expression only as an argument of a function, or as a subscript, or as an exponent.
Formal Rules /or Forming Expressions.
By repeated use of the following
rules, all permissible expressions may be derived. 1. Any fixed point (floating point) constant, variable, or subscripted variable is an expression of the same mode. Thus 3 and I are fixed point expressions, and AI.I'HA and A(I,J,K) are tloating point exprcssi~ms. 2.
If SOMEF is some function of n wLriahles, and if E, F . . . . . . H are a set of n expressions of the correct modes for SOMEF, then SONIEF (E, F, . . . . , H) is an expression of the same mode as SOMEF.
3.
If E is an expression, and if its lirst character is not -t or --, then t- E and --E are expressions of the same mode as E. Thus - A is an expression, but -k-A is not.
4.
If E is an expression, then (E) is an expression of the same mode as E. Thus (A), ( ( A ) ) , ( ( ( A ) ) ) , . c t c . are expressions.
5.
If E and F are expressions of the same mode, and if the first character of F is not + o r - - , then
E+F E-F E* F [/F are expressions of the same mode. Thus A - - + B and A / 4 B are not expressions. The characters + , - , *, and / denote addition, subtraction, multiplication, and division. 14
Figure 2: Original FORTRAN Manual, Page 14 175
STOP
GENERAL FORM
EXAMPLES
"STOP" or "STOP n" where n is an
STOP
unsigned octal fixed point constant.
STOP 77777
This statement causes the m a c h i n e to H A L T in such a way that pressing the S T A R T button has no effect. Therefore, in c o n t r a s t to the P A U S E , it is used where a g e t - o i l - t h e - m a c h i n e stop, r a t h e r than a t e m p o r a r y stop, is desired. T h e octal n u m b e r n is d i s p l a y e d on the 704 console in the a d d r e s s field of the storage register. ( I f n is not stated it is taken to be 0.)
DO GENERAL FORM
EXAMPLES
"DO n i = m,, m2" or "DO n i = m,, m2, m3"
DO 301 = 1,10
where n is a statement number, i is a
DO301 = 1, M, 3
non-subscripted fixed point variable, and m,, m2, ma are each either an unsigned fixed point constant or a non-subscripted fixed point variable. If ma is not stated it is taken to be 1.
T h e D O s t a t e m e n t is a c o m m a n d to " D O the statements which follow, to and including the s t a t e m e n t with s t a t e m e n t n u m b e r n, repeatedly, the first time with i = m~ a n d with i increased by mz for each succeeding time; after they have been done with i equal to the highest of this sequence of values which does not e x c e e d m., let control reach the s t a t e m e n t following the s t a t e m e n t with statem c n t n u m b e r n". T h e range of a D O is the set of statements which will be e x e c u t e d rep e a t e d l y ; it is the sequence of consecutive statements i m m e d i a t e l y following the D O , to a n d including the s t a t e m e n t n u m b e r e d n. T h e index of a D O is the fixed p o i n t variable i, which is c o n t r o l l e d by the D O in such a way that its value begins at m l a n d is i n c r e a s e d each time by ma until it is a b o u t to exceed m > T h r o u g h o u t the range it is available for c o m putation, either as an o r d i n a r y fixed p o i n t variable o r as the variable of a subscript. D u r i n g the last execution of the range, the D O is said to be satisfied. Suppose, for e x a m p l e , that c o n t r o l has r e a c h e d s t a t e m e n t
10 of the
program 10
DO 11 I =
11
A(I) =
1, 10
I*N(I)
12
20 Figure
3: Original
FORTRAN Manual,
176
Page
20
d i a g n o s t i c s y s t e m and d e s c r i b e s the n e w "subroutine definition" and END statements, plus some o t h e r s w h i c h w e r e n o t i m p l e m e n t e d . It d e s c r i b e s h o w s y m b o l i c i n f o r m a t i o n is r e t a i n e d in the r e l o c a t a b l e b i n a r y f o r m of a s u b r o u t i n e so t h a t the " b i n a r y s y m b o l i c s u b r o u t i n e [BSS] l o a d e r " can i m p l e m e n t refe r e n c e s to s e p a r a t e l y c o m p i l e d s u b r o u t i n e s . It d e s c r i b e s n e w p r o l o g u e s for t h e s e subr o u t i n e s and p o i n t s o u t that m i x t u r e s of F O R T R A N - c o d e d and a s s e m b l y - c o d e d r e l o c a t a b l e b i n a r y p r o g r a m s c o u l d be l o a d e d and run t o g e t h e r . It d o e s n o t d i s c u s s the F U N C T I O N s t a t e m e n t t h a t w a s a l s o a v a i l a b l e in F O R T R A N II. F O R T R A N II w a s d e s i g n e d m o s t l y by N e l s o n , Ziller, and m y s e l f . Mitchell p r o g r a m m e d the m a j o r i t y of n e w c o d e for F O R T R A N II (with the m o s t u n u s u a l f e a t u r e that she d e l i v e r e d it a h e a d of s c h e d u l e ) . She w a s a i d e d in this b y B e r n y c e B r a d y and L e R o y May. S h e r i d a n p l a n n e d and m a d e the n e c e s s a r y c h a n g e s in his p a r t of s e c t i o n I; N u t t did the same for s e c t i o n 6. FORTRAN II w a s d i s t r i b u t e d in the s p r i n g of 1958.
The p r o p r i e t o r s of the six s e c t i o n s w e r e k e p t b u s y t r a c k i n g d o w n b u g s e l i c i t e d by our c u s t o m e r s ' u s e of F O R T R A N u n t i l the late s u m m e r of 1957. Hal S t e r n s e r v e d as the coo r d i n a t o r of the f i e l d d e b u g g i n g and m a i n t e n a n c e effort; he r e c e i v e d a s t r e a m of t e l e g r a m s , m a i l and p h o n e c a l l s f r o m all o v e r the c o u n t r y and d i s t r i b u t e d the inc o m i n g p r o b l e m s to the a p p r o p r i a t e m e m b e r s of our g r o u p to t r a c k d o w n the e r r o r s and g e n e r a t e c o r r e c t i o n cards, w h i c h he then d i s t r i b u t e d to e v e r y i n s t a l l a t i o n . In the s p r i n g of 1957 G r a c e E. M i t c h e l l j o i n e d o u r g r o u p to w r i t e the P r o g r a m m e r ' s P r i m e r [IBM 1957] for F O R T R A N . The P r i m e r w a s d i v i d e d into t h r e e s e c t i o n s ; e a c h d e s c r i b e d s u c c e s s i v e l y l a r g e r s u b s e t s of the l a n g u a g e a c c o m p a n i e d by m a n y e x a m p l e p r o grams. The f i r s t e d i t i o n of the P r i m e r was i s s u e d in the late fall or w i n t e r of 1957; a s l i g h t l y r e v i s e d e d i t i o n a p p e a r e d in March 1958. M i t c h e l l p l a n n e d and w r o t e the 6 4 - p a g e P r i m e r w i t h some c o n s u l t a t i o n w i t h the r e s t of the group; she l a t e r programmed m o s t of the e x t e n s i v e c h a n g e s in the s y s t e m w h i c h r e s u l t e d in F O R T R A N II (see below).
5.
A r e p o r t on F O R T R A N u s a g e in N o v e m b e r 1958 [Backus 1958] says that "a s u r v e y in A p r i l [1958] of t w e n t y - s i x 704 i n s t a l l a t i o n s i n d i c a t e s t h a t o v e r half of t h e m use F O R T R A N [I] for m o r e than h a l f of t h e i r p r o b l e m s . M a n y use it for 80~ or m o r e of t h e i r w o r k . . . and a l m o s t all use it for some of t h e i r work." By the fall of 1958 t h e r e w e r e some 60 i n s t a l l a t i o n s w i t h a b o u t 66 704s, and "... m o r e t h a n h a l f the m a c h i n e i n s t r u c tions for t h e s e m a c h i n e s are b e i n g p r o d u c e d by F O R T R A N . SHARE recently designated FORT R A N as the s e c o n d o f f i c i a l m e d i u m for t r a n s m i t t a l of p r o g r a m s [SAP w a s the first]
4.
."
FORTRAN
III
W h i l e F O R T R A N II w a s b e i n g d e v e l o p e d , Z i l l e r w a s d e s i g n i n g an e v e n m o r e a d v a n c e d s y s t e m t h a t he c a l l e d F O R T R A N III. It all o w e d o n e to w r i t e i n t e r m i x e d s y m b o l i c ins t r u c t i o n s and F O R T R A N s t a t e m e n t s . The symb o l i c (704) i n s t r u c t i o n s c o u l d h a v e F O R T R A N v a r i a b l e s (with or w i t h o u t s u b s c r i p t s ) as "addresses". In a d d i t i o n to this m a c h i n e d e p e n d e n t f e a t u r e (which a s s u r e d the d e m i s e of F O R T R A N III a l o n g w i t h t h a t of the 704), it c o n t a i n e d e a r l y v e r s i o n s of a n u m b e r of i m p r o v e m e n t s t h a t w e r e l a t e r to a p p e a r in F O R T R A N IV. It had " B o o l e a n " e x p r e s s i o n s , f u n c t i o n and s u b r o u t i n e n a m e s c o u l d be p a s s e d as a r g u m e n t s , and it had f a c i l i t i e s for h a n d l i n g a l p h a n u m e r i c data, i n c l u d i n g a n e w F O ~ 4 A T c o d e "A" s i m i l a r to c o d e s "I" and "E". This s y s t e m w a s p l a n n e d and p r o g r a m m e d by Z i l l e r w i t h some h e l p f r o m N e l s o n and Nutt. Z i l l e r m a i n t a i n e d it and m a d e it a v a i l a b l e to a b o u t 20 (mostly IBM) i n s t a l lations. It w a s n e v e r d i s t r i b u t e d g e n e r a l ly. It was a c c o m p a n i e d by a b r i e f d e s c r i p tive d o c u m e n t [ A d d i t i o n s to F O R T R A N II 1958]. It b e c a m e a v a i l a b l e on this l i m i t e d s c a l e in the w i n t e r of 1 9 5 8 - 5 9 and was in o p e r a t i o n u n t i l the e a r l y s i x t i e s , in p a r t on the 709 u s i n g the c o m p a t i b i l i t y f e a t u r e (which m a d e the 709 o r d e r code the same as that of the 704).
The P r i m e r had an i m p o r t a n t i n f l u e n c e on the s u b s e q u e n t g r o w t h in the use of the system. I b e l i e v e it was the o n l y a v a i l a b l e s i m p l i f i e d i n s t r u c t i o n m a n u a l (other t h a n r e f e r e n c e m a n u a l s ) u n t i l the l a t e r a p p e a r ance of b o o k s such as [ M c C r a c k e n 1961], [ O r g a n i c k 1963] and m a n y others.
.,
FORTRAN
II
D u r i n g the f i e l d d e b u g g i n g p e r i o d some s h o r t c o m i n g s of the s y s t e m d e s i g n , w h i c h we h a d b e e n a w a r e of e a r l i e r b u t h a d no time to deal with, w e r e c o n s t a n t l y c o m i n g to o u r attention. In the e a r l y fall of 1957 we s t a r t e d to p l a n w a y s of c o r r e c t i n g t h e s e shortcomings; a document dated September 25, 1957 [Proposed S p e c i f i c a t i o n s 1957] c h a r a c t e r i z e s t h e m as (a) a n e e d for b e t t e r d i a g n o s t i c s , c l e a r e r c o m m e n t s a b o u t the n a t u r e of s o u r c e p r o g r a m errors, and (b) the n e e d for s u b r o u t i n e d e f i n i t i o n c a p a b i l ities. "(Although o n e F O R T R A N I d i a g n o s t i c w o u l d p i n p o i n t , in a p r i n t o u t , a m i s s i n g c o m m a in a p a r t i c u l a r s t a t e m e n t , o t h e r s c o u l d be v e r y c r y p t i c . ) This d o c u m e n t is t i t l e d " P r o p o s e d S p e c i f i c a t i o n s for F O R T R A N II for the 704"; it s k e t c h e s a m o r e g e n e r a l
6.
FORTRAN
after
1958;
comments.
By the end of 1958 or e a r l y 1959 the FORTRAN g r o u p (the P r o g r a m m i n g R e s e a r c h D e p a r t m e n t ) , w h i l e s t i l l h e l p i n g w i t h an occasional debugging problem with FORTRAN II, was p r i m a r i l y o c c u p i e d w i t h o t h e r research. A n o t h e r IBM d e p a r t m e n t had long s i n c e t a k e n r e s p o n s i b i l i t y for the F O R T R A N s y s t e m and was r e v i s i n g it in the c o u r s e of p r o d u c i n g a t r a n s l a t o r for the 709 w h i c h u s e d the same p r o c e d u r e s as the 704 F O R T R A N II t r a n s l a t o r . S i n c e m y f r i e n d s and I no l o n g e r h a d r e s p o n s i b i l i t y for F O R T R A N and
177
w e r e b u s y t h i n k i n g a b o u t o t h e r t h i n g s by the end of 1958, t h a t s e e m s like a g o o d p o i n t to b r e a k off this a c c o u n t . There r e m a i n o n l y a f e w c o m m e n t s to be m a d e a b o u t the s u b s e q u e n t d e v e l o p m e n t of F O R T R A N . The m o s t o b v i o u s d e f e c t in F O R T R A N II for m a n y of its u s e r s w a s the t i m e s p e n t in compiling. E v e n t h o u g h the f a c i l i t i e s of F O R T R A N II p e r m i t t e d s e p a r a t e c o m p i l a t i o n of s u b r o u t i n e s and h e n c e e l i m i n a t e d the n e e d to r e c o m p i l e an e n t i r e p r o g r a m at e a c h s t e p in d e b u g g i n g it, n e v e r t h e l e s s c o m p i l e t i m e s w e r e long and, d u r i n g d e b u g g i n g , the c o n s i d e r a b l e time s p e n t in o p t i m i z i n g w a s wasted. I r e p e a t e d l y s u g g e s t e d to t h o s e w h o w e r e in c h a r g e of F O R T R A N t h a t t h e y should now develop a fast compiler and/or i n t e r p r e t e r w i t h o u t any o p t i m i z i n g a t all for use d u r i n g d e b u g g i n g and for s h o r t - r u n jobs. U n f o r t u n a t e l y the d e v e l o p e r s of F O R T R A N IV t h o u g h t t h e y c o u l d h a v e the b e s t of b o t h w o r l d s in a s i n g l e c o m p i l e r , o n e w h i c h was b o t h f a s t and p r o d u c e d o p t i m i z e d code. I w a s u n s u c c e s s f u l in c o n v i n c i n g t h e m t h a t two c o m p i l e r s w o u l d h a v e b e e n far b e t ter t h a n the c o m p r o m i s e w h i c h b e c a m e the o r i g i n a l F O R T R A N IV c o m p i l e r . The latter w a s not n e a r l y as f a s t as l a t e r c o m p i l e r s like W A T F O R [Cress, D i r k s e n a n d G r a h a m 1970] nor did it p r o d u c e as g o o d c o d e as F O R T R A N II. (For m o r e d i s c u s s i o n of l a t e r d e v e l o p m e n t s w i t h F O R T R A N see [Backus and H e i s i n g 196~] .) M y o w n o p i n i o n as to the e f f e c t of F O R T R A N on l a t e r l a n g u a g e s and the c o l l e c t i v e i m p a c t of such l a n g u a g e s on p r o g r a m m i n g g e n e r a l l y is n o t a p o p u l a r o p i n i o n . That v i e w p o i n t is the s u b j e c t of a long p a p e r [Backus 1978] w h i c h s h o u l d a p p e a r soon in the C o m m u n i c a t i o n s of the ACM. I n o w reg a r d all c o n v e n t i o n a l l a n g u a g e s (e.g., the F O R T R A N s , the A L G O L s , t h e i r s u c c e s s o r s and derivatives) as i n c r e a s i n g l y c o m p l e x e l a b o r a t i o n s of the s t y l e of p r o g r a m m i n g d i c t a t e d by the v o n N e u m a n n c o m p u t e r . These "von N e u m a n n l a n g u a g e s " c r e a t e e n o r m o u s , u n n e c e s s a r y i n t e l l e c t u a l r o a d b l o c k s in t h i n k i n g a b o u t p r o g r a m s and in c r e a t i n g the h i g h e r l e v e l c o m b i n i n g f o r m s r e q u i r e d in a really powerful programming methodology. V o n N e u m a n n l a n g u a g e s c o n s t a n t l y k e e p our n o s e s p r e s s e d in the d i r t of a d d r e s s comp u t a t i o n and the s e p a r a t e c o m p u t a t i o n of s i n g l e w o r d s , w h e r e a s w e s h o u l d be f o c u s i n g o n the f o r m and c o n t e n t of the o v e r a l l res u l t we are t r y i n g to p r o d u c e . We have c o m e to r e g a r d the DO, FOR, W H I L E s t a t e m e n t s and the like as p o w e r f u l tools, w h e r e a s t h e y are in f a c t w e a k p a l l i a t i v e s t h a t are n e c e s s a r y to m a k e the p r i m i t i v e v o n N e u m a n n s t y l e of p r o g r a m m i n g v i a b l e at all.
s t a r t i n g w i t h a small, e l e g a n t f r a m e w o r k - b u t m u s t be b u i l t into the f r a m e w o r k of the l a n g u a g e at the outset. T h e G a r g a n t u a n size of r e c e n t v o n N e u m a n n l a n g u a g e s is e l o q u e n t p r o o f of t h e i r i n a b i l i t y to d e f i n e n e w constructs: for no o n e w o u l d b u i l d in so m a n y c o m p l e x f e a t u r e s if t h e y c o u l d be d e f i n e d and w o u l d fit i n t o the e x i s t i n g f r a m e w o r k l a t e r on. The w o r l d of e x p r e s s i o n s has s o m e e l e g a n t and u s e f u l m a t h e m a t i c a l p r o p e r t i e s w h e r e a s the w o r l d of s t a t e m e n t s is a d i s o r d e r l y one, without useful mathemetical properties. S t r u c t u r e d p r o g r a m m i n g c a n be v i e w e d as a m o d e s t e f f o r t to i n t r o d u c e a s m a l l a m o u n t of o r d e r into the c h a o t i c w o r l d of s t a t e ments. The work of Hoare [1969], Dijkstra [1976] and o t h e r s to a x i o m a t i z e the p r o p e r t i e s of the s t a t e m e n t w o r l d can be v i e w e d as a v a l i a n t and e f f e c t i v e e f f o r t to be p r e c i s e a b o u t t h o s e p r o p e r t i e s , u n g a i n l y as t h e y m a y be. This is n o t the p l a c e for m e to e l a b o r a t e any f u r t h e r m y v i e w s a b o u t v o n N e u m a n n languages. M y p o i n t is this: w h i l e it w a s p e r h a p s n a t u r a l and i n e v i t a b l e t h a t lang u a g e s like F O R T R A N and its s u c c e s s o r s s h o u l d h a v e d e v e l o p e d o u t of the c o n c e p t of the v o n N e u m a n n c o m p u t e r as t h e y did, the fact that such languages have dominated our t h i n k i n g for t w e n t y y e a r s is u n f o r t u n a t e . It is u n f o r t u n a t e b e c a u s e t h e i r l o n g - s t a n d ing f a m i l i a r i t y w i l l m a k e it h a r d for us to u n d e r s t a n d and a d o p t n e w p r o g r a m m i n g s t y l e s w h i c h one d a y w i l l o f f e r far g r e a t e r i n t e l l e c t u a l and c o m p u t a t i o n a l power. Acknowledgments My g r e a t e s t d e b t in c o n n e c t i o n w i t h this p a p e r is to m y o l d f r i e n d s and c o l l e a g u e s w h o s e c r e a t i v i t y , h a r d w o r k and i n v e n t i o n made FORTRAN possible. It is a p l e a s u r e to a c k n o w l e d g e m y g r a t i t u d e to t h e m for t h e i r c o n t r i b u t i o n s to the p r o j e c t , for m a k i n g our w o r k t o g e t h e r so long ago s u c h a c o n g e n i a l and m e m o r a b l e e x p e r i e n c e , and, m o r e r e c e n t l y , for p r o v i d i n g m e w i t h a g r e a t a m o u n t of i n f o r m a t i o n and h e l p f u l m a t e r i a l in p r e p a r i n g this p a p e r a n d for t h e i r c a r e ful r e v i e w s of an e a r l i e r draft. F o r all this I t h a n k all t h o s e w h o w e r e a s s o c i a t e d w i t h the F O R T R A N p r o j e c t b u t w h o are too n u m e r o u s to l i s t here. In p a r t i c u l a r I w a n t to t h a n k t h o s e w h o w e r e the p r i n c i p a l m o v e r s in m a k i n g F O R T R A N a r e a l i t y : S h e l d o n Best, R i c h a r d G o l d b e r g , L o i s H a i b t , H a r l a n H e r r i c k , G r a c e M i t c h e l l , R o b e r t N e l s o n , Roy Nutt, D a v i d Sayre, P e t e r S h e r i d a n , and I r v i n g Ziller. I a l s o w i s h to t h a n k B e r n a r d G a l l e r , J. A. N. Lee, a n d H e n r y T r o p p for t h e i r amiable, e x t e n s i v e and i n v a l u a b l e s u g g e s t i o n s for i m p r o v i n g the f i r s t d r a f t of this paper. I am g r a t e f u l too for all the w o r k of the p r o g r a m c o m m i t t e e in p r e p a r i n g h e l p f u l q u e s t i o n s t h a t s u g g e s t e d a n u m b e r of t o p i c s in the paper.
By s p l i t t i n g p r o g r a m m i n g into a w o r l d of e x p r e s s i o n s on the o n e h a n d and a w o r l d of s t a t e m e n t s on the o t h e r , v o n N e u m a n n lang u a g e s p r e v e n t the e f f e c t i v e u s e of h i g h e r leve l c o m b i n i n g forms; the l a c k of the latter m a k e s the d e f i n i t i o n a l c a p a b i l i t i e s of y o n N e u m a n n l a n g u a g e s so w e a k t h a t m o s t of t h e i r i m p o r t a n t f e a t u r e s c a n n o t be d e f i n e d - -
178
REFERENCES Most of the items listed b e l o w have dates in the fifties, thus m a n y that appeared in the open l i t e r a t u r e will be o b t a i n a b l e only in the largest and oldest collections. The items with an asterisk were either not published or were of such a nature as to m a k e their a v a i l a b i l i t y even less likely than that of the other items.
m a t i c p r o g r a m m i n g systems. In Proc. Symp. on A u t o m a t i c P r o g r a m m i n g for Digital Computers. W a s h i n g t o n DC: The O f f i c e of Naval Research. Backus, J. W.; Beeber, R. J.; Best, S.; Goldberg, R.; Haibt, L. M.; Herrick, H. L.; Nelson, R. A.; Sayre, D.; Sheridan, P. B.; Stern, H.; Ziller, I.; Hughes, R. A.; and Nutt, R. 1957 February. The F O R T R A N a u t o m a t i c coding system. In Proc. W e s t e r n Joint Computer Conf. Los Angeles.
Adams, Charles W. and Laning, J. H., Jr. 195~ May. The MIT systems of automatic coding: C o m p r e h e n s i v e , Summer Session, and Algebraic. In Proc. Symp. on Automatic P r o g r a m m i n g for Digital Computers. W a s h i n g t o n DC: The O f f i c e of Naval Research.
Baker, Charles L. 1956 October. The PACT I coding system for the IBM Type 701. JACM 3 (4): 272-278.
•Addenda to the F O R T R A N P r o g r a m m e r ' s Reference Manual. 1957 F e b r u a r y 8. (Transm i t t e d to Dr. John Greenstadt, Special Programs Group, A p p l i e d Science Division, IBM, for d i s t r i b u t i o n to SHARE members, by letter from John W. Backus, Programming R e s e a r c h Dept. IBM. 5 pages.)
Belady, L . A . 1965 June 15. Measurements on programs: one level store simulation. Y o r k t o w n H e i g h t s NY: IBM Thomas J. W a t s o n R e s e a r c h Center. R e p o r t RC 1420. B6hm, Corrado 1954. C a l c u l a t r i c e s digitales: Du d ~ c h i f f r a g e de formules logic o - m a t h ~ m a t i q u e s par la m a c h i n e m~me dans la c o n c e p t i o n du programme. In Annali di M a t e m a t i c a Pura ed A p p l i c a t a 37 (4): 175-217.
•Additions to F O R T R A N II 1958. Description of Source Language A d d i t i o n s to the FORTRAN II System. New Y o r k : P r o g r a m m i n g Research, IBM Corp. (Distributed to users of F O R T R A N III. 12 pages.)
Bouricius, W i l l a r d G. 1953 December. Operating e x p e r i e n c e w i t h the Los Alamos 701. In Proc. E a s t e r n J o i n t _ C o m p u t e r Conf. W a s h i n g t o n DC.
•Ash, R.; Broadwin, E.; Della Valle, V.; Katz, C.; Greene, M.; Jenny, A.; and Yu, L. 1957. P r e l i m i n a r y M a n u a l for MATHMATIC and A R ! T H - M A T I C Systems (for Algebraic T r a n s l a t i o n and C o m p i l a t i o n for UNIVAC I and II). P h i l a d e l p h i a Pa: Remington Rand UNIVAC.
Bright, H e r b e r t S. 1971 November. FORTRAN comes to W e s t i n g h o u s e - B e t t i s , 1957. In C o m p u t e r s and Automation. Brown, J. H. and Carr, John W., III 1954 May. A u t o m a t i c p r o g r a m m i n g and its dev e l o p m e n t on MIDAC. In Proc. Symp. on A u t o m a t i c P r o g r a m m i n g for Digital Computers. W a s h i n g t o n DC: The Office of Naval Research.
Backus, J. W. 1954 January. The IBM 701 S p e e d c o d i n g system. J A C M I (I):4-6. *Backus, John 1954 May 21. Laning, Jr.
Letter to J. H.
Backus, J. W. 1958 November. Automatic programming: p r o p e r t i e s and p e r f o r m a n c e of F O R T R A N systems I and II. In Proc. S~mp. on the M e c h a n i s a t i o n of Thought Processes. Teddington, Middlesex, England: The National Physical Laboratory.
Cocke, John and Schwartz, J. T. 1970 April. P r o g r a m m i n g Languages and their Compilers. (Preliminary Notes, Second Revised Version, April 1970) New York: New York University, The C o u r a n t Institute of M a t h e m a t i c a l Sciences.
Backus, John 1976 June 10-15. Programming in A m e r i c a in the n i n e t e e n fifties-some personal impressions. In Proc. I n t e r n a t i o n a l Conf. on the H i s t o r y of Computing, Los Alamos. (Publisher yet to be selected.)
Cress, Paul; Dirksen, Paul; and Graham, J. Wesley 1970. F O R T R A N IV w i t h W A T F O R and WATFIV. E n g l e w o o d Cliffs NJ: Prentice-Hall. Dijkstra, Edsger W. 1976. A D i s c i p l i n e of Programming. E n g l e w o o d Cliffs NJ: Prentice-Hall.
Backus, John 1978. The von N e u m a n n style as an obstacle to high level programming; an a l t e r n a t i v e functional style and its algebra of programs. (to appear CACM).
Grems, M a n d a l a y and Porter, R. E. 1956. A truly automatic p r o g r a m m i n g system. In Proc. W e s t e r n Joint C o m p u t e r Conf. 10-21.
Backus, J. W. and Heising, W. P. 1964 August. "FORTRAN. In IEEE T r a n s a c t i o n s on E l e c t r o n i c Computers. Vol EC-13 (4): 382-385. Backus, May.
Hoare, C. A. R. 1969 October. An a x i o m a t i c basis for computer programming. CACM 12 (10): 576-580, 583.
John W. and Herrick, H a r l a n 1954 IBM 701 S p e e d c o d i n g and other auto-
179
• IBM 1956 October 15. P r o g r a m m e r ' s Reference Manual, The F O R T R A N A u t o m a t i c Coding System for the IBM 704 EDPM. New York: IBM Corp. (Applied Science D i v i s i o n and P r o g r a m m i n g R e s e a r c h Dept., W o r k i n g Committee: J. W. Backus, R. J. Beeber, S. Best, R. Goldberg, H. L. Herrick, R. A. Hughes [Univ. of calif. R a d i a t i o n Lab. Livermore, Calif.], L. B. Mitchell, R. A. Nelson, R. Nutt [United A i r c r a f t Corp., East Hartford, Conn.], D. Sayre, P. B. Sheridan, H. Stern, I. Ziller).
Rutishauser, Heinz 1952. Automatische R e c h e n p l a n f e r t i g u n g bei p r o g r a n ~ g e s teuerten Rechenmaschinen. In M i t t e i l u n g en aus dem Inst. fur angew. Math. an der E. T. H. ZUrich. Nr. 3. Basel: Birkh~user.
• IBM 1957. Progra~nmer's Primer for F O R T R A N A u t o m a t i c Coding S y s t e m for the IBM 704. New York: IBM Corp. Form No. 32-0306.
Sammet, Jean E. 1969. Progranuaing Languages: H i s t o r y and F u n d a m e n t a l s . E n g l e w o o d Cliffs NJ: P r e n t i c e Hall.
Knuth, Donald E. and Pardo, Luis Trabb 1977. Early d e v e l o p m e n t of p r o g r a m m i n g languages. In E n c y c l o p e d i a of C o m p u t e r Science and Technology. Vol 7:419-493. New York: M a r c e l Dekker.
Sheridan, Peter B. 1959 February. The a r i t h m e t i c t r a n s l a t o r - c o m p i l e r of the IBM F O R T R A N a u t o m a t i c coding system. C A C M 2 (2) :9-21.
*Remington Rand, Inc. 1953 N o v e m b e r 15. The A-2 c o m p i l e r system o p e r a t i o n s manual. P r e p a r e d by Richard K. R i d g w a y and M a r g a r e t H. Harper under the d i r e c t i o n of Grace M. Hopper.
• Schlesinger, S. I. 1953 July. Dual coding system. Los A l a m o s NM: Los A l a m o s S c i e n t i f i c Lab. Los A l a m o s R e p o r t LA 1573.
•Laning, J. H. and Zierler, N. 1954 January. A p r o g r a m for t r a n s l a t i o n of m a t h ematical e q u a t i o n s for W h i r l w i n d I. C a m b r i d g e Mass.: MIT I n s t r u m e n t a t i o n Lab. E n g i n e e r i n g M e m o r a n d u m E-364.
Zuse, K. 1959. Dber den PlankalkUl. Elektron. Rechenanl. 1:68-71.
McCracken, Daniel D. 1961. A Guide to F O R T R A N Programming. New York: Wiley.
In
Zuse, K. 1972. Der Plankalkul. In Berichte der G e s e l l s c h a f t fur M a t h e m a t i k und D a t e n v e r a r b e i t u n g . 63, part 3. Bonn. (Manuscript p r e p a r e d in 1945.)
Moser, Nora B. 1954 May. Compiler method of a u t o m a t i c programming. In Proc. Symp. on A u t o m a t i c P r o g r a m m i n g for Digital Computers. W a s h i n g t o n DC: The O f f i c e of Naval Research. Muller, David E. 1954 May. Interpretive r o u t i n e s in the ILLIAC library. In Proc. Symp. on A u t o m a t i c P r o g r a m m i n g for Digital Computers. W a s h i n g t o n DC: The O f f i c e of Naval Research. •O p e r a t o r ' s M a n u a l 1957 April 8. Preliminary O p e r a t o r ' s M a n u a l for the F O R T R A N A u t o m a t i c Coding S y s t e m for the IBM 704 EDPM. N e w York: IBM Corp. P r o g r a m m i n g R e s e a r c h Dept. Organick, E l l i o t I. 1963. A F O R T R A N Primer. Reading Mass.: A d d i s o n - W e s l e y . • Perlis, A. J.; Smith, J. W.; and Van Zoeren, H. R. 1957 March. Internal Translator (IT): a compiler for the 650. Pittsburgh: C a r n e g i e I n s t i t u t e of Tech. •P r e l i m i n a r y R e p o r t 1954 N o v e m b e r 10. S p e c i f i c a t i o n s for the IBM m a t h e m a t i c a l F O R m u l a T R A N s l a t i n g system, FORTRAN. New York: IBM Corp. (Report by Programm i n g R e s e a r c h Group, A p p l i e d Science Division, IBM. D i s t r i b u t e d to p r o s p e c t i v e 704 c u s t o m e r s and other i n t e r e s t e d parties. 29 pages.) •P r o p o s e d S p e c i f i c a t i o n s 1957 S e p t e m b e r 25. P r o p o s e d S p e c i f i c a t i o n s for F O R T R A N II for the 704. (Unpublished m e m o r a n d u m , P r o g r a m m i n g R e s e a r c h Dept. IBM.)
180