Volver al Blog

Construí un lenguaje de programación en español

· telar compiladores open source desarrollo web

Hace unos días me hice una pregunta que no pude ignorar:

¿Por qué los lenguajes de programación tienen que estar en inglés?

No es una pregunta retórica. Es una barrera real para millones de personas que aprenden a programar. Y además de eso, el desarrollo web moderno tiene otro problema: para construir una app simple hoy necesitas elegir entre decenas de frameworks, configurar webpack, escribir JSX, gestionar dependencias… todo eso antes de haber resuelto el problema real.

Así que empecé a explorar una idea: ¿y si pudieras describir lo que quieres en español, y el compilador tomara todas las decisiones técnicas por ti?


La idea

El resultado se llama Telar — un lenguaje de programación declarativo para la web con sintaxis en español estructurado.

No es español completamente libre. Es un dialecto con patrones reconocibles que se leen como lenguaje humano pero son precisos para un compilador. La diferencia es importante: demasiado libre y el compilador adivina. Demasiado estricto y pierde la naturalidad.

Esto es una tienda online completa en Telar:

aplicación MiTienda

  página inicio en "/"
    título "Bienvenido"

    mostrar productos recientes
      máximo 8
      ordenados por precio
      si falla
        mostrar "Sin conexión"
        reintentar en 5 segundos

    si el usuario está conectado
      botón "Mi cuenta" ir a cuenta
    si no
      botón "Entrar" ir a login

    optimizar para móvil
    caché 10 minutos

Eso compila a HTML semántico, CSS responsivo y JavaScript optimizado. Sin tocar ninguno de esos archivos.


Cómo funciona por dentro

Un compilador tiene tres fases. Cada una transforma la información en algo más estructurado:

Lexer — lee el texto carácter a carácter y produce tokens. página se convierte en [PAGINA], "Bienvenido" en [TEXTO: Bienvenido]. Aquí aprendí que el español tiene peculiaridades que el inglés no tiene — tildes, ñ, ¿, caracteres especiales. El primer error que vi fue un carácter invisible de Windows (\r) que el lexer no reconocía.

Parser — toma esos tokens y construye un árbol. página inicio en "/" se convierte en un nodo NodoPagina con nombre, ruta e hijos. Aquí está la lógica del lenguaje — qué puede ir dentro de qué, qué es obligatorio, qué es opcional.

Generador — recorre el árbol y produce HTML. Cada nodo tiene su plantilla. NodoBoton con acción ir genera un <a href>. Con acción hacer genera un <button>.

Lo más difícil no fue ninguna de estas tres fases por separado. Fue el sistema de errores. Quería que Telar nunca fallara en silencio y que sus mensajes fueran útiles de verdad:

✗  Línea 12: "máximo muchos" — se esperaba un número
   ¿Quisiste decir "máximo 10"?
   Sugerencia: los números van sin comillas en Telar

Eso es infinitamente mejor que TypeError: undefined is not a function.


Lo que aprendí

Los lenguajes de programación son productos de diseño. Cada decisión de sintaxis tiene consecuencias. ¿La indentación es significativa o usamos llaves? ¿Los errores son del compilador o del usuario? ¿Qué pasa cuando algo falla en producción? Cada respuesta define el carácter del lenguaje.

El problema técnico es el más fácil. Construir el compilador fue difícil pero alcanzable. El problema real es la adopción — un lenguaje sin usuarios no tiene librerías, y sin librerías no tiene usuarios. Es un círculo vicioso que solo se rompe con tiempo, comunidad o respaldo de una empresa grande.

Construir en público tiene valor inmediato. Antes de tener una sola línea de código, documentar la idea, los principios y la sintaxis en un repositorio ya genera conversación. La especificación es tan importante como el código.


Dónde está ahora

Telar está publicado en npm y funciona:

npm install -g @davidbc01/telar
telar servir app.telar

Es la v0.1 — genera HTML y CSS estático desde código Telar. La v0.2 añadirá JavaScript para interactividad real. La v1.0 tendrá gestor de paquetes, extensión para VS Code y comunidad.

Es un proyecto personal en sus primeras fases. La sintaxis puede cambiar. Pero ya existe, y eso es lo que importa ahora mismo.

Si te parece interesante o tienes feedback, el repositorio está abierto y los issues son bienvenidos.

🔗 github.com/davidbc01/telar


Lo más valioso de este proyecto no es el compilador.
Es haber demostrado que la idea era posible.

El resto es iterar.