MATH-MATIC (MATH-MATIC)
MATH-MATIC — это маркетинговое название компилятора AT-3 (Algebraic Translator 3), раннего языка программирования для UNIVAC I и UNIVAC II.
MATH-MATIC был создан примерно в 1955 году командой, возглавляемой Чарльзом Кацем под руководством Грейс Хоппер. В 1957 году было подготовлено предварительное руководство[1], а в следующем году и окончательное[2].
Синтаксически MATH-MATIC был схож с существовавшим в то же время ориентированным на выполнение коммерческих задач языком FLOW-MATIC, отличавшимся алгебраическим представлением выражений, поддержкой чисел с плавающей запятой и массивов, а не структур записи как в MATH-MATIC.
Особенности
[править | править код]При наличии специального пишущего устройства выражения в MATH-MATIC могут содержать числовые показатели, включая десятичные числа и обыкновенные дроби.[3]
Программы MATH-MATIC могут включать вставки языка ассемблера ARITH-MATIC и машинного кода UNIVAC.[4]
Память UNIVAC I хранила 1000 машинных слов, когда как его приемник UNIVAC II 2000. Но MATH-MATIC позволял запускать более крупные программы, автоматически генерируя код для чтения наложенных сегментов с ленты UNISERVO по мере необходимости. Компилятор попытался избежать разбиения циклов на сегменты.[4]
Влияние
[править | править код]Ожидая сотрудничество с ACM, которое приведёт к появлению Алгол-58, Общество прикладной математики и механики написало, что считает MATH-MATIC наиболее близким и доступным языком для своих целей.[5]
В отличие от Фортрана Бэкуса, MATH-MATIC не делал акцент на скорости выполнения скомпилированных программ. Машины UNIVAC не имели аппаратного обеспечения чисел с плавающей запятой, поэтому MATH-MATIC транслировался в псевдо-ассемблерный код A-3 (ARITH-MATIC), а не в непосредственно машинный код UNIVAC, что ограничивало его полезность.[6]
Пример программы
[править | править код](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 .
Примечания
[править | править код]Ссылки
[править | править код]- 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. Архивировано (PDF) 26 декабря 2014. Дата обращения: 19 марта 2016.
- Bemer, Robert W. (1969), A Politico-Social History of Algol (With a Chronology in the Form of a Log Book) (PDF), Дата обращения: 20 марта 2016
- 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. Дата обращения: 19 марта 2016.
- Sammet, Jean. Programming Languages: History and Fundamentals. — Prentice-Hall, 1969. — P. 132,135-137. — ISBN 978-0-13-729988-1.
- Univac MATH-MATIC Programming System (PDF) (Technical report). Remington Rand Univac. 1958. Дата обращения: 19 марта 2016.
- MATH-MATIC — Mathematically oriented autocode (Computer Language) . Online Historical Encyclopaedia of Programming Languages. Дата обращения: 20 марта 2016. Архивировано 2 апреля 2016 года.
- UNICODE — UNIVAC hybrid of FORTRAN and MATH-MATIC . Online Historical Encyclopaedia of Programming Languages. Дата обращения: 20 марта 2016. Архивировано 3 апреля 2016 года.