MATH-MATICMATH-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 . ПримечанияСсылки
|
Portal di Ensiklopedia Dunia