Lenguajes de programación concatenativos con múltiples pilas

Fuentes: Multistack Concatenative Programming Languages

Un blog técnico repasa el estado de los lenguajes de programación concatenativos que incorporan múltiples pilas para resolver uno de sus principales problemas: la gestión de la pila de datos. En estos lenguajes, la composición de programas se apoya en la yuxtaposición y existen desde hace décadas propuestas como Joy, Forth, Factor o PostScript. Una dificultad habitual es que algoritmos con un flujo de datos mal estructurado producen código difícil de mantener, motivo por el que muchos diseñadores añaden variables léxicas o pilas auxiliares temporales.

El artículo explica que las variables léxicas tienen un beneficio limitado, ya que sus scopes se anidan en lugar de componerse por concatenación, lo que obliga a extraer o propagar valores manualmente. Como alternativa, varios lenguajes recurren a vinculaciones no léxicas, como la pila de espacios de nombres de Factor o la pila de diccionario de PostScript, que permiten cambiar el contexto de búsqueda de valores y palabras. A partir de ahí, una línea de diseño emergente consiste en dotar al lenguaje de varias pilas con nombre que viajen junto a la pila de datos principal: se empuja, consulta y desapila de ellas según convenga.

El texto detalla además cómo Mirth utiliza pilas etiquetadas con comprobación de efectos y análisis estático para reforzar invariantes, y como en su generación de código a C puede eliminarlas por completo. También analiza lenguajes orientados a objetos como StackTalk y Kit, donde los propios objetos son colecciones de pilas con nombre. Por último, presenta proyectos representativos del enfoque multistack: Dawn, Mirth, Nova, StackTalk y Kit, junto con prototipos experimentales del autor.