Paul Graham anunciou uma nova linguagem de programação Bel

A língua Bel é escrita na língua Bel.

Paul Graham anunciou uma nova linguagem de programação Bel
Em 1960, John McCarthy descreveu Lisp, um novo tipo de linguagem de programação. Digo "novo tipo" porque Lisp não era apenas uma nova linguagem, mas uma nova forma de descrever linguagens.

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

O objetivo não era descrever uma linguagem de programação no sentido usual – uma linguagem usada para dizer a um computador o que fazer. Em seu trabalho de 1960, Lisp foi entendido como um modelo formal de computação semelhante à Máquina de Turing. McCarthy não pensou em usá-lo em computadores até que Steve Russell, seu aluno de pós-graduação, o sugeriu.

O Lisp em 1960 não tinha os recursos comuns às linguagens de programação. Por exemplo, não houve números, erros ou E/S. Portanto, as pessoas que usaram o Lisp como base para as linguagens usadas para programar computadores tiveram que adicionar elas mesmas esses recursos. E fizeram isso abandonando a abordagem axiomática.

Assim, o desenvolvimento do Lisp ocorreu em duas etapas - e aparentemente bastante independentes -: uma etapa formal, introduzida em um artigo de 1960, e uma etapa de implementação, na qual a linguagem foi adaptada e estendida para rodar em computadores. O trabalho principal, se medido pelo número de oportunidades implementadas, ocorreu na fase de implementação. Lisp de 1960, traduzido para Common Lisp, contém apenas 53 linhas. Faz apenas o necessário para interpretar as expressões. Todo o resto foi adicionado na fase de implementação.

Minha hipótese é que, apesar de sua história difícil, o Lisp se beneficiou do fato de seu desenvolvimento ter ocorrido em duas fases; que o exercício original de definir uma linguagem escrevendo nela seu intérprete deu ao Lisp suas melhores qualidades. E se sim, por que não ir mais longe?

Bel é uma tentativa de responder à questão: e se, em vez de passar da fase formal para a fase de execução numa fase inicial, esta transição fosse feita o mais tarde possível? Se você continuar a usar a abordagem axiomática até ter algo próximo de uma linguagem de programação completa, de quais axiomas você precisará e como será a linguagem resultante?

Quero deixar claro o que Bel é e o que não é. Embora tenha muito mais recursos do que o Lisp de 1960 de McCarthy, Bel ainda é um produto em fase formal. Assim como o Lisp, descrito em um artigo de 1960, não é uma linguagem que você possa usar para programar. Principalmente porque, como o Lisp de McCarthy, não se preocupa com eficiência. Quando adiciono algo a Bel, descrevo o significado da adição sem tentar fornecer uma implementação eficiente.

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

Mas também acredito que é possível escrever uma implementação eficiente baseada em Bel adicionando restrições. Se você deseja uma linguagem que tenha poder expressivo, clareza e eficiência, pode valer a pena começar com poder expressivo e clareza e depois adicionar restrições, em vez de ir na direção oposta.

Então, se você quiser tentar escrever uma implementação baseada em Bel, vá em frente. Serei um dos primeiros usuários.

No final das contas, reproduzi algumas coisas de dialetos anteriores. Ou seus designers acertaram ou foram influenciados por dialetos usados ​​anteriormente, não vejo a resposta certa - o tempo dirá. Também tentei não me afastar muito das convenções do Lisp. O que significa que se você notar um afastamento das convenções Lisp, pode haver uma razão para isso.

Descrição continuada do idioma aqui.

Obrigado pela tradução: Denis Mitropolsky

PS

Fonte: habr.com

Adicionar um comentário