FLOW-MATIC
FLOW-MATIC | |
---|---|
Класс языка | императивный |
Тип исполнения | компилируемый |
Появился в | 1955 |
Автор | Remington Rand,Грейс Хоппер |
Испытал влияние | ARITH-MATIC |
Повлиял на | MATH-MATIC,AIMACO,COBOL |
Платформа | UNIVAC I |
FLOW-MATIC — был первым основанным на английском языком обработки данных и изначально называлсяB-0 (Business Language version 0 — «язык (для) бизнеса версия 0»). Был разработан для компьютераUNIVAC I в компанииRemington Rand под руководствомГрейс Хоппер с 1955 по 1959 год. На базе FLOW-MATIC сформировался схожий по идее и целям язык программированияCOBOL.
Разработка
[править |править код]Хоппер обнаружила, что при обработке данных клиенты испытывают дискомфорт от использованияматематической нотации:[1]
Когда-то я была профессором математики. В то время я обнаружила, что есть студенты, которые не могут изучать математику. Затем мне поручили сделать так, чтобы предпринимателям было легко пользоваться нашими компьютерами. Оказалось, что вопрос не в том, смогут ли они изучать математику, а в том, захотят ли они. [ ... ] Многие из них говорили: "Выбросьте эти символы — я не знаю, что они означают, у меня нет времени их изучать". А тем, кто заявляет, что люди, обрабатывающие данные, должны использовать математическую нотацию, я посоветую для начала обучить математической записи вице-президента или полковника или адмирала. Уверяю вас, я уже пробовала.
В конце 1953 года она предложила заменить символы на (ключевые) слова из английского языка, но руководствоRemington Rand сочло эту идею неосуществимой. Однако уже в начале 1955 годаГрейс и её команда подготовили спецификацию к соответствующему языку программирования и реализовали прототипкомпилятора[2], который с 1958 года стал общедоступен, а 1959 - почти завершён[3].
Нововведения и влияние
[править |править код]FLOW-MATIC был первым языком программирования, который выражал операции с помощью словесныхмнемоник[3]. Это была также первая система, которая чётко отделяла данные от операций над ними. Язык определения данных системы FLOW-MATIC, в отличие от исполняемых инструкций, не был похож наанглийский; скорее, структуры данных определялись путём заполнения предварительно напечатанных форм[3].
FLOW-MATIC и его прямой потомокAIMACO определилиCOBOL[4], который включал в себя несколько характерных для FLOW-MATIC элементов:
- Определение входных и выходных файлов и заранее напечатанных выходных данных, разделённых на входные файлы, выходные файлы и (HSP — High Speed Printer outputs «высокоскоростные выходы принтера»).
INPUT <ИМЯ ФАЙЛА> <БУКВА ФАЙЛА>
;OUTPUT <ИМЯ ФАЙЛА> <БУКВА ФАЙЛА>
;HSP <БУКВА ФАЙЛА>
[5]. - Квалификация имён данных (разделы `IN` или `OF`).
- Разделы
IF END of DATA (AT END)
для операцииREAD
. - Символическая константа
ZERO
(первоначальноZZZ...ZZZ
, где числоZ
указывает точность). - Разделение программы на части. Разделы FLOW-MATIC включали
Computer
(раздел среды),Directory
(раздел данных) иCompiler
(раздел процедур).
Пример программы
[править |править код]Пример программы на FLOW-MATIC:[6][7]
(0) INPUT INVENTORY FILE-A PRICE FILE-B ; OUTPUT PRICED-INV FILE-C UNPRICED-INV FILE-D ; HSP D . (1) COMPARE PRODUCT-NO (A) WITH PRODUCT-NO (B) ;IFGREATERGO TOOPERATION 10 ;IFEQUALGO TOOPERATION 5 ; OTHERWISEGO TOOPERATION 2 . (2) TRANSFER A TO D . (3) WRITE-ITEM D . (4)JUMP TOOPERATION 8 . (5) TRANSFER A TO C . (6) MOVE UNIT-PRICE (B) TO UNIT-PRICE (C) . (7) WRITE-ITEM C . (8) READ-ITEM A ;IFEND OF DATAGO TOOPERATION 14 . (9)JUMP TOOPERATION 1 .(10) READ-ITEM B ;IFEND OF DATAGO TOOPERATION 12 .(11)JUMP TOOPERATION 1 .(12)SETOPERATION 9 TOGO TOOPERATION 2 .(13)JUMP TOOPERATION 2 .(14) TEST PRODUCT-NO (B) AGAINST ;IFEQUALGO TOOPERATION 16 ; OTHERWISEGO TOOPERATION 15 .(15) REWIND B .(16) CLOSE-OUT FILES C ; D .(17) STOP . (END)
Примечания к примеру
- Обратите внимание, что этот пример включает только исполняемые операторы программы, то есть разделкомпилятора. Записи
PRODUCT-NO
иUNIT-PRICE
были бы определены в разделе данных, который (как отмечалось ранее) не использует синтаксис, подобный английскому.[8] - Буква, обозначающая файл, находится после его имени. Пример:
FILE-A
, далее в программе, с целью упрощения. обозначается просто A. - Операции нумеруются в непрерывной последовательности от 0 до N и выполняются в этом порядке, если не выполнено обратное (прыжок, ветвление и т. д.).
- Операция с наивысшим номером останавливает программу.
- Гораздо более подробный обзор FLOW-MATIC доступен в руководстве, озаглавленном «СИСТЕМА ПРОГРАММИРОВАНИЯ FLOW-MATIC» (англ. FLOW-MATIC PROGRAMMING SYSTEM)[9].
Примечания
[править |править код]- ↑Hopper (1959) p. 198.
- ↑Hopper (1978) p. 16.
- ↑123Sammet (1969) p. 316
- ↑Sammet (1978) p. 204.
- ↑Remington Rand Univac a Division of Sperry Rand Corporation (1957). FLOW-MATIC PROGRAMMING SYSTEM p. 30.
- ↑Sperry Rand (1957) p. 7.
- ↑Sammet (1969) p. 323.
- ↑Hopper (1978) p. 18.
- ↑Remington Rand Univac a Division of Sperry Rand Corporation (1957). FLOW-MATIC PROGRAMMING SYSTEM
Ссылки
[править |править код]- Hopper, Grace (1978). Keynote Address,History of Programming Languages I. ACM. pp. 16-20.ISBN0-12-745040-8
- Hopper, Grace (1959). «Automatic programming: Present status and future trends»,Mechanisation of Thought Processes, National Physical Laboratory Symposium 10. Her Majesty’s Stationery Office. pp 155—200, cited inKnuth, 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 (1969).Programming Languages: History and Fundamentals. Prentice-Hall. p. 316—324.ISBN0-13-729988-5
- Sammet, Jean (1978). «The Early History of COBOL»,History of Programming Languages I. ACM. pp. 199—243.ISBN0-12-745040-8
- Sperry Rand Corporation (1957)Introducing a New Language for Automatic Programming: Univac Flow-Matic
- Remington Rand Univac a Division of Sperry Rand Corporation (1957). FLOW-MATIC PROGRAMMING SYSTEMFLOW-MATIC_Programming_System_1958.pdf