FLOW-MATIC, спочатку відома як B-0 (Ділова мова версія 0), була першою англомовною мовою системи обробки даних. Вона була розроблена для UNIVAC I Remington Rand під керуванням Ґрейс Гоппер у період з 1955 по 1959 рік. Мова сильно вплинула на розвиток COBOL.

FLOW-MATIC
Парадигма імперативне програмування і процедурне програмування
Дата появи 1955
Творці Ґрейс Гоппер
Платформа UNIVAC I

Розвиток ред.

Гоппер виявила, що клієнтам обробки бізнес-даних було незручно математичне позначення.[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вказує на точність).
  • Розбиття програми на розділи, що розділяють різні частини програми. Flow-Matic мав наступні розділи (у дужках наведені COBOL-еквіваленти): 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</ref>

Джерела ред.

  1. Hopper, Grace (1959). Automatic programming: Present status and future trends. Mechanisation of Thought Processes (англ.). National Physical Laboratory Symposium 10. Her Majesty's Stationery Office: 155—200. Також процитовано у Кнут, Пардо (1976).
  2. “Я колись була професором математики. У той час я знайшла там певну кількість студентів, які не могли навчитися математиці. Тоді переді мною поставили завдання зробити так, щоб бізнесмени могли легко використовувати наші комп'ютери. Я з'ясувала, що питання не у тому, чи можуть бізнесмени вивчити математику, а у тому, чи хочуть вони це робити. […] Вони говорили: «Викиньте ці символи — я не знаю, що вони означають, і я не маю часу, щоб це вивчати». Відповідь, запропонована мною тим, хто закликає спеціалістів з обробки даних вивчити математичні символи, була такою: навчіть спочатку тим символам віце-президентів, або полковника, або адмірала. Я запевняю вас — я це спробувалае.”[1]:198
  3. а б Hopper, Grace (1978). Keynote Address, History of Programming Languages I (англ.). ACM. с. 16–20. ISBN 0-12-745040-8.
  4. а б в г Sammet, Jean (1969). Programming Languages: History and Fundamentals (англ.). Prentice-Hall. с. 316–324. ISBN 0-13-729988-5.
  5. Sammet, Jean (1978). The Early History of COBOL. History of Programming Languages I (англ.). ACM. с. 199–243. ISBN 0-12-745040-8.
  6. Introducing a New Language for Automatic Programming: Univac Flow-Matic (англ.). Sperry Rand Corporation. 1957. Архів оригіналу за 2 липня 2013. Процитовано 11 вересня 2018.
Помилка цитування: Тег <ref> з назвою "Knuth76", визначений у <references>, не використовується в попередньому тексті.