FLOW-MATIC

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

FLOW-MATIC, спочатку відома як B-0 (Ділова мова версія 0), була першою англомовною мовою системи обробки даних. Вона була розроблена для UNIVAC I Remington 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вказує на точність).
  • Розбиття програми на розділи, що розділяють різні частини програми. 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

Примітки

  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. Також процитовано у Knuth, Donald; Trabb Pardo, Luis (August 1976). The Early Development of Programming Languages (Технічний звіт) (англ.). Computer Science Department, School of Humanities and Sciences, Stanford University. Процитовано 19 березня 2016.
  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.
  • п
  • о
  • р
РівеньНизькорівневі
Високорівневі
Загального
призначення
Серверні
Запитів до баз
даних[суперечливо 1]
Розмітки та векторної
графіки[суперечливо 1]
Синхронні[en]
  • Lustre
Символьних та
чисельних обчислень
Квантових обчислень
Логічні
  • Mercury
  • Prolog
АкадемічніЕзотеричні
  1. а б Немає загальноприйнятого рішення, чи вважати усі ці мови саме мовами програмування
Мова програмування Це незавершена стаття про мови програмування.
Ви можете допомогти проєкту, виправивши або дописавши її.