Laning and Zierler system

Last updated

The Laning and Zierler system (sometimes called "George" by its users) was the first operating algebraic compiler, that is, a system capable of accepting mathematical formulas in algebraic notation and producing equivalent machine code (the term compiler had not yet been invented and the system was referred to as "an interpretive program"). It was implemented in 1952 [1] for the MIT WHIRLWIND by J. Halcombe Laning and Neal Zierler. It is preceded by non-algebraic compilers such as the UNIVAC A-0.

Contents

Description

The system accepted formulas 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. 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 series 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:

x = 0,  1 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.    x = x + .1,    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.[ citation needed ] 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 FORTRAN. John W. Backus 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 [2] )

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 [2] )

See also

Related Research Articles

<span class="mw-page-title-main">Fortran</span> General-purpose programming language

Fortran is a general-purpose, compiled imperative programming language that is especially suited to numeric computation and scientific computing.

<span class="mw-page-title-main">Multiplication</span> Arithmetical operation

Multiplication is one of the four elementary mathematical operations of arithmetic, with the other ones being addition, subtraction, and division. The result of a multiplication operation is called a product.

<span class="mw-page-title-main">Maple (software)</span> Mathematical computing environment

Maple is a symbolic and numeric computing environment as well as a multi-paradigm programming language. It covers several areas of technical computing, such as symbolic mathematics, numerical analysis, data processing, visualization, and others. A toolbox, MapleSim, adds functionality for multidomain physical modeling and code generation.

<span class="mw-page-title-main">Exponentiation</span> Mathematical operation

In mathematics, exponentiation is an operation involving two numbers, the base and the exponent or power. Exponentiation is written as bn, where b is the base and n is the power; this is pronounced as "b (raised) to the n". When n is a positive integer, exponentiation corresponds to repeated multiplication of the base: that is, bn is the product of multiplying n bases:

<span class="mw-page-title-main">Runge–Kutta methods</span> Family of implicit and explicit iterative methods

In numerical analysis, the Runge–Kutta methods are a family of implicit and explicit iterative methods, which include the Euler method, used in temporal discretization for the approximate solutions of simultaneous nonlinear equations. These methods were developed around 1900 by the German mathematicians Carl Runge and Wilhelm Kutta.

HAL/S is a real-time aerospace programming language compiler and cross-compiler for avionics applications used by NASA and associated agencies. It has been used in many U.S. space projects since 1973 and its most significant use was in the Space Shuttle program. It was designed by Intermetrics in 1972 for NASA and delivered in 1973. HAL/S is written in XPL, a dialect of PL/I. Although HAL/S is designed primarily for programming on-board computers, it is general enough to meet nearly all the needs in the production, verification, and support of aerospace and other real-time applications. According to documentation from 2005, it was being maintained by the HAL/S project of United Space Alliance.

<span class="mw-page-title-main">Numerical methods for ordinary differential equations</span> Methods used to find numerical solutions of ordinary differential equations

Numerical methods for ordinary differential equations are methods used to find numerical approximations to the solutions of ordinary differential equations (ODEs). Their use is also known as "numerical integration", although this term can also refer to the computation of integrals.

In computer science, array programming refers to solutions which allow the application of operations to an entire set of values at once. Such solutions are commonly used in scientific and engineering settings.

Basic Linear Algebra Subprograms (BLAS) is a specification that prescribes a set of low-level routines for performing common linear algebra operations such as vector addition, scalar multiplication, dot products, linear combinations, and matrix multiplication. They are the de facto standard low-level routines for linear algebra libraries; the routines have bindings for both C and Fortran. Although the BLAS specification is general, BLAS implementations are often optimized for speed on a particular machine, so using them can bring substantial performance benefits. BLAS implementations will take advantage of special floating point hardware such as vector registers or SIMD instructions.

The TPK algorithm is a simple program introduced by Donald Knuth and Luis Trabb Pardo to illustrate the evolution of computer programming languages. In their 1977 work "The Early Development of Programming Languages", Trabb Pardo and Knuth introduced a small program that involved arrays, indexing, mathematical functions, subroutines, I/O, conditionals and iteration. They then wrote implementations of the algorithm in several early programming languages to show how such concepts were expressed.

MIMIC, known in capitalized form only, is a former simulation computer language developed 1964 by H. E. Petersen, F. J. Sansom and L. M. Warshawsky of Systems Engineering Group within the Air Force Materiel Command at the Wright-Patterson AFB in Dayton, Ohio, United States. It is an expression-oriented continuous block simulation language, but capable of incorporating blocks of FORTRAN-like algebra.

In mathematics, a basic algebraic operation is any one of the common operations of arithmetic, which include addition, subtraction, multiplication, division, raising to a whole number power, and taking roots. These operations may be performed on numbers, in which case they are often called arithmetic operations. They may also be performed, in a similar way, on variables, algebraic expressions, and more generally, on elements of algebraic structures, such as groups and fields. An algebraic operation may also be defined simply as a function from a Cartesian power of a set to the same set.

In mathematics, the Runge–Kutta–Fehlberg method is an algorithm in numerical analysis for the numerical solution of ordinary differential equations. It was developed by the German mathematician Erwin Fehlberg and is based on the large class of Runge–Kutta methods.

In numerical analysis, the Dormand–Prince (RKDP) method or DOPRI method, is an embedded method for solving ordinary differential equations. The method is a member of the Runge–Kutta family of ODE solvers. More specifically, it uses six function evaluations to calculate fourth- and fifth-order accurate solutions. The difference between these solutions is then taken to be the error of the (fourth-order) solution. This error estimate is very convenient for adaptive stepsize integration algorithms. Other similar integration methods are Fehlberg (RKF) and Cash–Karp (RKCK).

CSMP III, or Continuous System Modelling Program IlI is an early scientific computer software designed for modelling and solving differential equations numerically. This enables real-world systems to be simulated and tested with a computer.

Special functions are particular mathematical functions that have more or less established names and notations due to their importance in mathematical analysis, functional analysis, geometry, physics, or other applications.

<span class="mw-page-title-main">J. Halcombe Laning</span> American computer engineer

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. Laning designed George to be an easier-to-use alternative to assembly language for entering mathematical equations into a computer. He later became a key contributor to the 1960s race to the moon, with pioneering work on space-based guidance systems for the Apollo moon missions. From 1955 to 1980, he was deputy associate director of the MIT Instrumentation Laboratory.

The following is a timeline of scientific computing, also known as computational science.

PROSE was the mathematical 4GL virtual machine that established the holistic modeling paradigm known as Synthetic Calculus. A successor to the SLANG/CUE simulation and optimization language developed at TRW Systems, it was introduced in 1974 on Control Data supercomputers. It was the first commercial language to employ automatic differentiation (AD), which was optimized to loop in the instruction-stack of the CDC 6600 CPU.

References

  1. Jenkins, Dennis (2001-04-01). Dick, Steven J.; Garbe, Steve (eds.). "Advanced Vehicle Automation and Computers Aboard the Shuttle". The Flight of STS-1: Computer. NASA. Archived from the original on 2022-07-14. Retrieved 2022-07-14.
  2. 1 2 Backus, John Warner. The History of FORTRAN I, II and III. Proceedings First ACM SIGPLAN conference on History of programming languages. San Jose, California, USA. Archived from the original on 2005-08-27. (16 pages)

Further reading