Paul Graham anuncia nova linguagem de programação Bel

Bel está escrito em Bel.

imagem

Em 1960, John McCarthy descreveu o Lisp, um novo tipo de linguagem de programação. Digo “novo tipo” porque o Lisp não era apenas um novo idioma, mas uma nova maneira de descrever idiomas.

Para definir Lisp, ele começou com um pequeno conjunto de operadores, uma espécie de axioma, que ele usou para escrever um intérprete para a própria linguagem.

Ele não pretendia descrever uma linguagem de programação no sentido usual - uma linguagem usada para dizer ao computador o que fazer. Em seu trabalho de 1960, Lisp era entendido como um modelo formal de cálculo semelhante à Máquina de Turíngia. McCarthy não pensou em usá-lo em computadores até que fosse proposto por Steve Russell, seu aluno de pós-graduação.

1960 O Lisp não possui os recursos comuns às linguagens de programação. Por exemplo, não havia números, erros ou entrada / saída. Portanto, as pessoas que usavam o Lisp como base para os idiomas usados ​​para programar computadores precisavam adicionar esses recursos. E eles fizeram isso abandonando a abordagem axiomática.

Assim, o desenvolvimento do Lisp foi realizado em dois estágios - e, ao que parece, bastante independentes -: o estágio formal, apresentado em 1960, e o estágio de implementação, no qual a linguagem foi adaptada e expandida para rodar em computadores. O trabalho principal, se medido pelo número de oportunidades implementadas, estava no estágio de implementação. 1960 O Lisp, traduzido para o Common Lisp, contém apenas 53 linhas. Ele faz apenas o necessário para interpretar expressões. Todo o resto foi adicionado na fase de implementação.

Minha hipótese é que, apesar de uma história difícil, a Lisp se beneficiou do fato de que seu desenvolvimento ocorreu em duas fases; que o exercício inicial de definir uma linguagem escrevendo seu intérprete sobre si conferia a Lisp suas melhores qualidades. E se sim, por que não seguir em frente?

Bel é uma tentativa de responder à pergunta: e se, em vez de passar do estágio formal para o estágio de execução, faça essa transição o mais tarde possível? Se você continuar usando a abordagem axiomática até ter algo próximo de uma linguagem de programação completa, quais axiomas serão necessários e como será a linguagem resultante?

Quero esclarecer o que é Bel e o que não é. Embora tenha muito mais recursos do que o Lisp McCarthy de 1960, Bel ainda está na fase formal. Como o Lisp descrito em 1960, não é uma linguagem que você pode usar para programação. Principalmente porque, como Lisp McCarthy, ele não se importa com eficiência. Quando adiciono algo a Bel, descrevo o significado dessa adição sem tentar fornecer uma implementação eficaz.

Para que? Por que estender o estágio formal? Uma resposta é ver para onde a abordagem axiomática pode nos levar, o que por si só é um exercício interessante. Se os computadores fossem tão poderosos quanto gostaríamos, como seriam os idiomas?

Mas também acredito que é possível escrever uma implementação eficaz baseada em Bel, adicionando restrições. Se você precisar de um idioma que possua poder, clareza e eficiência expressivos, poderá começar com poder e clareza expressivos e depois adicionar restrições do que seguir na direção oposta.

Portanto, se você quiser escrever uma implementação baseada em Bel, por favor. Eu serei um dos primeiros usuários.

Por fim, reproduzi algumas coisas de dialetos anteriores. Seus designers fizeram tudo certo ou, sendo influenciados por dialetos usados ​​anteriormente, não vejo a resposta certa - o tempo dirá. Também tentei não ir muito longe das convenções adotadas no Lisp. O que significa que, se você se afastar das convenções Lisp, pode ter havido um motivo.

Descrição continuada do idioma aqui .


Obrigado pela tradução: Denis Mitropolsky

PS


Source: https://habr.com/ru/post/pt484328/


All Articles