MATH-MATIC

Last updated
MATH-MATIC
Paradigm imperative
Designed by Remington Rand
First appeared1957 (1957)
Platform UNIVAC I, UNIVAC II
Influenced by
FLOW-MATIC
Influenced
UNICODE (programming language)

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.

Contents

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

  1. Ash (1957)
  2. Univac (1958)
  3. Sammet (1969) p. 135
  4. Sammet (1969) p. 137
  5. Sammet (1969) p. 137
  6. Bemer (1969) p. 161
  7. Knuth (1976) p. 90
  8. Univac (1958) p. 8

Related Research Articles

ALGOL Family of programming languages

ALGOL is a family of imperative computer programming languages originally developed in 1958. ALGOL heavily influenced many other languages and was the standard method for algorithm description used by the Association for Computing Machinery (ACM) in textbooks and academic sources until object-oriented languages came around, for more than thirty years.

COBOL Programming language with English-like syntax

COBOL is a compiled English-like computer programming language designed for business use. It is imperative, procedural and, since 2002, object-oriented. COBOL is primarily used in business, finance, and administrative systems for companies and governments. COBOL is still widely used in applications deployed on mainframe computers, such as large-scale batch and transaction processing jobs. But due to its declining popularity and the retirement of experienced COBOL programmers, programs are being migrated to new platforms, rewritten in modern languages or replaced with software packages. Most programming in COBOL is now purely to maintain existing applications, however many large financial institutions were still developing new systems in COBOL in 2006 due to the mainframe processing speed.

Simula Early object-oriented programming language

Simula is the name of two simulation programming languages, Simula I and Simula 67, developed in the 1960s at the Norwegian Computing Center in Oslo, by Ole-Johan Dahl and Kristen Nygaard. Syntactically, it is a fairly faithful superset of ALGOL 60, also influenced by the design of Simscript.

MAD is a programming language and compiler for the IBM 704 and later the IBM 709, IBM 7090, IBM 7040, UNIVAC 1107, UNIVAC 1108, Philco 210-211, and eventually the IBM S/370 mainframe computers. Developed in 1959 at the University of Michigan by Bernard Galler, Bruce Arden and Robert M. Graham, MAD is a variant of the ALGOL language. It was widely used to teach programming at colleges and universities during the 1960s and played a minor role in the development of CTSS, Multics, and the Michigan Terminal System computer operating systems.

The A-0 system, written by Grace Murray Hopper in 1951 and 1952 for the UNIVAC I, was an early compiler related tool developed for electronic computers. The A-0 functioned more as a loader or linker than the modern notion of a compiler. A program was specified as a sequence of subroutines and arguments. The subroutines were identified by a numeric code and the arguments to the subroutines were written directly after each subroutine code. The A-0 system converted the specification into machine code that could be fed into the computer a second time to execute the said program.

ARITH-MATIC is an extension of Grace Hopper's A-2 programming language, developed around 1955. ARITH-MATIC was originally known as A-3, but was renamed by the marketing department of Remington Rand UNIVAC.

In computer science, Backus–Naur form or Backus normal form (BNF) is a notation technique for context-free grammars, often used to describe the syntax of languages used in computing, such as computer programming languages, document formats, instruction sets and communication protocols. They are applied wherever exact descriptions of languages are needed: for instance, in official language specifications, in manuals, and in textbooks on programming language theory.

FLOW-MATIC, originally known as B-0, was the first English-like data processing language. It was developed for the UNIVAC I at Remington Rand under Grace Hopper from 1955 to 1959, and helped shape the development of COBOL.

In computer science, a high-level programming language is a programming language with strong abstraction from the details of the computer. In contrast to low-level programming languages, it may use natural language elements, be easier to use, or may automate significant areas of computing systems, making the process of developing a program simpler and more understandable than when using a lower-level language. The amount of abstraction provided defines how "high-level" a programming language is.

A system programming language is a programming language used for system programming; such languages are designed for writing system software, which usually requires different development approaches when compared with application software. Edsger Dijkstra refers to these language as Machine Oriented High Order Languages, or mohol.

The history of programming languages spans from documentation of early mechanical computers to modern tools for software development. Early programming languages were highly specialized, relying on mathematical notation and similarly obscure syntax. Throughout the 20th century, research in compiler theory led to the creation of high-level programming languages, which use a more accessible syntax to communicate instructions.

ALGOL 58, originally named IAL, is one of the family of ALGOL computer programming languages. It was an early compromise design soon superseded by ALGOL 60. According to John Backus

"The Zurich ACM-GAMM Conference had two principal motives in proposing the IAL: (a) To provide a means of communicating numerical methods and other procedures between people, and (b) To provide a means of realizing a stated process on a variety of machines..."

The TPK algorithm is a 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.

Autocode is the name of a family of "simplified coding systems", later called programming languages, devised in the 1950s and 1960s for a series of digital computers at the Universities of Manchester, Cambridge and London. Autocode was a generic term; the autocodes for different machines were not necessarily closely related as are, for example, the different versions of the single language Fortran.

FORMAC, the FORmula MAnipulation Compiler, was the first computer algebra system to have significant use. It was developed by Jean E. Sammet and her team, as an extension of FORTRAN IV. The compiler was implemented as a preprocessor taking the FORMAC program and converting it to a FORTRAN IV program which was in turn compiled without further user intervention.

The Laning and Zierler system was one of the first operating algebraic compilers, that is, a system capable of accepting mathematical formulae in algebraic notation and producing equivalent machine code. It was implemented in 1952 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.

Jean E. Sammet was an American computer scientist who developed the FORMAC programming language in 1962. She was also one of the developers of the influential COBOL programming language.

SLIP is a list processing computer programming language, invented by Joseph Weizenbaum in the 1960s. The name SLIP stands for Symmetric LIst Processor. It was first implemented as an extension to the Fortran programming language, and later embedded into MAD and ALGOL. The best known program written in the language is ELIZA, an early natural language processing computer program created by Weizenbaum at the MIT Artificial Intelligence Laboratory.

In computing, a compiler is a computer program that transforms source code written in a programming language or computer language, into another computer language. The most common reason for transforming source code is to create an executable program.

Charles Katz is an American mathematician and computer scientist known for his contributions to early compiler development in the 1950s.

References