Les premiers langages de programmation étaient assez simples (pas de récursivité par exemple) et proches de l'architecture de la machine qui était elle-même simple. La traduction était alors un processus simple .
Un compilateur était plus simple en tant que programme qu'un interprète qui devrait garder ensemble les données pour l'exécution du programme et les tables pour interpréter le code source. Et l'interprète prendrait plus de place , pour lui-même, pour le code source du programme et pour les tables symboliques.
La mémoire pourrait être si rare (pour des raisons de coût et d'architecture) que les compilateurs pourraient être des programmes autonomes écrasant le système d'exploitation (j'en ai utilisé un). Le système d’exploitation a dû être rechargé après la compilation pour pouvoir exécuter le programme compilé. ... ce qui montre clairement que faire fonctionner un interprète pour un vrai travail n'était tout simplement pas une option .
Pour être vrai, la simplicité requise des compilateurs était telle que ceux-ci n'étaient pas très performants (l'optimisation du code en était encore à ses balbutiements, même envisagée). Le code machine écrit à la main avait, au moins jusqu’à la fin des années soixante à certains endroits, la réputation d’être nettement plus efficace que le code généré par le compilateur. Il y avait même un concept de taux d'expansion du code , qui comparait la taille du code compilé au travail d'un très bon programmeur. Il était généralement supérieur à 1 pour la plupart des compilateurs (tous?), Ce qui signifiait des programmes plus lents et, plus important encore, des programmes plus volumineux nécessitant plus de mémoire. C'était toujours un problème dans les années soixante.
L'intérêt du compilateur était la facilité de programmation, en particulier pour les utilisateurs qui n'étaient pas des spécialistes de l'informatique, tels que des scientifiques de divers domaines. Cet intérêt n'était pas la performance du code. Mais encore, le temps de programmation était alors considéré comme une ressource peu coûteuse. Le coût était en temps d’ordinateur, jusqu’en 1975-1980, lorsque le coût passa du matériel au logiciel. Ce qui signifie que même les compilateurs n'ont pas été pris au sérieux par certains professionnels .
Le coût très élevé du temps d’ordinateur constituait un motif supplémentaire de disqualification des interprètes , au point que cette idée aurait été risible pour la plupart des gens.
Le cas de Lisp est très spécial, car c’était un langage extrêmement simple qui le rendait faisable (et l’ordinateur était devenu un peu plus grand en 58). Plus important encore, l’interprète Lisp était une preuve de concept concernant la possibilité de définir la lisp ( méta-circularité ) de Lisp , indépendamment de tout problème d’utilisabilité.
Le succès de Lisp est dû en grande partie au fait que cette auto-définition en a fait un excellent banc d’essai pour l’étude des structures de programmation et la conception de nouveaux langages (ainsi que pour sa commodité pour le calcul symbolique).