{{위키데이터 속성 추적}}
{{Infobox programming language
| name = FLOW-MATIC
| paradigm = [[명령형 프로그래밍|명령형]]
| year = {{start-date|1955}}
| designer = [[레밍턴 랜드]], [[그레이스 호퍼]]
| influenced_by = [[ARITH-MATIC]]
| influenced = [[MATH-MATIC]], [[AIMACO]], [[코볼]]
| platform = [[유니박 I]]
}}
'''FLOW-MATIC'''(본래 이름: B-0 (Business Language version 0))은 영어와 비슷한 최초의 데이터 처리 언어이다. 1955년부터 1959년까지의 기간 동안 [[그레이스 호퍼]] 하의 [[레밍턴 랜드]]의 [[유니박 I]]용으로 개발되었다. [[코볼]] 개발에 중대한 영향을 미쳤다.

== 개발 ==
호퍼는 사무용 데이터 처리 고객들이 수학 기호에 불편해한다는 것을 발견하였다.{{refn|“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.”<ref>Hopper (1959) p.&nbsp;198.</ref>}} 1953년 말 그녀는 데이터 처리 문제는 영어 키워드를 이용하여 표현되어야 한다고 주장하였으나 랜드 관리부는 이 아이디어가 실현 불가능하다고 생각하였다. 1955년 초, 그녀와 그녀의 팀은 이러한 프로그래밍 언어에 대한 사양을 작성하고 프로토타입을 구현하였다.<ref>Hopper (1978) p.&nbsp;16.</ref> FLOW-MATIC 컴파일러는 1958년 초에 대중들의 이용이 가능하게 되었으며 실질적으로는 1959년에 완성되었다.<ref name="sammet316">Sammet (1969) p.&nbsp;316</ref>

== 샘플 프로그램 ==
샘플 FLOW-MATIC 프로그램은 다음과 같다:<ref>Sperry Rand (1957) p.&nbsp;7.</ref><ref>Sammet (1969) p.&nbsp;323.</ref>
<syntaxhighlight lang="cobolfree">
 (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)
</syntaxhighlight>
이 샘플에는 오직 프로그램의 실행문들 {{code|COMPILER}} 섹션만 포함되어 있다. 레코드 필드 {{code|PRODUCT-NO}}와 {{code|UNIT-PRICE}}는 {{code|DIRECTORY}} 섹션에 정의되며, 여기에는 영어와 같은 문법을 이용하지는 않았다.<ref>Hopper (1978) p.&nbsp;18.</ref>

== 참고 문헌 ==
* Hopper, Grace (1978). Keynote Address, ''[http://portal.acm.org/citation.cfm?id=800025 History of Programming Languages I]''. ACM. pp.&nbsp;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 {{기술보고서 인용
|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
|access-date=2016-03-19
}}
* Sammet, Jean (1969). ''Programming Languages: History and Fundamentals''. Prentice-Hall. p.&nbsp;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.&nbsp;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]''

== 각주 ==
<references />

[[분류:절차적 프로그래밍 언어]]
[[분류:코볼]]
[[분류:1955년 개발된 프로그래밍 언어]]