FLOW-MATIC è il primo linguaggio commerciale ad essere stato utilizzato. FLOW-MATIC fu sviluppato da Grace Murray Hoper, col nome B-0, nel 1957, presso la Remington Rand. Il linguaggio si basa su circa venti verbi inglesi e l’utilizzo di nomi simbolici per i dati.
L’esempio che segue, una fusione di tre files, è ricavato da un rapporto del 1957. I numeri fra parentesi sono probabilmente “virtuali” e servono ad evidenziare blocchi di Iistruzioni, individuati sintatticamente dal punto. I blocchi sono possibili riferimenti delle istruzioni JUMP TO OP n, e GO TO OP n.
(0) INPUT CUST-FILE FILE-A SERVOS 2 , 3 CUST-FILE FILE-B SERVOS 4 , 5
CUST-FILE FILE-C SERVOS 6 , 7 ; OUTPUT MASTER-FILE FILE-D SERVOS 8 , 9 ; PRESELECTION . (1) SELECT-LEAST KEY ; IF A GO OP 2 , IF B GO OP 5 ,
IF C GO OP 8 . (2) TRANSFR-ITEM A TO D 10 . (3) READ-ITEM A ; IF END OF DATA GO TO OP 10 . (4) JUMP TO OP 10 . (5) TRANSFR-ITEM B TO D 10 . (6) READ-ITEM B ; IF END OF DATA GO TO OP 10 . (7) JUMP TO OP 10 . (8) TRANSFR-ITEM C TO D 10 . (9) READ-ITEM C ; IF END OF DATA GO TO OP 10 . (10) TEST CUST-CODE-NO (D) AGAINST ZZZZZZZZZZZZ ;
IF-EQUAL GO OP 13 . (11) WRITE-ITEM D . (12) JUMP TO OP 1 . (13) CLOSE-OUT FILE D . (14) STOP . |
Figura 1
Il sorgente è stato compilato con un programma RIGAL, che ha generato un sorgente in PASCAL. Sono state fatte alcune assunzioni circa la struttura dei dati e delle istruzioni. Nella Tabella 2 c’è il contenuto dei files di prova. La compilazione del sorgente originale durava 40 minuti sul calcolatore UNIVAC I.
FILE_A |
FILE_B |
FILE_C |
FILE_D |
1951FLOWMATIC 1970PROLOG 1985MIRANDA |
1958LISP 1960COBOL |
1957FORTRAN 1959ALGOL |
1951FLOWMATIC 1957FORTRAN 1958LISP 1959ALGOL 1960COBOL 1970PROLOG 1985MIRANDA |
Tabella 2
Un altro frammento di programma[1], con alcune varianti sintattiche, è il seguente:
INPUT INVENTORY FILE A;
PRICE FILE B;
OUTPUT PRICED INVENTORY FILE C.
COMPARE PRODUCT #A WITH PRODUCT #B.
IF GREATER, GO TO OPERATION 10;
IF EQUAL, GO TO OPERATION 5;
OTHERWISE GO TO OPERATION 2.
TRANSFER A TO D;
WRITE ITEM D;
JUMP TO OPERATION 8.
… It ended up as
REWIND B;
CLOSE OUT FILE C AND D;
STOP.
[1] Hopper, Grace Murray (1981b)
Keynote Address, in Wexelblat, Richard L. (Ed.) History of Programming Languages. Academic Press.