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) frente a su equivalente en C# con ASP.NET MVC, basado en anotaciones. La diferencia clave es la trazabilidad: con el enfoque DSL, basta con pulsar Ctrl+clic sobre una función como responseJson para ver su implementación y replicarla en código de usuario, sin recurrir a reflexión oscura, procesadores de anotaciones ni configuraciones dispersas. Las anotaciones, en cambio, obligan a buscar en blogs la «invocación» que conecta la metainformación con su efecto en tiempo de ejecución. El autor describe además un patrón de construcción en dos fases: una externa ejecutada al arrancar el servidor, donde se registran metadatos, y otra interna que se ejecuta por petición. Esa fase de setup permite conservar la introspección propia de las anotaciones —útil, por ejemplo, para generar un documento OpenAPI automático— sin perder la simplicidad del DSL. Como ejemplo real, menciona el caso de Iceshrimp.NET, que sirve ciertos endpoints con Newtonsoft.Json porque los valores provienen de dotNetRdf, incompatible hasta hace poco con System.Text.Json.
La belleza de los lenguajes aptos para DSL
Fuentes:
the beauty in dsl-able languages
