E’ uno dei primi sistemi interpretati per il calcolo scientifico, opera di J.H.Laning e W. Zierler nel 1952/53 al MIT, sviluppato su un Whirlwind Computer.
E’ stato il primo sistema a permettere una scrittura delle espressioni simile alla notazione manuale, sfruttando la capacità del dispositivo di input di accettare esponenti e permettendo l’omissione del segno di moltiplicazione fra due operandi, cosa che limitava la lunghezza dei nomi delle variabili ad 1, un esempio di espressione è la seguente: -b + F11(b2 – 4ac), dove F11 è la funzione radice quadrata.
Il linguaggio era dotato di salti condizionati dal risultato dell’ultima operazione effettuata (CP n), salti incondizionati SP n, con n o un numero di istruzione o una variabile con il numero dell’istruzione da eseguire ed infine salti a subroutine (SR n).
I tipi di dato erano aritmetici floating point organizzabili in vettori; l’indicazione di un elemento di un vettore era realizzata separando il nome del vettore dall’indice con |: a|1 o a|j per indicare il primo ed il j-esimo elemento del vettore a. I numeri soprascritti erano anche utilizzati, nella forma Fn, per indicare una delle circa venti funzioni aritmetiche native.
In origine non era dotato di istruzioni per i cicli, ma i vettori potevano essere popolati con la scrittura particolare:
v|N
= n1,n2, ...,nn,
oppure es.
g|N =
1,1.2,1.4,1.6,1.8,2,3,4,5,
v|N
= n1(incr1)lim1(incr2)lim2...,
es. g|N = 1(.2)2(1)5,
Il sorgente qui esposto è il calcolo
dell’algoritmo TPK, esso è stato interpretato da un programma in Haskell (v.HASKELL
2.31
) che ha generato un sorgente in Algol (v. ALGOL
2.5
)[1].
* TPK Laning e Zierler
v|N
= 1(1.2)13,
i = 0,
1 j = i+1,
a|i = v|j,
i = j,
e = i-10.5,
CP
1,
i = 10, 2
y = F1(F11(a|i))+5(a|i)^3,
e = y-400,
CP 3,
z
= 999,
PRINT i,z,
SP 4,
3 PRINT i,y,
4 i = i-1,
e = -0.5-i,
CP 2, STOP
|
[1]
Il sorgente differisce dal listato riportato in [WEX81]
pag. 49 per il non utilizzo dei soprascritti, l’inserzione del simbolo ^
per indicare l’elevazione a potenza, la gestione dei commenti e
l’immissione dei dati di partenza.