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. It could also solve automatically ordinary differential equations using Gills' variation of the 4th order Runge-Kutta Method, that was an inbuilt language feature.
|Dr. J. Halcombe Laning|
It was implemented in 1952-53 and published in 1954 for the MIT WHIRLWIND computer by J. Halcombe Laning and Neal Zierler. It was made during a time with similar UNIVAC A-2, IBM Speedcoding and a number of other systems that were proposed but never implemented.
The following text is a reprint of a MIT's summer session report 1954.]
The Algebraic Coding System of Laning and Zierler ("George") /1/
"The Automatic Coding System to be described was developed in 1952 and 1953 by J. H. Laning and H. Zier1er of the M.I.T. Instrumentation Laboratory. The translation and interpretation of the algebraic coding is realized in the M.I.T. Whirlwind Computer.
[The Whirlwind computer was developed at 211 Massachusetts Avenue by the Massachusetts Institute of Technology. It was the first real-time high-speed digital computer using random-access magnetic-core memory. Whirlwind featured among others outputs displayed on a CRT, and a light pen to write data on the screen.]
|Figure 1. 1947 - MIT's Barta Building, Cambridge, MA, was the original home for Project Whirlwind. The computer occupied 2,500 square feet on the second floor. Photo courtesy MITRE Corporation.|
The coder specifics his problem as a series of mathematical equations and other special symbols. From this manuscript a Flexo tape is punched, which constitutes the input to the computer.
|Figure 2. Friden Flexowriter, model SFD.|
[Friden Flexowriter, model SFD, was used with the early computers. Though it was improbably heavy and made the noise of a machine gun, it had about the same functionality as the well-known Teletype ASR33 teleprinter. Usually it was never used on-line. Rather the user would carry his prepared lengths of paper tape on bicycle to the computer centre vice versa. The Flexowriter, originally a pre_WWII IBM development, was manufactured in Nijmegen, The Netherlands, from (about) 1955 to 1965.]
The Flexo characters are translated into Whirlwind instructions which are then carried out. The results requested by the programmer are presented in typewritten form. All arithmetic operations are carried out in floating point using a so called (240, 6) system. Numbers may range up to 10^19 with a precision of about 7.2 decimal digits."
Figure 3. 1950 - Stephen Dodd, Jay Forrester, Robert Everett, and Ramona Ferenz at Whirlwind I test control in the Barta Building.
II. Basic Operations
"All of the lower case letters may be used as variables, and equations of the following form are used.
a=5, y=-6.3a, b=O.0053(a-y)/2ay, n=n+2, w=-w, x=a(b+c(d-e)), z=r+2s/t+u,
A comma terminates all equations. Plus and minus signs slashes and parentheses, have their usual mathematical significance. No more than 4 parentheses may be open at any one time. Plus and minus signs separate terms so that the last equation above is the same as
Exponents: Upper case numbers on the MIT Flexowriters appear as exponents; (in this text upper case 2 is written as ^2 since upper case numbers are not available here) there is also an upper case minus sign, but no upper case plus sign. The following are interpreted correctly."
a=5^2, b=(a-2)^-2, c=(a+b)^2/a^-3,
|Figure 4. Eight hole paper tape.|
[Eight hole paper tape was 1" (25.4mm) wide and had rows of holes punched through it at ten rows per inch. As well as the 8 data holes there was a smaller sprocket hole. The sprocket hole was punched on every row and in early times engaged with a tooth of a wheel that fed the paper tape through a reading device. Latterly with optical readers they were used to sense a row. The other eight possible positions were punched with a combination to represent characters of the alphabet, numbers, and special characters.]
"The current value of any number or letter variables must be recorded in Flexo code on magnetic tape for later printing by inserting the word PRINT followed by the desired letters, followed by a period. The first and last characters recorded by each PRINT instruction are carriage returns."
|Figure 5. IBM 726 magnetic tape storage unit announced May 1952.|
IV. Jump Instructions
"Equations are ordinarily carried out in the sequence in which they are written. This sequence may be interrupted by inserting one of four jump instructions. The address section of a jump instruction must be an integer less than 100. This integer is the number of the equation to which the jump is to be made. An equation is numbered by preceding it by its number, e.g., 15 x=3a assigns the number 15 to the equation x = 3a.
The instruction SP 15, inserted in a routine will cause equation 15 to be executed next, the normal sequence continuing from that new point.
The instruction SR 15, causes equation 15 to be executed next but the control returns to the equation following the SR 15. SR evidently implies that a closed subroutine is to be executed.
The instructions CP and CR are obeyed only if the quantity most recently computed was negative; otherwise they are ignored."
|Figure 6. Whirlwind I occupied 2,500 square feet on the second floor.|
V. Function Subroutines
"23 Function subroutines are now available in the Laning-Zierler system. Each is assigned a number (1- 23) and is called for by writing the proper number as the exponent of an upper case F. For example:
x = 2(sqrt(y) sin(z) + |z|),
since Subroutine 1 is the square root, 2 is the sine, and number 11 is a subroutine which produces the magnitude of the indicated argument. Other subroutines include inverse trigonometric functions, exponential and hyperbolic functions, logs to the base 10, 2, and e, etc."
VI. Additional variable and variable indices
"Subscripts are not avai1able on the MIT Flexowriters. Numerical subscripts are obtained by typing x|3 for x subscript 3, etc. Variable subscripts are obtained by using letters after the vertical bar, e.g., x|n is typed for x subscript n, and if n happens to equal 3, x|n is equivalent to x|3."
|Figure 7. 1952 - Forrester (far left, standing) and Norman Taylor (far left, pointing) inspect completed circuitry.|
VII. Auxiliary Storage
"There is room in the Whirlwind high-speed storage for about 250 variables.
|Figure 8. Close-up of magnetic core memory showing 64 x 64 arrangement of magnetic elements on surface plane. circa 1954.|
Additional values, such as tables, must be assigned to the Whirlwind auxiliary magnetic drum.
|Figure 9. ERA employees with magnetic drum memory units 1955.|
The word ASSIGN is used for this purpose. For example, the instruction,
automatically reserves space on the drum for variables a|1 through a|4. If these variables have the values 2, 4, 6, 8, respectively, they may be assigned these values and have space reserved for them on the drum by writing only
Further, the same thing can be accomplished by writing
A more complicated example might be"
VIII. Differential Equations
"Provision has been made for the automatic solution of ordinary differential equations using Gills' variation of the 4th order Runge-Kutta Method.
|Figure 10. First find values at a half step forward (in time). This technique is known as the second-order Runge-Kutta method.|
For this purpose
- the letter t must be used for the independent variable,
- h must be used for the increment in t,
- D must be used to denote d/dt,
- Any other variables and/or superscript variables may be used for the dependent and auxiliary variables.
Suppose we have the two equations
f'1(t, y1, y2) = y2 + 1
f'2(t, y1, y2) = -y1
t = 2(0.5)10,
h = 0.5.
Our program might be:
t=2, h=O.5, y|1=0, y|2=0, 1 Dy|1=y|2+1, Dy|2=-y|l, k=t-10.1, CP 1 STOP
t is automatically increased by h upon completion of the last equation that starts with D. One important restriction is that all relevant auxiliary computation must be done between the first and last D equations."
[Post-mortems - Method and arrangements for generating debugging information following software failure.]
"Automatic postmortem features are still in the design stage. Features now available include:
- If the program is too long the computer stops and types out information indicating where and how storage was exceeded.
- If an alarm occurs the computer prints out the number of the equation in which the alarm occurred and the number of the equation which preceded the alarm. (Equations not assigned numbers by the programmer are automatically assigned numbers from 101 to 200.)
- The programmer may obtain the values of any variables he desires after an alarm by writing the appropriate PRINT instruction as equation 100."
"The system described is a working system and has been used by the Instrumentation Laboratory to solve several complex problems. One problem involved a set of six simultaneous differential equations. The equations involved extremely complicated algebraic and trigonometric calculations. Coding required only a few hours and the routine ran successfully the first time. Computing time was about six to eight times as long as it would have been using the single-address interpretive system ordinarily used at the Digital Computer Laboratory.
|Figure 11. George program listing.|
Much work remains to be done on the system particularly with respect to increasing the computing speed and improving postmortem facilities. Heretofore there has been very little need for elaborate post-mortem facilities, because, with a single exception, all programs coded in the Laning-Zierler system have been completed successfully on their first run."
YouTube Video - "See It Now: Jay W. Forrester and the WHIRLWIND Computer - (1951)"
/1/ Combelic, Algebraic Coding - Massachusetts Institute of Technology Summer Session 1954 - DIGITAL COMPUTERS, ADVANCED CODING TECHNIQUES - archive.org
/2/ Link to "George User Manual" - https://archive.org/details/bitsavers_mitwhirlwiamForTranslationofMathematicalEquationsF_1080308
* * *