HOME

TheInfoList



OR:

FLOW-MATIC, originally known as B-0 (Business Language version 0), was the first English-like
data processing Data processing is the collection and manipulation of digital data to produce meaningful information. Data processing is a form of ''information processing'', which is the modification (processing) of information in any manner detectable by an ...
language. It was developed for the
UNIVAC I The UNIVAC I (Universal Automatic Computer I) was the first general-purpose electronic digital computer design for business application produced in the United States. It was designed principally by J. Presper Eckert and John Mauchly, the inven ...
at
Remington Rand Remington Rand was an early American business machine manufacturer, originally a typewriter manufacturer and in a later incarnation the manufacturer of the UNIVAC line of mainframe computers. Formed in 1927 following a merger, Remington Rand w ...
under
Grace Hopper Grace Brewster Hopper (; December 9, 1906 – January 1, 1992) was an American computer scientist, mathematician, and United States Navy rear admiral. One of the first programmers of the Harvard Mark I computer, she was a pioneer of compu ...
from 1955 to 1959, and helped shape the development of
COBOL COBOL (; an acronym for "common business-oriented language") is a compiled English-like computer programming language designed for business use. It is an imperative, procedural and, since 2002, object-oriented language. COBOL is primarily us ...
.


Development

Hopper had found that business data processing customers were uncomfortable with mathematical notation: 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. The FLOW-MATIC compiler became publicly available in early 1958 and was substantially complete in 1959.Sammet (1969) p. 316


Innovations and influence

