I primi linguaggi di programmazione erano abbastanza semplici (nessuna ricorsione per esempio) e vicini all'architettura della macchina che era essa stessa semplice. La traduzione fu quindi un processo semplice .
Un compilatore era più semplice come programma di un interprete che avrebbe dovuto tenere insieme i dati per l'esecuzione del programma e le tabelle per interpretare il codice sorgente. E l'interprete occuperebbe più spazio , per se stesso, per il codice sorgente del programma e per le tabelle simboliche.
La memoria potrebbe essere così scarsa (sia per motivi di costo che architetturali) che i compilatori potrebbero essere programmi autonomi che sovrascrivono il sistema operativo (ne ho usato uno di questi). Il sistema operativo doveva essere ricaricato dopo la compilazione per eseguire il programma compilato. ... il che rende chiaro che eseguire un interprete per un vero lavoro non era semplicemente un'opzione .
A dire il vero, la semplicità richiesta ai compilatori era tale che i compilatori non erano molto buoni (l'ottimizzazione del codice era ancora agli inizi, se considerata a tutti). Il codice macchina scritto a mano aveva, almeno fino alla fine degli anni sessanta in alcuni punti, la reputazione di essere significativamente più efficiente del codice generato dal compilatore. C'era persino un concetto di rapporto di espansione del codice , che confrontava la dimensione del codice compilato con il lavoro di un ottimo programmatore. Di solito era maggiore di 1 per la maggior parte (tutti?) Dei compilatori, il che significava programmi più lenti e, cosa molto più importante, programmi più grandi che richiedevano più memoria. Questo era ancora un problema negli anni sessanta.
L'interesse del compilatore era per la facilità di programmazione, in particolare per gli utenti che non erano specialisti di informatica, come scienziati in vari campi. Questo interesse non era la prestazione del codice. Tuttavia, il tempo del programmatore è stato quindi considerato una risorsa economica. Il costo era in tempo per computer, fino al 1975-1980, quando il costo passò dall'hardware al software. Ciò significa che anche alcuni compilatori non sono stati presi sul serio da alcuni professionisti .
L'altissimo costo del tempo al computer era un'altra ragione per squalificare gli interpreti , al punto che l'idea stessa sarebbe stata ridicola per la maggior parte delle persone.
Il caso di Lisp è molto speciale, perché era un linguaggio estremamente semplice che lo rendeva fattibile (e il computer era diventato un po 'più grande in 58). Ancora più importante, l'interprete di Lisp era una dimostrazione del concetto di auto definibilità di Lisp ( meta-circolarità ), indipendentemente da qualsiasi problema di usabilità.
Il successo di Lisp è dovuto in gran parte al fatto che questa auto-definibilità lo ha reso un eccellente banco di prova per lo studio delle strutture di programmazione e la progettazione di nuovi linguaggi (e anche per la sua convenienza per il calcolo simbolico).