Paul Graham anuncia nuevo lenguaje de programación Bel

Bel está escrito en Bel.

imagen

En 1960, John McCarthy describió Lisp, un nuevo tipo de lenguaje de programación. Digo "nuevo tipo" porque Lisp no era solo un nuevo idioma, sino una nueva forma de describir idiomas.

Para definir a Lisp, comenzó con un pequeño conjunto de operadores, una especie de axioma, que luego utilizó para escribir un intérprete para el lenguaje en sí.

No pretendía 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 fue entendido como un modelo de cálculo formal similar a la Máquina de Thuring. McCarthy no pensó en usarlo en las computadoras hasta que Steve Russell, su estudiante graduado, lo propuso.

1960 Lisp no tenía las capacidades comunes a los lenguajes de programación. Por ejemplo, no hubo números, errores o entradas / salidas. Por lo tanto, las personas que usaron 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.

Por lo tanto, el desarrollo de Lisp se realizó en dos etapas, y, al parecer, bastante independientes: la etapa formal, presentada en 1960, y la etapa de implementación, en la que el lenguaje se adaptó y expandió para ejecutarse en computadoras. El trabajo principal, si se mide por el número de oportunidades implementadas, fue en la etapa de implementación. 1960 Lisp, traducido a Common Lisp, contiene solo 53 líneas. Él solo hace lo necesario para interpretar las expresiones. Todo lo demás se agregó en la etapa de implementación.

Mi hipótesis es que, a pesar de una historia difícil, Lisp se benefició del hecho de que su desarrollo tuvo lugar en dos fases; que el ejercicio inicial de definir un lenguaje escribiendo su intérprete en sí mismo dotó a Lisp de sus mejores cualidades. Y si es así, ¿por qué no seguir adelante?

Bel es un intento de responder a la pregunta: ¿qué sucede si, en lugar de pasar de la etapa formal a la etapa de ejecución en una etapa temprana, hacer esta transición 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 aclarar qué es Bel y qué no es. Aunque tiene muchas más características que la Lisp McCarthy de 1960, Bel todavía está en la fase formal. Como Lisp describió en 1960, no es un lenguaje que pueda usar para programar. Principalmente porque, como Lisp McCarthy, no le importa la eficiencia. Cuando agrego algo a Bel, describo el significado de esta adición sin tratar de proporcionar una implementación efectiva.

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

Pero también creo que es posible escribir una implementación efectiva basada en Bel, agregando restricciones. Si necesita un lenguaje que tenga poder expresivo, claridad y eficiencia, es posible que desee comenzar con poder expresivo y claridad, y luego agregar restricciones que moverse en la dirección opuesta.

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

Finalmente, reproduje algunas cosas de dialectos anteriores. O bien sus diseñadores hicieron todo bien o, influenciados por los dialectos utilizados anteriormente, no veo la respuesta correcta: el tiempo lo dirá. También intenté no alejarme demasiado de las convenciones adoptadas en Lisp. Lo que significa que si ve una desviación de las convenciones de Lisp, podría haber una razón.

Descripción continua del idioma aquí .


Gracias por la traducción: Denis Mitropolsky

PS


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


All Articles