Laning and Zierler system
Encyclopedia
The Laning and Zierler system (sometimes called "George" by its users) was one of the first operating algebraic compiler
s, that is, a system capable of accepting mathematical formulae in algebraic notation and producing equivalent machine code. It was implemented in 1954 for the MIT
WHIRLWIND
by J. Halcombe Laning
and Neal Zierler. It is preceded by the UNIVAC
A-2, IBM
Speedcoding
and a number of systems that were proposed but never implemented.
The literature sometimes refers to the Laning and Zierler system as a compiler. In the 1950s, however, compiler meant what we might today call a linking loader (see Linker and Loader
) or an assembler. Laning and Zieler described their work as a "system of automatic coding" and the language is very similar to Tony Brooker's Manchester Autocodes, sitting somewhere between Mercury Autocode and Atlas Autocode
in complexity. The remainder of this article will use the word system.
The system also automated the following tasks: floating point computation, linkage to subroutines for the basic functions of analysis (sine, etc.) and printing, and arrays and indexing.
The system accepted input on punched tape produced by a Friden Flexowriter
. The character set in use at the Whirlwind installation included "upper-case" (superscript) digits and a hyphen, which were used to indicate array indices, function codes, and (integer) exponents. Like other programming notations of its time, the system accepted only single-letter variable names and multiplication was indicated by juxtaposition of operands. A raised dot was available to indicate multiplication explicitly (the character was created by filing off the lower half of a colon!) The system also included support for solution of linear differential equations via the Runge-Kutta method.
The system was described in an 18-page typewritten manual written for people familiar with mathematics but perhaps unfamiliar with computers. It contains almost nothing in the way of an introduction to computer hardware.
expansion. The implementation is not terribly efficient, and the system already includes in its subroutine library, but the example serves to give a flavor of the system's syntax. Note that division in the system is evaluated after multiplication:
1 x = 0,
z = 1 - x2/2 + x4/2·3·4 - x6/2·3·4·5·6
+ x8/2·3·4·5·6·7·8 - x10/2·3·4·5·6·7·8·9·10,
PRINT x, z.
e = x - 1.05,
CP 1,
STOP
. John Backus
himself admitted to having contributed to this misconception:
After reviewing documentation from the time, Backus learned that the FORTRAN project was "well underway" when he and his team got a chance to see Laning and Zierler's work:
Compiler
A compiler is a computer program that transforms source code written in a programming language into another computer language...
s, that is, a system capable of accepting mathematical formulae in algebraic notation and producing equivalent machine code. It was implemented in 1954 for the MIT
Massachusetts Institute of Technology
The Massachusetts Institute of Technology is a private research university located in Cambridge, Massachusetts. MIT has five schools and one college, containing a total of 32 academic departments, with a strong emphasis on scientific and technological education and research.Founded in 1861 in...
WHIRLWIND
Whirlwind (computer)
The Whirlwind computer was developed at the Massachusetts Institute of Technology. It is the first computer that operated in real time, used video displays for output, and the first that was not simply an electronic replacement of older mechanical systems...
by J. Halcombe Laning
J. Halcombe Laning
Dr. J. Halcombe "Hal" Laning Jr. was a Massachusetts Institute of Technology computer pioneer who in 1952 invented an algebraic compiler called George that ran on the MIT Whirlwind, the first real-time computer...
and Neal Zierler. It is preceded by the UNIVAC
UNIVAC
UNIVAC is the name of a business unit and division of the Remington Rand company formed by the 1950 purchase of the Eckert-Mauchly Computer Corporation, founded four years earlier by ENIAC inventors J. Presper Eckert and John Mauchly, and the associated line of computers which continues to this day...
A-2, IBM
IBM
International Business Machines Corporation or IBM is an American multinational technology and consulting corporation headquartered in Armonk, New York, United States. IBM manufactures and sells computer hardware and software, and it offers infrastructure, hosting and consulting services in areas...
Speedcoding
Speedcoding
Speedcoding or Speedcode was the first higher-level language created for an IBM computer. The language was developed by John Backus in 1953 for the IBM 701 to support computation with floating point numbers....
and a number of systems that were proposed but never implemented.
The literature sometimes refers to the Laning and Zierler system as a compiler. In the 1950s, however, compiler meant what we might today call a linking loader (see Linker and Loader
Loader (computing)
In computing, a loader is the part of an operating system that is responsible for loading programs. It is one of the essential stages in the process of starting a program, as it places programs into memory and prepares them for execution...
) or an assembler. Laning and Zieler described their work as a "system of automatic coding" and the language is very similar to Tony Brooker's Manchester Autocodes, sitting somewhere between Mercury Autocode and Atlas Autocode
Atlas Autocode
Atlas Autocode was a programming language developed around 1965 at Manchester University for the Atlas Computer. It was developed by Tony Brooker and Derrick Morris as an improvement on the ALGOL programming languages, removing some of Algol's poorer features such as "passing parameters by name"...
in complexity. The remainder of this article will use the word system.
Description
The system accepted formulae in a more or less algebraic notation. It respected the standard rules for operator precedence, allowed nested parentheses, and used superscripts to indicate exponents. It was among the first programming systems to allow symbolic variable names and allocate storage automatically.The system also automated the following tasks: floating point computation, linkage to subroutines for the basic functions of analysis (sine, etc.) and printing, and arrays and indexing.
The system accepted input on punched tape produced by a Friden Flexowriter
Friden Flexowriter
The Friden Flexowriter was a teleprinter, a heavy duty electric typewriter capable of being driven not only by a human typing, but also automatically by several methods including direct attachment to a computer and by use of paper tape....
. The character set in use at the Whirlwind installation included "upper-case" (superscript) digits and a hyphen, which were used to indicate array indices, function codes, and (integer) exponents. Like other programming notations of its time, the system accepted only single-letter variable names and multiplication was indicated by juxtaposition of operands. A raised dot was available to indicate multiplication explicitly (the character was created by filing off the lower half of a colon!) The system also included support for solution of linear differential equations via the Runge-Kutta method.
The system was described in an 18-page typewritten manual written for people familiar with mathematics but perhaps unfamiliar with computers. It contains almost nothing in the way of an introduction to computer hardware.
Sample Program
The following example, taken from page 11 of the system's manual, evaluates for using the Taylor seriesTaylor series
In mathematics, a Taylor series is a representation of a function as an infinite sum of terms that are calculated from the values of the function's derivatives at a single point....
expansion. The implementation is not terribly efficient, and the system already includes in its subroutine library, but the example serves to give a flavor of the system's syntax. Note that division in the system is evaluated after multiplication:
1 x = 0,
z = 1 - x2/2 + x4/2·3·4 - x6/2·3·4·5·6
+ x8/2·3·4·5·6·7·8 - x10/2·3·4·5·6·7·8·9·10,
PRINT x, z.
e = x - 1.05,
CP 1,
STOP
Applications
Few applications were written for the system. One documented application, authored by Laning and Zierler themselves, involved a problem in aeronautics. The problem required seven systems of differential equations to express, and had been given to the Whirlwind because it was too large for MIT's Differential Analyzer to handle. The authors, exploiting the Runge-Kutta feature of their programming system, produced a 97-statement program in two and half hours. The program ran successfully the first time.Influence on FORTRAN
Some sources have said that the Laning and Zierler system was the inspiration for FORTRANFortran
Fortran is a general-purpose, procedural, imperative programming language that is especially suited to numeric computation and scientific computing...
. John Backus
John Backus
John Warner Backus was an American computer scientist. He directed the team that invented the first widely used high-level programming language and was the inventor of the Backus-Naur form , the almost universally used notation to define formal language syntax.He also did research in...
himself admitted to having contributed to this misconception:
The effect of the Laning and Zierler system on the development of FORTRAN is a question which has been muddled by many misstatements on my part. For many years I believed that we had gotten the idea for using algebraic notation in FORTRAN from seeing a demonstration of the Laning and Zierler system at MIT. (Backus )
After reviewing documentation from the time, Backus learned that the FORTRAN project was "well underway" when he and his team got a chance to see Laning and Zierler's work:
[W]e were already considering algebraic input considerably more sophisticated than that of Laning and Zierler's system when we first heard of their pioneering work... [I]t is difficult to know what, if any, new ideas we got from seeing the demonstration of their system. (Backus, op cit)