As primeiras linguagens de programação eram bastante simples (sem recursão, por exemplo) e próximas à arquitetura da máquina, que por si só era simples. A tradução foi então um processo direto .
Um compilador era mais simples como um programa do que um intérprete que precisaria manter juntos os dados para a execução do programa e as tabelas para interpretar o código-fonte. E o intérprete ocuparia mais espaço , por si só, para o código-fonte do programa e para tabelas simbólicas.
A memória pode ser tão escassa (por razões de custo quanto de arquitetura) que os compiladores podem ser programas independentes que substituem o sistema operacional (usei um deles). O sistema operacional teve que ser recarregado após a compilação para executar o programa compilado. ... o que deixa claro que executar um intérprete para trabalho real simplesmente não era uma opção .
Para ser verdade, a simplicidade exigida dos compiladores era tal que os compiladores não eram muito bons (a otimização do código ainda estava na infância, quando considerada). O código de máquina escrito à mão tinha, pelo menos até o final dos anos sessenta em alguns lugares, a reputação de ser significativamente mais eficiente que o código gerado pelo compilador. Havia até um conceito de taxa de expansão de código que comparava o tamanho do código compilado ao trabalho de um programador muito bom. Geralmente era maior que 1 para a maioria dos compiladores (todos?), O que significava programas mais lentos e, muito mais importante, programas maiores que exigem mais memória. Isso ainda era um problema nos anos sessenta.
O interesse do compilador estava na facilidade de programação, especialmente para usuários que não eram especialistas em computação, como cientistas em vários campos. Esse interesse não era o desempenho do código. Mas, ainda assim, o tempo do programador era considerado um recurso barato. O custo foi no tempo do computador, até 1975-1980, quando o custo passou do hardware para o software. O que significa que mesmo o compilador não foi levado a sério por alguns profissionais .
O custo muito alto do tempo do computador foi mais um motivo para desqualificar os intérpretes , a tal ponto que a própria idéia teria sido ridícula para a maioria das pessoas.
O caso do Lisp é muito especial, porque era uma linguagem extremamente simples que o tornava viável (e o computador havia se tornado um pouco maior em 58). Mais importante, o intérprete Lisp era uma prova de conceito em relação à autodefinibilidade do Lisp ( meta-circularidade ), independentemente de qualquer questão de usabilidade.
O sucesso do Lisp é devido, em grande parte, ao fato de que essa autodefinibilidade o tornou um excelente banco de testes para estudar estruturas de programação e projetar novas linguagens (e também por sua conveniência para computação simbólica).