MATH-MATIC
MATH-MATIC is the marketing name for the AT-3 (Algebraic Translator 3) compiler, an early programming language for the UNIVAC I and UNIVAC II.
Paradigm | imperative |
---|---|
Designed by | Remington Rand |
First appeared | 1957 |
Platform | UNIVAC I, UNIVAC II |
Influenced by | |
FLOW-MATIC | |
Influenced | |
UNICODE (programming language) |
MATH-MATIC was written beginning around 1955 by a team led by Charles Katz under the direction of Grace Hopper. A preliminary manual[1] was produced in 1957 and a final manual[2] the following year.
Syntactically, MATH-MATIC was similar to Univac's contemporaneous business-oriented language, FLOW-MATIC, differing in providing algebraic-style expressions and floating-point arithmetic, and arrays rather than record structures.
Notable features
Expressions in MATH-MATIC could contain numeric exponents, including decimals and fractions, by way of a custom typewriter.[3]
MATH-MATIC programs could include inline assembler sections of ARITH-MATIC code and UNIVAC machine code.[4]
The UNIVAC I had only 1000 words of memory, and the successor UNIVAC II as little as 2000. MATH-MATIC allowed for larger programs, automatically generating code to read overlay segments from UNISERVO tape as required. The compiler attempted to avoid splitting loops across segments.[5]
Influence
In proposing the collaboration with the ACM that led to ALGOL 58, the Gesellschaft für Angewandte Mathematik und Mechanik wrote that it considered MATH-MATIC the closest available language to its own proposal.[6]
In contrast to Backus' FORTRAN, MATH-MATIC did not emphasise execution speed of compiled programs. The UNIVAC machines did not have floating-point hardware, and MATH-MATIC was translated via A-3 (ARITH-MATIC) pseudo-assembler code rather than directly to UNIVAC machine code, limiting its usefulness. [7]
MATH-MATIC Sample program
A sample MATH-MATIC program:[8]
(2) TYPE-IN ALPHA . (2A) READ A B C SERVO 4 STORAGE A IF SENTINEL JUMP TO SENTENCE 8 . (3) READ D F SERVO 5 . (4) VARY Y 1 (0.1) 3 SENTENCE 5 THRU 6 . (5) X1 = (7*10<sup>3</sup>*Y*A*SIN ALPHA)<sup>3</sup> / (B POW D+C POW E) . (6) WRITE AND EDIT A Y D E X1 SERVO 6 . (7) JUMP TO SENTENCE 2A . (8) CLOSE-INPUT AND REWIND SENTENCE 3 . (9) CLOSE-OUTPUT SENTENCE 6 . (10) READ F G H N SERVO 4 STORAGE A IF SENTINEL JUMP TO SENTENCE 20 . (11) EXECUTE SENTENCE 3 . (12) X2 = (3 ROOT (E-G)+LOG (D+N)) / (F<sup>2.6</sup>*EXP H) . (13) WRITE EDIT F D F X2 SERVO 6 . (16) JUMP TO SENTENCE 10 . (20) STOP .
Notes
- Ash (1957)
- Univac (1958)
- Sammet (1969) p. 135
- Sammet (1969) p. 137
- Sammet (1969) p. 137
- Bemer (1969) p. 161
- Knuth (1976) p. 90
- Univac (1958) p. 8
References
- Ash, R.; Broadwin, E.; Della Valle, V.; Greene, M.; Jenny, A.; Katz, C.; Yu, L. (1957-04-19). Preliminary Manual for MATH-MATIC and ARITH-MATIC Systems for Algebraic Translation and Compilation for UNIVAC I and II (PDF) (Technical report). Philadelphia: Remington Rand Univac. Archived from the original (PDF) on 2014-12-26. Retrieved 2016-03-19.
- Bemer, Robert W. (1969), A Politico-Social History of Algol (With a Chronology in the Form of a Log Book) (PDF), retrieved 2016-03-20
- Knuth, Donald; Trabb Pardo, Luis (August 1976). The Early Development of Programming Languages (Technical report). Computer Science Department, School of Humanities and Sciences, Stanford University. Retrieved 2016-03-19.
- Sammet, Jean (1969). Programming Languages: History and Fundamentals. Prentice-Hall. pp. 132, 135–137. ISBN 978-0-13-729988-1.
- Univac MATH-MATIC Programming System (PDF) (Technical report). Remington Rand Univac. 1958. Retrieved 2016-03-19.
- "MATH-MATIC — Mathematically oriented autocode (Computer Language)". Online Historical Encyclopaedia of Programming Languages. Archived from the original on 2016-04-02. Retrieved 2016-03-20.
- "UNICODE — UNIVAC hybrid of FORTRAN and MATH-MATIC". Online Historical Encyclopaedia of Programming Languages. Archived from the original on 2016-04-03. Retrieved 2016-03-20.