Pilot ha origine nel 1962 alla IBM come strumento per la gestione di corsi a terminale. E’ un linguaggio rudimentale, anche per gli standard dell’epoca, ma sufficiente per lo scopo per cui era utilizzato, tant’è che è sopravvissuto fino agli anni 90, ricevendo anche una standardizzazione (IEEE Std. 1154-1991).
Ogni linea è o un comando o un’etichetta. I comandi sono formati da un nome di istruzione, un’eventuale condizione, che se verificata permette l’esecuzione dell’istruzione stessa, e l’operando dell’istruzione; questo é separato dai campi precedenti tramite il carattere “:”. Le etichette sono stringhe alfanumeriche che iniziano con *.
Le istruzioni sono limitate, il linguaggio accetta
queste anche in modo abbreviato, al limite è sufficiente la prima lettera, esse
sono:
· REM: commento .
· TYPE: l’operando è inviato sul terminale.
· ACCEPT: acquisisce un input da tastiera, eventualmente lo inserisce in una variabile numerica o stringa, ciò è indicato prefissando la variabile rispettivamente con # o $.
· MATCH: esegue un confronto fra l’operando e quanto è stato immesso da tastiera. E’ forse l’istruzione più complessa: l’operando può contenere caratteri jolly, o occorrenze multiple. Il MATCH è verificato anche se l’operando compare parzialmente nella risposta.
· JUMP: predispone l’esecuzione del programma a partire dalle istruzioni che seguono l’etichetta indicata nell’operando.
· USE: predispone l’esecuzione del programma a partire dalle istruzioni che seguono l’etichetta indicata nell’operando, e memorizza l’indirizzo dell’istruzione successiva.
· COMPUTE: assegna un valore ad una variabile
· END: ritorna all’indirizzo memorizzato dalla USE o esce dal programma.
· YES: come TYPE, ma eseguita se l’istruzione MATCH precedente è risultata verificata.
· NO: come TYPE, ma eseguita se l’istruzione MATCH precedente è risultata non verificata.
· Spazio: eredita l’istruzione precedente
La parte condizione è o un’espressione fra variabili e costanti valutabile in vera o falsa o i caratteri “Y” o “N” che condizionano l’istruzione in base al risultato dell’istruzione MATCH precedente:
TYPE:Rispondere
S o N
A:
M:S,s
JY:*ESEGUI
Dagli originari grandi sistemi PILOT è migrato anche sui sistemi più piccoli, acquisendo alcune nuove funzionalità, come le istruzioni per gestire i video (PILOT Nevada per CP/M), quali CH per pulire il video e posizionarsi sulla prima riga..
L’esempio che segue è un semplice giochino, l’interprete PILOT, peraltro largamente incompleto, è stato scritto in LUA (v. par. 2.25).
C
:Numero = 44
C
:Tot = 0
R
:Esempio di programma PILOT
*GIOCA
CH:
C
:conta = 0
T
:Benvenuto, cerca di indovinare il numero che ho nascosto fra 0 e 100.
:
*RIPROVA
A
:#Num
C
:Tot = Tot + Num
C
:conta = conta + 1
T(Num
< Numero):Modesto! Numero troppo piccolo.
T(Num
> Numero):Esagerato! Numero troppo grande.
J(Num
<> Numero):*RIPROVA
T
:Indovinato!
T(conta
> 6):Ma hai fatto troppi tentativi.
T(conta
< 4):Meno di 4 tentativi, Sei stato fortunato.
C
:Numero = 97 + Tot + conta
*SOTTRAI
C:Numero
= Numero - 99
J(Numero
> 100):*SOTTRAI
T
:Vuoi riprovare?
A :
M :s,S
JY:*GIOCA
E
:
L’esecuzione di questo è:
Benvenuto, cerca di indovinare il numero che ho
nascosto fra 0 e 100.
50
Esagerato! Numero troppo grande.
25
Esagerato! Numero troppo grande.
12
Modesto! Numero troppo piccolo.
18
Modesto! Numero troppo piccolo.
21
Indovinato!
Vuoi riprovare?
n
Arrivederci!