Paradigm | imperative |
---|---|
Designed by | Remington Rand, Grace Hopper |
First appeared | 1955 |
Platform | UNIVAC I |
Influenced by | |
ARITH-MATIC | |
Influenced | |
MATH-MATIC, AIMACO, COBOL |
FLOW-MATIC, originally known as B-0 (Business Language version 0), was the first English-like data processing language. It was developed for the UNIVAC I at Remington Rand under Grace Hopper from 1955 to 1959, and helped shape the development of COBOL.
Hopper had found that business data processing customers were uncomfortable with mathematical notation:[1]
I used to be a mathematics professor. At that time I found there were a certain number of students who could not learn mathematics. I then was charged with ¨the job of making it easy for businessmen to use our computers. I found it was not a question of whether they could learn mathematics or not, but whether they would. […] They said, ‘Throw those symbols out — I do not know what they mean, I have not time to learn symbols.’ I suggest a reply to those who would like data processing people to use mathematical symbols that they make the first attempt to teach those symbols to vice-presidents or a colonel or admiral. I assure you that I tried it.¨
In late 1953, she proposed that data processing problems should be expressed using English keywords, but Rand management considered the idea infeasible. In early 1955, she and her team wrote a specification for such a programming language and implemented a prototype.[2] The FLOW-MATIC compiler became publicly available in early 1958 and was substantially complete in 1959.[3]
FLOW-MATIC was the first programming language to express operations using English-like statements.[3] It was also the first system to distinctly separate the description of data from the operations on it. Its data definition language, unlike its executable statements, was not English-like; rather, data structures were defined by filling in pre-printed forms.[3]
FLOW-MATIC and its direct descendant AIMACO shaped COBOL,[4] which incorporated several of its elements:
INPUT <FILE-NAME> <FILE-LETTER>
; OUTPUT <FILE-NAME> <FILE-LETTER>
; HSP <FILE-LETTER>
.[5]IN
or OF
clause).IF END OF DATA (AT END)
clause on file READ
operations.ZERO
(originally ZZZ...ZZZ
, where number of Z
's indicated precision).Computer
(Environment Division), Directory
(Data Division), and Compiler
(Procedure Division).A sample FLOW-MATIC program:[6][7]
(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)
Sample Notes
COMPILER
section. The record fields PRODUCT-NO
and UNIT-PRICE
would have been defined in the DIRECTORY
section, which (as previously noted) did not use English-like syntax.[8]
By: Wikipedia.org
Edited: 2021-06-18 18:13:01
Source: Wikipedia.org