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 .

Примечания

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

Ссылки

  • Ash, R.; Broadwin, E.; Della Valle, V.; Greene, M.; Jenny, A.; Katz, C.; Yu, L. (19 апреля 1957). 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.

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.