FLOW-MATIC
Paradigm | imperative |
---|---|
Designed by | Remington Rand, Grace Hopper |
First appeared | 1955 |
Platform | UNIVAC I |
Influenced | |
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 during the period from 1955 until 1959. It had a strong influence on the development of COBOL.
Development
Hopper had found that business data processing customers were uncomfortable with mathematical notation.[1] In late 1953 she proposed that data processing problems should be expressed using English keywords, but Rand management considered the idea unfeasible. In early 1955, she and her team wrote a specification for such a programming language and implemented a prototype.[3] The FLOW-MATIC compiler became publicly available in early 1958 and was substantially complete in 1959.[4]
Innovations and influence
First, FLOW-MATIC was the first programming language to express operations using English-like statements.[4]
Second, FLOW-MATIC was 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.[4]
Flow-Matic was a major influence in the design of COBOL, since only it and its direct descendent AIMACO were in actual use at the time.[5] Several elements of Flow-Matic were incorporated into COBOL:
- Defining files in advance, and separating into
andINPUT
files.OUTPUT
- Qualification of data-names (
orIN
clause).OF
-
clause on fileIF END OF DATA (AT END)
operations.READ
- Figurative constant
(originallyZERO
, where number ofZZZ...ZZZ
's indicated precision).Z
- Dividing the program into sections, separating different parts of the program. Flow-Matic sections included
(Environment Division),Computer
(Data Division), andDirectory
(Procedure Division).Compiler
Sample program
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 ZZZZZZZZZZZZ ; IF EQUAL GO TO OPERATION 16 ; OTHERWISE GO TO OPERATION 15 . (15) REWIND B . (16) CLOSE-OUT FILES C ; D . (17) STOP . (END)
Note that this sample includes only the executable statements of the program, the
section. The record fields COMPILER
and PRODUCT-NO
would have been defined in the UNIT-PRICE
section, which did not use English-like syntax.[8]DIRECTORY
Notes
- ↑ “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 them first attempt to teach those symbols to vice-presidents or a colonel or admiral. I assure you that I tried it.”[2]
- ↑ Hopper (1959) p. 198.
- ↑ Hopper (1978) p. 16.
- 1 2 3 Sammet (1969) p. 316
- ↑ Sammet (1978) p. 204.
- ↑ Sperry Rand (1957) p. 7.
- ↑ Sammet (1969) p. 323.
- ↑ Hopper (1978) p. 18.
References
- Hopper, Grace (1978). Keynote Address, History of Programming Languages I. ACM. pp. 16–20. ISBN 0-12-745040-8
- 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. ISBN 0-13-729988-5
- Sammet, Jean (1978). "The Early History of COBOL", History of Programming Languages I. ACM. pp. 199–243. ISBN 0-12-745040-8
- Sperry Rand Corporation (1957) Introducing a New Language for Automatic Programming: Univac Flow-Matic
This article is based on material taken from the Free On-line Dictionary of Computing prior to 1 November 2008 and incorporated under the "relicensing" terms of the GFDL, version 1.3 or later.