|
The paper presents an IBM perspective on the evolution of the language processor technology from the early 1950s to the late 1970s. Allen divides these years into five periods: (1) the early history, from the introduction of the IBM 701 in 1952 until the release of FORTRAN I in 1954, (2) the FORTRAN I period in the mid-50s, (3) the late '50s and early '60s, from the introduction of the IBM 709 in 1957 until the announcement of System 360 in 1964, (4) the System/360 period in the mid- and late-'60s, and (5) the 1970s, the “approaching maturity” period.
The early period is marked by use of subroutine libraries and early “compilers” that processed pseudo-code written by the programmer and extracted and manipulated library routines into a complete program. It is also marked by the first symbolic assembly programs, which supported relative addresses from an origin and extensive error checking to cope with hardware errors. The earliest higher-level language processor was Speedcode, developed in 1953 for the IBM 701 and supported by the interpreted Speedcoding calculator.
The goal of the FORTRAN I project, to provide an automatic programming system (compiler) that would produce programs almost as efficient as hand-coded ones, was met to an astonishing degree. The FORTRAN I compiler established the structure and the techniques of modern compilers. Its major components include a statement identifier and arithmetic statement translator, a subscript and DO statement analyzer, a control flow analyzer, and a global register allocator. The work represents a major milestone in the development of computer technology.
Allen views the late 1950s and early 1960s as a period of “great optimism and little discipline,” in which there was a flood of new languages, computers, programming systems, and ideas. The Comtran (Commercial Translator) language and compiler were developed (Comtran was later supplanted by COBOL), and the Quiktran time-sharing system was released. The proliferation of languages and computers led to work on universal compiling systems, such as XTRAN and SLANG. The early work in the theory of parsing forms the basis for modern lexical and syntax analyzers. John Backus introduced the syntactic notation for specifying grammars known as BNF and John Cocke invented a parsing method based on the dynamic programming paradigm, the first algorithm to uniformly run in polynomial time.
System/360, announced in 1964, included families of upward-compatible language processors for FORTRAN, COBOL, and the new PL/I language. FORTRAN H generalized and extended the optimization techniques of earlier FORTRAN compilers, which resulted in excellent object code efficiency. The interpretive APL system disproved the claim that interpreting code is often an order of magnitude slower than direct execution. It showed that efficiencies afforded by array operations allow APL programs to run faster than compiled code.
According to Allen, increasing maturity is the hallmark of computer science and technology in the 1970s. For numerous problems the first solution was a heuristic one, which then led to the formal study of the problem, and then to a solution based on the new theory. Programming became more disciplined and formal methods for describing and verifying concepts were extensively investigated. In particular, such discipline is exemplified by the important fields of parsing and program analysis and optimization.
As a major contributor to language processor technology, Allen is eminently qualified to lead us through its major milestones and interpret the historical events for us. The paper leaves no doubt that the seminal contributions made by IBM to language processor technology has deeply affected the computer technology landscape.
|