FLOW-MATIC

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.