FLOW-MATIC

**FLOW-MATIC** ، که در ابتدا با نام **B-0** شناخته می شد ( **زبان تجاری نسخه 0** )، اولین زبان پردازش داده شبیه به انگلیسی بود. این زبان برای UNIVAC I در رمینگتون رند زیر نظر گریس هاپر از سال 1955 تا 1959 توسعه یافت و به شکل گیری توسعه COBOL کمک کرد.

## توسعه
هاپر دریافته بود که مشتریان پردازش داده های کسب و کار با نمادهای ریاضی ناخوشایند هستند: 

در اواخر سال 1953، او پیشنهاد کرد که مشکلات پردازش داده باید با استفاده از کلمه‌های کلیدی انگلیسی بیان شود، اما مدیریت رند این ایده را غیرقابل اجرا در نظر گرفت. در اوایل سال 1955، او و تیمش مشخصاتی برای چنین زبان برنامه نویسی نوشتند و یک نمونه اولیه را پیاده سازی کردند.  کامپایلر FLOW-MATIC در اوایل سال 1958 در دسترس عموم قرار گرفت و در سال 1959 به طور قابل ملاحظه ای کامل شد. 

## نوآوری ها و نفوذ
سیستم Laning و Zierler اولین زبان برنامه نویسی بود که فرمول های جبری را تجزیه کرد. وقتی هاپر در سال 1954 از آن زبان آگاه شد، مسیر کار او را تغییر داد.  FLOW-MATIC اولین زبان برنامه نویسی بود که عملیات را با استفاده از عبارات مشابه انگلیسی بیان کرد .  همچنین اولین سیستمی بود که به طور مشخص توصیف داده ها را از عملیات روی آن جدا کرد. زبان تعریف داده آن، بر خلاف عبارت‌های اجرایی آن، مانند انگلیسی نبود. در عوض، ساختار داده‌ها با پر کردن فرم‌های از پیش چاپ شده تعریف شده است. 

FLOW-MATIC و نسل مستقیم آن AIMACO به شکل COBOL ،  که چندین عنصر آن را در خود جای داده است:

* تعریف فایل‌های ورودی و خروجی و خروجی چاپ شده از قبل، که به فایل‌های ورودی، فایل‌های خروجی و خروجی‌های چاپگر پرسرعت (HSP) تفکیک شده‌اند.  ;  ;  . 
* صلاحیت نام داده ها (بند  یا  ).
* بند  در عملیات  فایل.
* ثابت شکلی  (در اصل  ، که تعداد  ها دقت را نشان می دهد).

تقسیم برنامه به بخش ها، جداسازی بخش های مختلف برنامه. بخش های Flow-Matic شامل ***' (بخش محیطی)، ***' (بخش داده ها) و **** (بخش رویه) بود.

## نمونه برنامه
نمونه برنامه FLOW-MATIC:  
```
(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 تعریف شده بودند که (همانطور که قبلاً ذکر شد) از ربان انگلیسی مانند استفاده نمی‌شد.

فایل ها با حرف در انتهای FILE-LETER ارجاع می شوند. مثال: FILE-A بعداً فقط توسط A ارجاع داده می‌شود و برای سهولت ارجاع در کد زیر است.

عملیات در یک دنباله ناگسستنی از 0 تا n شماره‌گذاری می‌شوند و به ترتیب انجام می‌شوند، مگر اینکه یک عبارت برعکس به دست آمده/انجام شود (اجرا شود) (JUMP و غیره).

بیشترین شماره عملیاتی است که برنامه را متوقف می‌کند.

یک نمای کلی بسیار دقیق‌تر از FLOW-MATIC در کتابچه راهنمای سیستم برنامه‌نویسی FLOW-MATIC موجود است

## یادداشت‌ها


## منابع

* Hopper, Grace (1978). Keynote Address, *[http://portal.acm.org/citation.cfm?id=800025 History of Programming Languages I]*. ACM. pp.&nbsp;16–20. 
* 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 in 
* Sammet, Jean (1969). *Programming Languages: History and Fundamentals*. Prentice-Hall. p.&nbsp;316–324. 
* Sammet, Jean (1978). "The Early History of COBOL", *[http://portal.acm.org/citation.cfm?id=800025 History of Programming Languages I]*. ACM. pp.&nbsp;199–243. 
* Sperry Rand Corporation (1957) *[https://web.archive.org/web/20130702225747/http://www.computerhistory.org/collections/accession/102646140 Introducing a New Language for Automatic Programming: Univac Flow-Matic]*
* Remington Rand Univac a Division of Sperry Rand Corporation (1957). FLOW-MATIC PROGRAMMING SYSTEM*[http://www.bitsavers.org/pdf/univac/flow-matic/U1518_FLOW-MATIC_Programming_System_1958.pdf FLOW-MATIC_Programming_System_1958.pdf]*

رده:کوبول
رده:زبان‌های برنامه‌نویسی رویه‌ای