На цій сторінці показано неперевірені зміни
FLOW-MATIC | |
---|---|
Парадигма | імперативне програмування і процедурне програмування ![]() |
Дата появи | 1955 ![]() |
Творці | Ґрейс Гоппер ![]() |
Платформа | UNIVAC I ![]() |
FLOW-MATIC, спочатку відома якB-0 (Ділова мова версія 0), була першою англомовною мовоюсистеми обробки даних. Вона була розроблена дляUNIVAC IRemington Rand під керуваннямҐрейс Гоппер у період з 1955 по 1959 рік. Мова сильно вплинула на розвитокCOBOL.
Гоппер виявила, що клієнтам обробки бізнес-даних було незручно математичне позначення.[2] Наприкінці 1953 р. вона запропонувала, щоб проблеми обробки даних були виражені за допомогою англійських ключових слів, але керівництво Remington Rand вважало цю ідею неможливою. На початку 1955 р. вона і її команда написали специфікацію для такої мови програмування та реалізували прототип.[3]:16 Компонент FLOW-MATIC став відкрито доступним на початку 1958 р. І був практично завершений у 1959 р.[4]:316
По-перше, FLOW-MATIC була першою мовою програмування, де використовуваласяструктура мови[en], подібна до реченняанглійською мовою.[4]:316
По-друге, FLOW-MATIC була першою системою, яка чітко відокремила опис даних від операцій на них.Мова опису даних, на відміну від її виконуваних твердженьне була англійською; Швидше за все, структури даних були визначені шляхом заповнення попередньо надрукованих форм.[4]:316
Flow-Matic мав ключовий вплив на дизайн мовиCOBOL, оскільки у практичному використанні на той час були тільки Flow-Matic і її безпосередній нащадокAIMACO.[5]:204 Кілька елементів Flow-Matic були включені в COBOL:
INPUT
іOUTPUT
.IN
абоOF
положення).IF END OF DATA (AT END)
положення про операції з файламиREAD
.ZERO
(оригінальноZZZ...ZZZ
, де кількістьZ
вказує на точність).Computer
(Environment Division),Directory
(Data Division), іCompiler
(Procedure Division).Зразок програми FLOW-MATIC:[6]:7[4]:323
(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) ; IF GREATER GO TO OPERATION 10 ; IF EQUAL GO TO OPERATION 5 ; OTHERWISE GO TO OPERATION 2 . (2) TRANSFER A TO D . (3) WRITE-ITEM D . (4) JUMP TO OPERATION 8 . (5) TRANSFER A TO C . (6) MOVE UNIT-PRICE (B) TO UNIT-PRICE (C) . (7) WRITE-ITEM C . (8) READ-ITEM A ; IF END OF DATA GO TO OPERATION 14 . (9) JUMP TO OPERATION 1 .(10) READ-ITEM B ; IF END OF DATA GO TO OPERATION 12 .(11) JUMP TO OPERATION 1 .(12) SET OPERATION 9 TO GO TO OPERATION 2 .(13) JUMP TO OPERATION 2 .(14) TEST PRODUCT-NO (B) AGAINST ; IF EQUAL GO TO OPERATION 16 ; OTHERWISE GO TO OPERATION 15 .(15) REWIND B .(16) CLOSE-OUT FILES C ; D .(17) STOP . (END)
Зверніть увагу, що цей зразок містить тільки виконувані оператори програми, тобто секціюCOMPILER
. Поля записівPRODUCT-NO
таUNIT-PRICE
мають бути визначені у розділіDIRECTORY
, який не використовував англійський синтаксис.[3]:18
Список команд які описані в керівництві користувача.[7]:95
CLOSE-OUT
Закриває працю із бобіною.COMPARE
Порівнює значення полів в двох записах. Після перевірки вимог виконує перехід за вказаними адресами.EXECUTE
Викликає виконання підпрограмиINPUT
Задає як записи даних співвідносяться із бобіноюJUMP
Безумовний перехід по логічному номеру командиMOVE
Переносить значення поля одного запису в поле іншого запису.READ-ITEM
Читає наступний запис із бобіниREWIND
Перемотує бобіну на початокSET
Міняє параметри переходу в команді за вказаним логічним адресомSTOP
Зупиняє виконання програмиTEST
Перевіряє значення полів запису із константою. Після перевірки вимог виконує перехід за вказаними адресами.TRANSFER
Переносить значення запису в інший запис, або його частину.WRITE-ITEM
Записує дані із поточного буферу запису на вихідний пристрій.![]() | Це незавершена стаття промови програмування. Ви можетедопомогти проєкту,виправивши або дописавши її. |