Paul Graham anunció un nuevo lenguaje de programación Bel

El idioma Bel está escrito en el idioma Bel.

Paul Graham anunció un nuevo lenguaje de programación Bel
En 1960, John McCarthy describió Lisp, un nuevo tipo de lenguaje de programación. Digo "nuevo tipo" porque Lisp no era sólo un nuevo lenguaje, sino una nueva forma de describir lenguajes.

Para definir Lisp, comenzó con un pequeño conjunto de declaraciones, una especie de axiomas, que luego utilizó para escribir un intérprete para el lenguaje mismo.

No se propuso describir un lenguaje de programación en el sentido habitual: un lenguaje utilizado para decirle a una computadora qué hacer. En su trabajo de 1960, Lisp era entendido como un modelo formal de computación similar a la Máquina de Turing. McCarthy no pensó en usarlo en computadoras hasta que Steve Russell, su estudiante de posgrado, lo sugirió.

Lisp en 1960 no tenía las características comunes a los lenguajes de programación. Por ejemplo, no había números, errores o E/S. Entonces, las personas que usaban Lisp como base para los lenguajes utilizados para programar computadoras tuvieron que agregar estas características ellos mismos. Y lo hicieron abandonando el enfoque axiomático.

Así, el desarrollo de Lisp se desarrolló en dos etapas (y aparentemente bastante independientes): una etapa formal, introducida en un artículo de 1960, y una etapa de implementación, en la que el lenguaje se adaptó y amplió para ejecutarse en computadoras. El trabajo principal, medido por el número de oportunidades implementadas, tuvo lugar en la etapa de implementación. Lisp de 1960, traducido al Common Lisp, contiene sólo 53 líneas. Sólo hace lo necesario para interpretar las expresiones. Todo lo demás se añadió en la etapa de implementación.

Mi hipótesis es que, a pesar de su difícil historia, Lisp se benefició del hecho de que su desarrollo se produjo en dos fases; que el ejercicio original de definir un idioma escribiendo a su intérprete en él le dio a Lisp sus mejores cualidades. Y si es así, ¿por qué no ir más allá?

Bel es un intento de responder a la pregunta: ¿y si, en lugar de pasar de la etapa formal a la etapa de ejecución en una etapa temprana, esta transición se hiciera lo más tarde posible? Si continúa utilizando el enfoque axiomático hasta que tenga algo parecido a un lenguaje de programación completo, ¿qué axiomas necesitará y cómo será el lenguaje resultante?

Quiero tener claro qué es Bel y qué no es. Aunque tiene muchas más características que el Lisp de 1960 de McCarthy, Bel sigue siendo un producto en su fase formal. Al igual que Lisp, descrito en un artículo de 1960, no es un lenguaje que se pueda utilizar para programar. Principalmente porque, al igual que el Lisp de McCarthy, no le importa la eficiencia. Cuando agrego algo a Bel, describo el significado de la adición sin intentar proporcionar una implementación eficiente.

¿Para qué? ¿Por qué ampliar la etapa formal? Una respuesta es ver adónde nos puede llevar el enfoque axiomático, lo cual es un ejercicio interesante en sí mismo. Si las computadoras fueran tan poderosas como nos gustaría que fueran, ¿cómo serían los idiomas?

Pero también creo que es posible escribir una implementación eficiente basada en Bel agregando restricciones. Si desea un lenguaje que tenga poder expresivo, claridad y eficiencia, podría valer la pena comenzar con poder expresivo y claridad y luego agregar restricciones, en lugar de ir en la dirección opuesta.

Entonces, si quieres intentar escribir una implementación basada en Bel, adelante. Seré uno de los primeros usuarios.

Al final, reproduje algunas cosas de dialectos anteriores. O sus diseñadores acertaron o, al estar influenciado por dialectos utilizados anteriormente, no veo la respuesta correcta; el tiempo lo dirá. También traté de no alejarme demasiado de las convenciones de Lisp. Lo que significa que si ve un alejamiento de las convenciones de Lisp, puede haber una razón para ello.

Descripción continuada del idioma aquí..

Gracias por la traducción: Denis Mitropolsky

PS

Fuente: habr.com

Añadir un comentario