IT (Internal Translator) è stato uno dei primi “linguaggi” per facilitare il calcolo scientifico. IT nasce nel 1957 per il calcolatore IBM 650, ed è opera di A.J. Perlis, J.W. Smith e H.V. Zoeren: IT deriva da un precedente lavoro per il Datatron della Purdue University. Ad IT si ispirarono successivamente RUNCIBLE, GAT, GATE e CORREGATE. Per sfruttare la diffusione dei programmi FORTRAN Bob Bremer sviluppò un traduttore FORTRAN – IT.
La struttura di IT risente della scarsa dotazione di hardware, il calcolatore IBM 650 disponeva di 4000 voci di memoria ed il dispositivo di input aveva, probabilmente, solo lettere maiuscole e numeri.
Le variabili, solamente numeri floating point, hanno nomi tipo Ynnn, Cnnn e Innn dove nnn è un numero, i simboli per operazioni, relazioni ed interpunzioni sono sostituiti da lettere, secondo la tabella qui sotto. Le istruzioni hanno un indirizzo numerico, arbitrario ed inferiore a 650.
| Simbolo | Codifica |
|---|---|
| ( | L |
| ) | R |
| . | J |
| assegnazione | Z |
| = | U |
| > | V |
| >= | W |
| + | S |
| - | M |
| * | X |
| / | D |
| potenza | P |
| , | K |
| " | Q |
| fine istruzione | F |
Le precedenze fra gli operatori sono stabilite solamente con l’utilizzo delle parentesi.
Oltre all’istruzione di assegnazione, con forma: nn var Z espressione F, ci sono:
L’esempio che segue è una “verifica” di limx→0 sen(x)/x = 1. Il programma IT è stato interpretato da un programma Icon, che ha generato un codice sorgente in CUPL.
| Comandi IT | Commento | ||
|---|---|---|---|
| 1 C10 Z 0J5 | F | C10 = 0.5 | |
| 2 C11 Z 0J4 | F | C11 = 0.4 | |
| 3 C2 Z 0J | F | C2 = 0 | C2 somma differenze fra x e sen(x) |
| 8 19K C1K C10K M0J01K C11 M0J1K | F | 19, C1,C10,-0.01,0.1 | |
| 10 Y1 Z Q42EK C1Q | F | Y1 = "42E, C1" | Y1 = sen(X) |
| 12 C2 Z C2 S LC1 M Y1R | F | C2 = C2 + (C1 - Y1) | C2 sommatoria X-Y |
| 17 Y4 Z Y1 D C1 | F | Y4 = Y1 / C1 | |
| 19 T Y4 | F | print sen(x)/x | |
| 21 T C2 | F | ||
| 23 C10 Z C10 M 0J1 | F | C10 = C10 - 0.1 | |
| 25 C11 Z C11 M 0J1 | F | C11 = C11 - 0.1 | |
| 27 G 3 IF C10 U 0J4 | F | IF C10 = 0.4 GO 3 | |
| 29 H | F | Halt |