Vai al contenuto principale
Bethemesh
BiografiaStoria dell’informatica

John Backus: FORTRAN, BNF, and the rejection of machine code

Discover how John Backus led the creation of FORTRAN, formalized language syntax, and proposed another way to think about programs.

Pubblicato 3 agosto 2026Lettura : 6 minDi Bethemesh Team
Principiante
Historical portrait of John Backus
Mostra indice
  1. Why scientific programming remained expensive
  2. FORTRAN was as much a compiler as a language
  3. A collective success that changed software economics
  4. Describing the grammar of a language
  5. Questioning the model he had helped popularize
  6. Composing programs instead of managing every state
  7. A legacy beyond FORTRAN
  8. Timeline
  9. Frequently asked questions
  10. Did John Backus create FORTRAN alone?
  11. Why was the first FORTRAN compiler so important?
  12. Did Backus invent BNF alone?
  13. Is FORTRAN still used?
  14. Why did Backus criticize imperative programming?
  15. What connects Backus and Grace Hopper?

In the early 1950s, programming a scientific calculation often meant translating every formula into a long sequence of instructions specific to one computer. John Backus wanted to remove that mechanical work. The IBM team he led created FORTRAN, allowing scientists to write recognizable formulas and have them translated automatically.

The challenge was not merely to devise readable notation. Scientists knew how to optimize assembly code and distrusted a program that would write code for them. To win adoption, the FORTRAN compiler had to generate programs almost as fast as those produced by human experts.

Backus later pursued two further questions: how to describe a language’s syntax rigorously, and how to move beyond programming based on repeated changes to memory.

Why scientific programming remained expensive

John Warner Backus was born in Philadelphia in 1924. His education was uneven, and he found his direction only after military service. He first studied medicine, turned to mathematics, and earned a master’s degree from Columbia University in 1950.

That year he visited IBM and encountered the Selective Sequence Electronic Calculator. An improvised conversation led to a job. He soon worked on mathematical programs and Speedcoding, a system that simplified calculations on the IBM 701.

Speedcoding improved productivity but its interpretation slowed execution sharply. When computer time was scarce and costly, programmers still preferred machine code or assembly despite weeks of work and frequent errors. In 1953, Backus proposed a more ambitious system: users would write formulas close to mathematical notation, while a compiler generated efficient code for the forthcoming IBM 704.

FORTRAN was as much a compiler as a language

Backus assembled a team spanning mathematics, programming, and computer architecture. Its members included Harlan Herrick, Irving Ziller, Peter Sheridan, Roy Nutt, Robert Nelson, and Lois Haibt. No individual could alone design the language, optimize the compiler, and test every calculation.

FORTRAN stands for Formula Translation. It expressed arithmetic, loops, and branches without exposing IBM 704 operation codes. A statement described the desired calculation; the compiler selected machine instructions.

Translation still had to preserve performance. The team developed analysis and optimization techniques to organize calculations and register use. Building the compiler took years and produced an exceptionally large program for the period.

When FORTRAN shipped in 1957, its efficiency weakened the main argument for assembly. Scientists could focus on mathematical models rather than processor mechanics. Programs took less time to produce, while the language could gradually be adapted to other machines.

A collective success that changed software economics

Calling Backus FORTRAN’s sole creator would be misleading. He proposed and led the project and contributed to its design, but the language and compiler were collective IBM achievements.

His decisive role was to hold together two difficult goals: moving code closer to mathematics without sacrificing speed. Success proved that high-level languages could serve real computation rather than merely education.

FORTRAN spread through laboratories, industry, and universities. It also introduced a new possibility: scientific code could outlive the computer for which it was written. Later versions improved portability, structure, and domain coverage while preserving a vast heritage of numerical software. The history of FORTRAN follows that evolution; Backus’s biography explains the original effort to make automatic translation credible.

Describing the grammar of a language

After FORTRAN, Backus joined international discussions on ALGOL 58 and ALGOL 60. Designers needed an unambiguous description of which symbol sequences constituted valid programs.

Ordinary prose was insufficient. Backus proposed a formal notation in which syntactic categories were defined by replacement rules. Peter Naur adapted it for the ALGOL 60 report, and it became Backus–Naur form, or BNF.

A rule can state that an expression is a number or two expressions joined by an operator. Recursive application describes infinitely many programs with finitely many productions. BNF separates syntax—the permitted form—from implementation—the method used to analyze and execute it. Its descendants still document languages, data formats, and protocols.

Questioning the model he had helped popularize

FORTRAN greatly improved imperative programming: programs read and modify stored values one instruction at a time. Backus eventually believed this model remained too closely shaped by stored-program computers.

In his 1977 Turing Award lecture, Can Programming Be Liberated from the von Neumann Style?, he criticized the von Neumann bottleneck. Programs continually move values between processor and memory, while reasoning depends on a succession of state changes.

Backus presented FP, a system based on function composition. Rather than specifying every update, a program combined transformations. He hoped this would make computations easier to understand and reason about mathematically. FP did not replace imperative languages, but its intellectual importance is striking: a leader of their first great success also exposed their limits, alongside a functional tradition already visible in John McCarthy’s Lisp.

Composing programs instead of managing every state

Backus was not merely adding functions to an imperative language. FP combined functions through functional forms: composition, pairing, applying an operation to every element, and reducing a sequence to one value.

