Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
FLOW-MATIC
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|First English-like data processing language}} {{Infobox programming language | name = FLOW-MATIC | paradigm = [[imperative programming|imperative]] | year = {{start-date|1955}} | designer = [[Remington Rand]], [[Grace Hopper]] | influenced_by = [[ARITH-MATIC]], [[Laning and Zierler system]] | influenced = [[MATH-MATIC]], [[AIMACO]], [[COBOL]] | platform = [[UNIVAC I]] }} '''FLOW-MATIC''', originally known as '''B-0''' ('''Business Language version 0'''), was the first English-like [[computer data processing|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]]. == Development == Hopper had found that business data processing customers were uncomfortable with mathematical notation:<ref>Hopper (1959) p. 198.</ref> {{quote|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.|author=|title=|source=}} 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.<ref>Hopper (1978) p. 16.</ref> The FLOW-MATIC compiler became publicly available in early 1958 and was substantially complete in 1959.<ref name="sammet316">Sammet (1969) p. 316</ref> == Innovations and influence == The [[Laning and Zierler system]] 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.<ref name="Beyer_ch10">{{cite book|last=Beyer|first=Kurt|title=Grace Hopper and the Invention of the Information Age|publisher=MIT Press|date=February 10, 2012|isbn=9780262517263|chapter=10}}</ref> FLOW-MATIC was the first programming language to [[English-like programming language|express operations using English-like statements instead of symbols that have no meaning.]]<ref name="sammet316" /> 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.<ref name="sammet316" /> FLOW-MATIC and its direct descendant [[AIMACO]] shaped [[COBOL]],<ref>Sammet (1978) p. 204.</ref> 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. {{code|INPUT <FILE-NAME> <FILE-LETTER>}}; {{code|OUTPUT <FILE-NAME> <FILE-LETTER>}}; {{code|HSP <FILE-LETTER>}} .<ref>Remington Rand Univac a Division of Sperry Rand Corporation (1957). FLOW-MATIC PROGRAMMING SYSTEM p. 30.</ref> * Qualification of data-names ({{code|IN}} or {{code|OF}} clause). * {{code|IF END OF DATA (AT END)}} clause on file {{code|READ}} operations. * Figurative constant {{code|ZERO}} (originally {{code|ZZZ...ZZZ}}, where number of {{code|Z}}s indicated precision). * Dividing the program into sections, separating different parts of the program. Flow-Matic sections included '''{{code|Computer}}''' (Environment Division), '''{{code|Directory}}''' (Data Division), and '''{{code|Compiler}}''' (Procedure Division). == Sample Code == A sample FLOW-MATIC program:<ref>Sperry Rand (1957) p. 7.</ref><ref>Sammet (1969) p. 323.</ref> <!-- Note to editors: Blanks are sign[[If statement|IF]]icant, including before punctuation, although they are not clearly indicated in the marketing brochure. Barring transcription errors, this sample is now correct, so please do not 'fix' it unless you are absolutely sure you know what you're doing. --> ({{vanchor|0}}) INPUT INVENTORY FILE-A PRICE FILE-B ; OUTPUT PRICED-INV FILE-C UNPRICED-INV FILE-D ; HSP D . ({{vanchor|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 . ({{vanchor|2}}) TRANSFER A TO D . ({{vanchor|3}}) WRITE-ITEM D . ({{vanchor|4}}) JUMP TO OPERATION 8 . ({{vanchor|5}}) TRANSFER A TO C . ({{vanchor|6}}) MOVE UNIT-PRICE (B) TO UNIT-PRICE (C) . ({{vanchor|7}}) WRITE-ITEM C . ({{vanchor|8}}) READ-ITEM A ; IF END OF DATA GO TO OPERATION 14 . ({{vanchor|9}}) JUMP TO OPERATION 1 . ({{vanchor|10}}) READ-ITEM B ; IF END OF DATA GO TO OPERATION 12 . ({{vanchor|11}}) JUMP TO OPERATION 1 . ({{vanchor|12}}) SET OPERATION 9 TO GO TO OPERATION 2 . ({{vanchor|13}}) JUMP TO OPERATION 2 . ({{vanchor|14}}) TEST PRODUCT-NO (B) AGAINST ; IF EQUAL GO TO OPERATION 16 ; OTHERWISE GO TO OPERATION 15 . ({{vanchor|15}}) REWIND B . ({{vanchor|16}}) CLOSE-OUT FILES C ; D . ({{vanchor|17}}) STOP . (END) Sample Notes # Note that this sample includes only the executable statements of the program, the {{code|COMPILER}} section. The record fields {{code|PRODUCT-NO}} and {{code|UNIT-PRICE}} would have been defined in the {{code|DIRECTORY}} section, which ([[FLOW-MATIC#Innovations and influence|as previously noted]]) did not use English-like syntax.<ref>Hopper (1978) p. 18.</ref> # 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 titled, FLOW-MATIC PROGRAMMING SYSTEM<ref>Remington Rand Univac a Division of Sperry Rand Corporation (1957). FLOW-MATIC PROGRAMMING SYSTEM</ref> == Notes == {{Reflist|30em}} == References == {{refbegin}} * Hopper, Grace (1978). Keynote Address, ''[http://portal.acm.org/citation.cfm?id=800025 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 {{cite tech report |first1=Donald|last1=Knuth |first2=Luis|last2=Trabb Pardo |title=The Early Development of Programming Languages |date=August 1976 |publisher=Computer Science Department, School of Humanities and Sciences, Stanford University |url=https://archive.org/details/DTIC_ADA032123/page/n29 |access-date=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", ''[http://portal.acm.org/citation.cfm?id=800025 History of Programming Languages I]''. ACM. pp. 199–243. {{ISBN|0-12-745040-8}} * 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]'' {{refend}} {{DEFAULTSORT:Flow-Matic}} [[Category:Procedural programming languages]] [[Category:COBOL]] [[Category:Programming languages created in 1955]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Cite book
(
edit
)
Template:Cite tech report
(
edit
)
Template:Code
(
edit
)
Template:ISBN
(
edit
)
Template:Infobox programming language
(
edit
)
Template:Quote
(
edit
)
Template:Refbegin
(
edit
)
Template:Refend
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Vanchor
(
edit
)