YaChudo

FLOW-MATIC

Переглядів: 0. Оновлено 10.10.2026.

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 була першою мовою програмування, де використовувалася структура мови, подібна до речення англійською мовою.[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

Список команд

Список команд які описані в керівництві користувача. [7]:95

  • CLOSE-OUT Закриває працю із бобіною.
  • COMPARE Порівнює значення полів в двох записах. Після перевірки вимог виконує перехід за вказаними адресами.
  • EXECUTE Викликає виконання підпрограми
  • INPUT Задає як записи даних співвідносяться із бобіною
  • JUMP Безумовний перехід по логічному номеру команди
  • MOVE Переносить значення поля одного запису в поле іншого запису.
  • READ-ITEM Читає наступний запис із бобіни
  • REWIND Перемотує бобіну на початок
  • SET Міняє параметри переходу в команді за вказаним логічним адресом
  • STOP Зупиняє виконання програми
  • TEST Перевіряє значення полів запису із константою. Після перевірки вимог виконує перехід за вказаними адресами.
  • TRANSFER Переносить значення запису в інший запис, або його частину.
  • WRITE-ITEM Записує дані із поточного буферу запису на вихідний пристрій.

Примітки

  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 (Серпень 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.
  7. ↑ Flow-Matic: Programming system (PDF) (англ.). Sperry Rand Corporation. 1958. Архів (PDF) оригіналу за 20 лютого 2024. Процитовано 27 січня 2025. {{cite book}}: Не збігається часова мітка у |archive-date= / |archive-url=; можливо, 20 грудня 2024? (довідка)


Джерело: стаття у Вікіпедії та історія редагувань (автори).