Following @beliavsky 's post, I think that John Backus deserves his own post in our Discourse. And knowledge about the birth of Fortran can help the community to promote the language: as for human beings, many qualities and defects of Fortran come from its early years.
Speedcoding (1953)
In 1953, John Backus works on the IBM 701 Speedcoding system, a simple interpreter to ease computing with floating point numbers (the IBM 704 will be the first to have builtin floating point reals). In those early days, programmers are programming in machine language, a tedious task. Backus says that the operation cost is equally divided between the operation cost of the computer and personnel cost [1]. And Speecoding allows to reduce the cost by accelerating the programming and testing of programs, although running far slower than machine language.
At that time, other people were working on the problem. For example, Grace Hopper completed in 1952 what is considered the first compiler: the A-0 Compiler.
Fortran (1954-1958)
In december 1953, John Backus writes a letter to his boss to propose the Fortran project, for the new IBM 704. It is motivated by the same economical reasons as Speedcoding and will be funded by IBM without questions for that reason.
Interestingly, FORTRAN is described to be composed of two parts: the language itself and the translator. In 1957, Backus does not still use the word âcompilerâ [2], although he uses the verb âto compileâ.
In [3] he insists that their objective was nor to translate quickly, nor to elaborate features of the language, but to obtain very fast object programs, working especially on the optimization of the loops and the way array indexes were treated.
In [4] he explains that most people were skeptical about the ability of a program computer to generate a machine code as fast as would human beings. Thatâs why his group wanted to create a compiler which would produce optimized machine code whatever the problem, fearing that if a particular problem would be running much slower than a human beingâs code, Fortran would be rejected.
Thus this interesting sentence which tells much about Fortran: âBecause of our 1954 view that success in producing efficient programs was more important than the design of the Fortran languageâŠâ And: âAs far as we were aware, we simply made up the language as we went along. We did not regard language design as a difficult problem, merely a simple prelude to the real problem: designing a compiler that could produce efficient programs.â While people working on other early languages were focused on their language, Backusâ group was focused on the translator program (compiler).
It was already quite sophisticated: there was even a compiling phase investigating the frequency of execution of each part of the program, using a Monte Carlo algorithm. Backus will even pretend that it remained the best compiler for more than 20 years. Note also that they were working for the IBM 704, not even thinking Fortran will run one day on other computers.
The compiler was ready in April 1957 and distributed to all IBM 704 installations. Interestingly, they first tried to distribute it using punched cards, but failed and finally used magnetic tapesâŠ
Backus also insists on the importance of the writing of âProgrammerâs Primerâ (Spring 1957) by Mitchell, the first Fortran tutorial, on the subsequent growth in the use of Fortran.
After Fortran
While working on Algol, he worked on the Backus-Naur form (BackusâNaur form - Wikipedia) to describe the syntax of the language.
He will also work on functional programming. In the conclusion of [4], he wrote: âBy splitting programming into a world of expressions, one the one hand, and a world of statements, on the other, von Neumann languages prevent the effective use of higher-level combining formsâ. âThe world of expressions has some elegant and useful mathematical properties, whereas the world of statements is a disorderly one without useful mathematical properties.â
In 1977, he will be the laureate of the A.M. Turing Award (the equivalent of Nobel Prize for computer science), âfor profound, influential, and lasting contributions to the design of practical high-level programming systems, notably through his work on FORTRAN, and for seminal publication of formal procedures for the specification of programming languagesâ:
https://amturing.acm.org/award_winners/backus_0703524.cfm
[1] J. Backus, âThe IBM 701 Speedcoding System,â J. ACM, vol. 1, no. 1,
1953, pp. 4â6. https://archive.computerhistory.org/resources/access/text/2018/02/102632810-05-01-acc.pdf
[2] Backus, J. W., H. Stern, I. Ziller, R. A. Hughes, R. Nutt, R. J. Beeber, S. Best, et al. âThe FORTRAN Automatic Coding Systemâ. In Papers Presented at the February 26-28, 1957, Western Joint Computer Conference: Techniques for Reliability on - IRE-AIEE-ACM â57 (Western), 188â98. Los Angeles, California: ACM Press, 1957. https://doi.org/10.1145/1455567.1455599. http://archive.computerhistory.org/resources/text/Fortran/102663113.05.01.acc.pdf
[3] Backus, J. W., and W. P. Heising. âFortranâ. IEEE Transactions on Electronic Computers EC-13, no. 4 (August 1964): 382â85. https://doi.org/10.1109/PGEC.1964.263818. http://www.softwarepreservation.org/projects/FORTRAN/paper/BackusHeising-FORTRAN-1964.pdf
[4] Backus, J. âThe History of Fortran I, II, and IIIâ. IEEE Annals of the History of Computing 20, no. 4 (December 1998, first published in July 1979): 68â78. https://doi.org/10.1109/85.728232. http://www.softwarepreservation.org/projects/FORTRAN/paper/p165-backus.pdf