Construir un DSL de Brainfuck en Forth con generación de código

Este artículo explica cómo integrar Brainfuck como lenguaje de dominio específico (DSL) dentro de Forth, aprovechando las capacidades de metaprogramación de Forth en lugar de escribir un intérprete convencional. La idea central es que el código Brainfuck se embebe directamente en programas Forth y s

La belleza de los lenguajes aptos para DSL

Un programador reflexiona sobre el valor de los lenguajes que permiten crear DSL internos, usando como caso de estudio Kibble, un framework web experimental escrito en Kotlin. El texto compara un endpoint definido con sintaxis DSL (bloques anidados con lambdas con receptor y métodos de extensión) fr

Los lenguajes específicos de dominio como clave para un uso fiable de los LLM

Los modelos de lenguaje de gran tamaño generan código a gran velocidad, pero sin límites claros producen resultados difíciles de verificar. Los lenguajes específicos de dominio (DSL, por sus siglas en inglés) ofrecen un marco reducido y preciso que guía al LLM desde el primer instante hacia la soluc

Cómo un nuevo DSL puede prosperar en la era de los LLMs

En un contexto donde los lenguajes de programación consolidados (Python, Rust, Ruby) se benefician de décadas de código fuente que alimentan a los modelos de lenguaje grandes (LLMs), surge la pregunta de cómo un nuevo lenguaje específico de dominio (DSL) puede hacerse viable. La clave, según el auto

Nanopass: Nuevo marco agiliza creación de compiladores

Desarrolladores de software ahora cuentan con una nueva herramienta para simplificar la creación de compiladores: el Nanopass Framework. Este marco de trabajo, anunciado por nanopass.org, es un lenguaje específico de dominio (DSL) diseñado para facilitar la construcción de compiladores al enfocarse

Lean: el lenguaje que verifica su propio código

Este artículo explora el concepto de un "lenguaje de programación perfectible", ejemplificado por Lean. La idea central es que un lenguaje perfectible no solo permite escribir código, sino también expresar propiedades sobre ese código dentro del propio lenguaje. Esto abre la puerta a la verificación

Clojure: lenguaje funcional gana terreno en empresas

Una reciente implementación en Michelin ha impulsado la adopción de Clojure, un lenguaje de programación funcional basado en Lisp, para el desarrollo de aplicaciones empresariales. Inicialmente, el equipo se mostró escéptico al desviarse de la pila de desarrollo estándar (Java), pero rápidamente apr

Mejora modelos IA: nuevo método optimiza Random Forest

Este artículo describe un método para optimizar las características (features) utilizadas en un Random Forest, un algoritmo de aprendizaje automático popular, con el objetivo de mejorar su rendimiento y evitar el sobreajuste (overfitting). El autor, Illya Gerasymchuk, se enfrentaba a un problema: su

Java: Plugin 'Binding Expressions' Refuerza Seguridad

Un nuevo plugin para el compilador de Java, denominado 'Binding Expressions', busca introducir seguridad de tipos en tiempo de compilación al permitir que expresiones adyacentes se unan para formar nuevas expresiones basadas en sus tipos estáticos. Desarrollado por Manifold Systems y disponible en G

Smalltalk facilita reescrituras con nuevo motor

El motor de reescritura (Rewrite Engine) de Smalltalk, originalmente introducido con el Refactoring Browser, es una herramienta poderosa para realizar modificaciones a nivel de árbol de sintaxis abstracta (AST). Sin embargo, su sintaxis es notoriamente compleja y difícil de recordar, incluso para ta

Mini-lenguajes: programación en código reducido

Este artículo de Taylor Troesh explora el fascinante mundo de los "Lil' Fun Langs", o lenguajes de programación muy pequeños. La idea central es que es posible crear lenguajes de programación funcionales y con tipado estático con una cantidad sorprendentemente baja de código. El artículo no solo pre

Tipado: ¿Hindley-Milner o Bidireccional?

Este artículo aborda una pregunta común entre los desarrolladores de lenguajes de programación: ¿deberían usar un sistema de tipos Hindley-Milner (HM) o Bidireccional (Bidir)? La respuesta, según el autor, no es tan simple como elegir entre dos opciones mutuamente excluyentes. La verdadera pregunta