Una breve descripción del lenguaje de programación Pawns
Autores: Naish, Lee
Idioma: Inglés
Editor: MDPI
Año: 2024
Acceso abierto
Artículo científico
Categoría
Ingeniería y Tecnología
Subcategoría
Ingeniería de Software
Palabras clave
Lenguaje de programación
Programación funcional
Programación imperativa
Actualización destructiva
Firmas de tipo
Análisis de compartición
Licencia
CC BY-SA – Atribución – Compartir Igual
Consultas: 17
Citaciones: Sin citaciones
Este documento describe el lenguaje de programación Pawns, actualmente en desarrollo, que utiliza varias características novedosas para combinar los paradigmas de programación funcional e imperativa. Soporta programación funcional pura (incluyendo tipos de datos algebraicos, programación de orden superior y polimorfismo paramétrico), donde la representación de los valores no necesita ser considerada. También soporta programación imperativa de bajo nivel similar a C, con punteros y la actualización destructiva de todos los campos de las estructuras utilizadas para representar los tipos de datos algebraicos. Toda actualización destructiva de variables es evidente en el código de Pawns, a través de anotaciones en las declaraciones y en las firmas de tipo. Las firmas de tipo también deben declarar el uso compartido entre cualquier argumento y resultado que pueda ser actualizado. Por ejemplo, si dos argumentos de una función son árboles que comparten un subárbol y el subárbol se actualiza dentro de la función, ambas variables deben ser anotadas en ese punto del código, y el uso compartido y la actualización de ambos argumentos deben ser declarados en la firma de tipo de la función. El compilador realiza un análisis exhaustivo de uso compartido para verificar que las declaraciones y anotaciones sean correctas. Este análisis permite que la actualización destructiva esté encapsulada: una función sin anotaciones de actualización en su firma de tipo está garantizada para comportarse como una función pura, aunque el valor devuelto pueda haber sido construido utilizando actualización destructiva dentro de la función. Además, el análisis de uso compartido ayuda a soportar una forma restringida de variables globales que también permite que la actualización destructiva esté encapsulada y que se realice una actualización segura de variables con tipos polimórficos.
Descripción
Este documento describe el lenguaje de programación Pawns, actualmente en desarrollo, que utiliza varias características novedosas para combinar los paradigmas de programación funcional e imperativa. Soporta programación funcional pura (incluyendo tipos de datos algebraicos, programación de orden superior y polimorfismo paramétrico), donde la representación de los valores no necesita ser considerada. También soporta programación imperativa de bajo nivel similar a C, con punteros y la actualización destructiva de todos los campos de las estructuras utilizadas para representar los tipos de datos algebraicos. Toda actualización destructiva de variables es evidente en el código de Pawns, a través de anotaciones en las declaraciones y en las firmas de tipo. Las firmas de tipo también deben declarar el uso compartido entre cualquier argumento y resultado que pueda ser actualizado. Por ejemplo, si dos argumentos de una función son árboles que comparten un subárbol y el subárbol se actualiza dentro de la función, ambas variables deben ser anotadas en ese punto del código, y el uso compartido y la actualización de ambos argumentos deben ser declarados en la firma de tipo de la función. El compilador realiza un análisis exhaustivo de uso compartido para verificar que las declaraciones y anotaciones sean correctas. Este análisis permite que la actualización destructiva esté encapsulada: una función sin anotaciones de actualización en su firma de tipo está garantizada para comportarse como una función pura, aunque el valor devuelto pueda haber sido construido utilizando actualización destructiva dentro de la función. Además, el análisis de uso compartido ayuda a soportar una forma restringida de variables globales que también permite que la actualización destructiva esté encapsulada y que se realice una actualización segura de variables con tipos polimórficos.