The
Laning and Zierler system The Laning and Zierler system (sometimes called "George" by its users) was the first operating algebraic compiler, that is, a system capable of accepting mathematical formulas in algebraic notation and producing equivalent machine code (the term ...
was the first programming language to parse algebraic formulae. When Hopper became aware of that language in 1954, it altered the trajectory of her work. FLOW-MATIC was the first programming language to express operations using English-like statements. 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. FLOW-MATIC and its direct descendant
AIMACO AIMACO is an acronym for AIr MAterial COmpiler. It began around 1959 as the definition of a high level programming language influenced by the FLOW-MATIC language, developed by UNIVAC, and the COMTRAN (COMmercial TRANslator) programming language, ...
shaped
COBOL COBOL (; an acronym for "common business-oriented language") is a compiled English-like computer programming language designed for business use. It is an imperative, procedural and, since 2002, object-oriented language. COBOL is primarily us ...
, which incorporated several of its elements: * Defining Input & Output Files and printed output in advance, separated into INPUT files, OUTPUT files and (HSP) High Speed Printer outputs. ; ; . * Qualification of data-names ( or clause). * clause on file operations. * Figurative constant (originally , where number of s indicated precision). * Dividing the program into sections, separating different parts of the program. Flow-Matic sections included (Environment Division), (Data Division), and (Procedure Division).


Sample program

A sample FLOW-MATIC program: () INPUT INVENTORY FILE-A PRICE FILE-B ; OUTPUT PRICED-INV FILE-C UNPRICED-INV FILE-D ; HSP D . () COMPARE PRODUCT-NO (A) WITH PRODUCT-NO (B) ; IF GREATER
GO TO GoTo (goto, GOTO, GO TO or other case combinations, depending on the programming language) is a statement found in many computer programming languages. It performs a one-way transfer of control to another line of code; in contrast a function c ...
OPERATION 10 ; IF EQUAL
GO TO GoTo (goto, GOTO, GO TO or other case combinations, depending on the programming language) is a statement found in many computer programming languages. It performs a one-way transfer of control to another line of code; in contrast a function c ...
OPERATION 5 ; OTHERWISE
GO TO GoTo (goto, GOTO, GO TO or other case combinations, depending on the programming language) is a statement found in many computer programming languages. It performs a one-way transfer of control to another line of code; in contrast a function c ...
OPERATION 2 . () TRANSFER A TO D . () WRITE-ITEM D . ()
JUMP TO GoTo (goto, GOTO, GO TO or other case combinations, depending on the programming language) is a statement found in many computer programming languages. It performs a one-way transfer of control to another line of code; in contrast a function c ...
OPERATION 8 . () TRANSFER A TO C . () MOVE UNIT-PRICE (B) TO UNIT-PRICE (C) . () WRITE-ITEM C . () READ-ITEM A ; IF
END OF DATA In computer networking, an Ethernet frame is a data link layer protocol data unit and uses the underlying Ethernet physical layer transport mechanisms. In other words, a data unit on an Ethernet link transports an Ethernet frame as its payload. ...
GO TO GoTo (goto, GOTO, GO TO or other case combinations, depending on the programming language) is a statement found in many computer programming languages. It performs a one-way transfer of control to another line of code; in contrast a function c ...
OPERATION 14 . ()
JUMP TO GoTo (goto, GOTO, GO TO or other case combinations, depending on the programming language) is a statement found in many computer programming languages. It performs a one-way transfer of control to another line of code; in contrast a function c ...
OPERATION 1 . () READ-ITEM B ; IF
END OF DATA In computer networking, an Ethernet frame is a data link layer protocol data unit and uses the underlying Ethernet physical layer transport mechanisms. In other words, a data unit on an Ethernet link transports an Ethernet frame as its payload. ...
GO TO GoTo (goto, GOTO, GO TO or other case combinations, depending on the programming language) is a statement found in many computer programming languages. It performs a one-way transfer of control to another line of code; in contrast a function c ...
OPERATION 12 . ()
JUMP TO GoTo (goto, GOTO, GO TO or other case combinations, depending on the programming language) is a statement found in many computer programming languages. It performs a one-way transfer of control to another line of code; in contrast a function c ...
OPERATION 1 . ()
SET Set, The Set, SET or SETS may refer to: Science, technology, and mathematics Mathematics *Set (mathematics), a collection of elements *Category of sets, the category whose objects and morphisms are sets and total functions, respectively Electro ...
OPERATION 9 TO
GO TO GoTo (goto, GOTO, GO TO or other case combinations, depending on the programming language) is a statement found in many computer programming languages. It performs a one-way transfer of control to another line of code; in contrast a function c ...
OPERATION 2 . ()
JUMP TO GoTo (goto, GOTO, GO TO or other case combinations, depending on the programming language) is a statement found in many computer programming languages. It performs a one-way transfer of control to another line of code; in contrast a function c ...
OPERATION 2 . () TEST PRODUCT-NO (B) AGAINST ; IF EQUAL
GO TO GoTo (goto, GOTO, GO TO or other case combinations, depending on the programming language) is a statement found in many computer programming languages. It performs a one-way transfer of control to another line of code; in contrast a function c ...
OPERATION 16 ; OTHERWISE
GO TO GoTo (goto, GOTO, GO TO or other case combinations, depending on the programming language) is a statement found in many computer programming languages. It performs a one-way transfer of control to another line of code; in contrast a function c ...
OPERATION 15 . () REWIND B . () CLOSE-OUT FILES C ; D . () STOP . (END) Sample Notes # Note that this sample includes only the executable statements of the program, the section. The record fields and would have been defined in the section, which ( as previously noted) did not use English-like syntax. # Files are referred to by the letter at the end of the FILE-LETTER. Example: FILE-A is referred to later just by A and is for ease of reference in following code. # Operations are numbered in an unbroken sequence from 0..n and are performed in that order unless a statement to the contrary is reached/made (executed) (JUMP, etc.). # The highest numbered operation is the one that stops the program. # A much more detailed overview of FLOW-MATIC is available in the manual entitled, FLOW-MATIC PROGRAMMING SYSTEMRemington Rand Univac a Division of Sperry Rand Corporation (1957). FLOW-MATIC PROGRAMMING SYSTEM


Notes


References

* 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 * 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 SYSTEM
FLOW-MATIC_Programming_System_1958.pdf
' {{DEFAULTSORT:Flow-Matic Procedural programming languages COBOL Programming languages created in 1955