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

FLOW-MATIC
پارادایم برنامه‌نویسیimperative
طراحی شده توسطRemington Rand, Grace Hopper
ظهوریافته در1955 (1955)
بن‌سازه رایانشUNIVAC I
متأثر از
ARITH-MATIC, Laning and Zierler system
تأثیر گذاشته بر
MATH-MATIC, AIMACO, COBOL



توسعه

ویرایش

هاپر دریافته بود که مشتریان پردازش داده های کسب و کار با نمادهای ریاضی ناخوشایند هستند: [۱]

من قبلاً استاد ریاضی بودم. در آن زمان متوجه شدم تعداد معینی از دانش آموزان وجود دارند که نمی توانند ریاضی را یاد بگیرند. پس از آن، من به کار آسان کردن استفاده از رایانه های ما برای بازرگانان متهم شدم. متوجه شدم این مسئله این نیست که آیا آنها می توانند ریاضی را بیاموزند یا نه، بلکه مسئله این است که آیا می توانند یاد بگیرند. […] آنها گفتند: "آن نمادها را دور بریزید - نمی دانم منظورشان چیست، من زمانی برای یادگیری نمادها ندارم." من به کسانی که دوست دارند افراد پردازش داده از نمادهای ریاضی استفاده کنند، پیشنهاد می‌کنم که اولین تلاش را برای آموزش آن نمادها به معاونان رئیس جمهور یا یک سرهنگ یا دریاسالار انجام دهند. من به شما اطمینان می دهم که آن را امتحان کردم

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

نوآوری ها و نفوذ

ویرایش

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

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

  • تعریف فایل‌های ورودی و خروجی و خروجی چاپ شده از قبل، که به فایل‌های ورودی، فایل‌های خروجی و خروجی‌های چاپگر پرسرعت (HSP) تفکیک شده‌اند. INPUT <FILE-NAME> <FILE-LETTER> ; OUTPUT <FILE-NAME> <FILE-LETTER> ; HSP <FILE-LETTER> . [۶]
  • صلاحیت نام داده ها (بند IN یا OF ).
  • بند IF END OF DATA (AT END) در عملیات READ فایل.
  • ثابت شکلی ZERO (در اصل ZZZ...ZZZ ، که تعداد Z ها دقت را نشان می دهد).

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

نمونه برنامه

ویرایش

نمونه برنامه 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 موجود است

یادداشت‌ها

ویرایش
  1. Hopper (1959) p. 198.
  2. Hopper (1978) p. 16.
  3. Sammet (1969) p. 316
  4. ۴٫۰ ۴٫۱ Sammet (1969) p. 316
  5. Sammet (1978) p. 204.
  6. Remington Rand Univac a Division of Sperry Rand Corporation (1957). FLOW-MATIC PROGRAMMING SYSTEM p. 30.
  7. Sperry Rand (1957) p. 7.
  8. Sammet (1969) p. 323.

منابع

ویرایش
  • Hopper, Grace (1978). Keynote Address, History of Programming Languages I. ACM. pp. 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 Knuth, Donald; Trabb Pardo, Luis (August 1976). The Early Development of Programming Languages (Technical report). Computer Science Department, School of Humanities and Sciences, Stanford University. Retrieved 2016-03-19.
  • Sammet, Jean (1969). Programming Languages: History and Fundamentals. Prentice-Hall. p. 316–324. شابک ‎۰−۱۳−۷۲۹۹۸۸−۵
  • Sammet, Jean (1978). "The Early History of COBOL", History of Programming Languages I. ACM. pp. 199–243. شابک ‎۰−۱۲−۷۴۵۰۴۰−۸
  • Sperry Rand Corporation (1957) Introducing a New Language for Automatic Programming: Univac Flow-Matic
  • Remington Rand Univac a Division of Sperry Rand Corporation (1957). FLOW-MATIC PROGRAMMING SYSTEMFLOW-MATIC_Programming_System_1958.pdf