To compute the sum of squares, an imperative program creates a total, loops through a list, updates the total, and returns it. A compositional description maps squaring over the list and reduces the results with addition. It presents relationships between transformations instead of the detailed order of assignments.

Backus hoped algebraic laws could support reasoning: equivalent compositions could replace one another without tracing every intermediate state. This ambition anticipated modern optimization and parallelization of data pipelines, even though FP itself saw little adoption.

His criticism concerned the intellectual architecture of programs as much as processor-memory traffic. Raising the abstraction level required making transformations and their composition primary.

A legacy beyond FORTRAN

Backus received the Turing Award in 1977 for contributions to high-level languages, compilation, and language specification. He remained an IBM Fellow until retiring in 1991 and died in 2007.

His legacy connects three levels often studied separately. FORTRAN showed that abstraction could still produce efficient code. BNF precisely defined the form of a language. FP asked whether the dominant way of structuring programs was the best one.

Modern compilers extend the first challenge across richer languages. Formal grammars extend the second in parsers and standards. Functional programming extends the third by limiting state changes and composing transformations. Backus did not simply bring code closer to mathematics; he successively questioned how programs are translated, described, and structured.

Timeline

  • 1924: John Warner Backus is born in Philadelphia.
  • 1950: He earns a mathematics master’s at Columbia and joins IBM.
  • Early 1950s: He develops Speedcoding for the IBM 701.
  • 1953: He proposes formula translation for the IBM 704.
  • 1954: The FORTRAN team is assembled.
  • 1957: The first FORTRAN compiler is delivered.
  • 1958–1960: He contributes to ALGOL and the notation that becomes BNF.
  • 1963: He is named an IBM Fellow.
  • 1977: He receives the Turing Award and lectures on the limits of von Neumann style.
  • 1978: The lecture and FP system appear in Communications of the ACM.
  • 1970s–1980s: He researches FP and functional programming.
  • 1991: He retires from IBM.
  • 2007: He dies in Ashland, Oregon.
  • Today: FORTRAN, formal grammars, and functional composition continue three dimensions of his work.

Frequently asked questions

Did John Backus create FORTRAN alone?

No. He proposed and led the IBM project, but the language and compiler were a team achievement. Their combined expertise produced code efficient enough to persuade users.

Why was the first FORTRAN compiler so important?

A readable language would have failed if its programs were much slower than assembly. Compiler optimization showed that automatic translation could deliver both productivity and performance.

Did Backus invent BNF alone?

He proposed the initial notation for ALGOL; Peter Naur adapted it for the ALGOL 60 report. The name Backus–Naur form recognizes that sequence of contributions.

Is FORTRAN still used?

Yes. Modern versions remain active in scientific computing and software with large, proven numerical libraries. Today’s language differs greatly from its 1957 ancestor.

Why did Backus criticize imperative programming?

He thought programs centered on memory updates were difficult to compose and reason about. FP explored function composition instead of sequences of assignments.

What connects Backus and Grace Hopper?

Both teams sought to move programmers away from machine code in the 1950s. FORTRAN initially addressed scientific calculation; FLOW-MATIC and COBOL focused on business data.

Fonti e riferimenti

  1. 1.IBM — John Backus
  2. 2.Computer History Museum — John Backus
  3. 3.IBM — The FORTRAN Automatic Coding System
  4. 4.ACM — Can Programming Be Liberated from the von Neumann Style?
  5. 5.Library of Congress — John W. Backus Papers

Raccolta

Linguaggi di programmazione

  1. 01Grace Hopper: from early compilers to COBOL
  2. 02John Backus: FORTRAN, BNF, and the rejection of machine code
  3. 03Dennis Ritchie: the C language at the heart of Unix
  4. 04FORTRAN: proving that a compiler could compete with assembly
  5. 05The C language: making systems portable without hiding the machine
  6. 06Niklaus Wirth: from Pascal to Oberon, designing through simplicity
  7. 07Bjarne Stroustrup: designing C++ without giving up performance
  8. 08Pascal: learning to program by making structure visible
  9. 09C++: from C with Classes to a general-purpose language
  10. 10Object-oriented programming: objects, messages, and reusable abstractions
  11. 11Guido van Rossum: creating Python to make code readable
  12. 12Brendan Eich: JavaScript, from Netscape prototype to Web standard
  13. 13James Gosling: the engineer behind Java
  14. 14Python: readability, batteries included, and a global ecosystem
  15. 15Java: write once, run anywhere
  16. 16JavaScript: the language that made the Web interactive
  17. 17Ken Thompson: from Unix to Go, simplicity as a method
  18. 18John McCarthy: Lisp and the idea of programming with symbols
  19. 19Alan Kay: Smalltalk and the computer as a personal medium
  20. 20Barbara Liskov: the abstraction that made software modular
  21. 21Robin Milner: ML, machine-assisted proof, and languages of interaction
  22. 22Brian Kernighan: AWK, Unix, and the art of explaining code
  23. 23Anders Hejlsberg: from Turbo Pascal to C# and TypeScript
  24. 24Larry Wall: Perl, the language that connected the tools of the Internet
  25. 25Yukihiro Matsumoto: Ruby and programmer happiness
  26. 26Rasmus Lerdorf: PHP and the democratization of the dynamic Web
BiografiaStoria dell’informaticaPrincipiante

Grace Hopper: from early compilers to COBOL

Discover how Grace Hopper helped transform programming by making computers translate readable instructions into machine operations.

3 agosto 20266 minLeggi

Questo articolo ti è stato utile?