Los lenguajes de programación son herramientas poderosas que transforman ideas abstractas en instrucciones comprensibles para las computadoras. Tradicionalmente, estos lenguajes utilizan palabras reservadas y sintaxis basadas en inglés, lo cual puede representar una barrera para hablantes nativos de otros idiomas. En este contexto surge Hindilang, un lenguaje de programación inspirado en el idioma hindi que se diseñó para acercar la programación a quienes se sienten más cómodos con esta lengua. Hindilang es un lenguaje de scripting que transpila código a JavaScript, combinando la familiaridad cultural y lingüística con la potencia de uno de los lenguajes más usados en el desarrollo web moderno. La motivación detrás del desarrollo de Hindilang radica en la curiosidad y el deseo de comprender cómo funcionan los lenguajes de programación a nivel interno.
Su creador, Arjit Sharma, decidió emprender esta aventura como un ejercicio académico para explorar el diseño de lenguajes y compiladores. Aunque no es un experto en lingüística, compartió sus descubrimientos y experiencias con la comunidad, demostrando que cualquiera puede acercarse a la construcción de lenguajes con las herramientas y recursos adecuados. Hindilang ofrece los elementos fundamentales que cualquier programador espera en un lenguaje: asignación de variables, impresión de datos, entrada de usuario, estructuras condicionales, bucles y comentarios. Lo que lo hace particularmente especial es cómo estos elementos se presentan en hindi, haciendo que el código refleje de forma directa y natural la lengua. Poner ejemplos claros ayuda a entender este concepto; por ejemplo, para declarar una variable, se usa "MANLO" seguido del identificador y un valor, mientras que para imprimir en consola se utiliza "CHAPO".
Tomemos una muestra simple: MANLO x = 5; CHAPO x; Este fragmento define una variable x con valor 5 y luego imprime su contenido. La salida en ejecución es simplemente 5. Para tomar un valor del usuario, se recurre a "PUCHO", y para controlar flujo mediante condiciones se emplea "AGAR" para las sentencias if, y "JABTAK" para los bucles while. Los comentarios se indican con un símbolo de almohadilla (#), facilitando la documentación dentro del código sin interrumpir la ejecución. Desde el punto de vista técnico, Hindilang se basa en un diseño que utiliza una gramática similar a la notación de Backus-Naur (BNF), una formalidad común para describir la sintaxis de lenguajes de programación.
La definición clara y estructurada permite que el lenguaje sea interpretable y que las partes del código se formen siguiendo reglas precisas. En Hindilang, los programas se componen de listas de sentencias que pueden incluir asignaciones, impresión, entrada, condicionales y ciclos. El flujo de trabajo para traducir el código escrito en Hindilang a JavaScript comienza con el análisis léxico o lexer, que divide el texto en tokens significativos. Estos tokens representan palabras clave, identificadores, símbolos y números. Posteriormente, el parser analiza estos tokens para validar que se ordenen conforme a la gramática del lenguaje y construye una estructura lógica que evita errores de sintaxis.
Finalmente, el emisor genera el código JavaScript correspondiente línea por línea, cuidadosamente estructurado para preservar la lógica original en un lenguaje que los navegadores y motores JavaScript puedan entender. A modo de ejemplo, el código simple que asigna un valor y lo muestra pasa por estas etapas: primero, el lexer produce una lista de tokens como MANLO, identificador, símbolo igual, número, punto y coma, después CHAPO, identificador, punto y coma, terminando con EOF. Luego, el parser asegura que el orden y la estructura sean correctos, y el emisor transforma esas instrucciones en equivalentes de JavaScript: "let x = 5;" y "console.log(x);". Aunque actualmente Hindilang funciona como un transpiler generando código en otro lenguaje de mayor uso, la idea de avanzar hacia un compilador completo que traduzca directamente a código máquina es un horizonte posible.
Herramientas como LLVM pueden ayudar a convertir el código a representaciones intermedias y, eventualmente, a código nativo eficiente para distintas arquitecturas. Otras opciones son la generación directa de código ensamblador o la salida en WebAssembly, que permite ejecutar código binario optimizado en navegadores. El valor educativo de crear o trabajar con un lenguaje como Hindilang no solo reside en la creación de software, sino también en la profunda comprensión que se adquiere acerca de la abstracción en programación. Los lenguajes son, en sí mismos, cadenas de texto que un compilador descompone, valida y traduce hasta que la máquina pueda interpretar. Comprender estos procesos potencia enormemente la habilidad de escribir código más claro, eficiente y menos propenso a errores.
Para quienes empiezan en la programación, Hindilang representa una ventana hacia la lógica computacional desde un punto de vista más cercano culturalmente. Se despierta además un sentido diferente hacia los mensajes de error y la depuración, que dejan de verse como obstáculos y se convierten en aliados para seguir mejorando el código y comprender mejor cómo el lenguaje procesa cada instrucción. En definitiva, Hindilang es un ejemplo inspirador de cómo el conocimiento técnico puede combinarse con identidad cultural para construir herramientas novedosas. Fomenta no solo la enseñanza y el aprendizaje sino también una mayor inclusión en campos tecnológicos, al permitir que más personas accedan a la programación con un lenguaje que refleja sus raíces lingüísticas. Poetas, desarrolladores o entusiastas del lenguaje, todos pueden encontrar en Hindilang una invitación a explorar la programación desde una perspectiva fresca y accesible.
Aprender a construir y entender un lenguaje propio redefine nuestra relación con el código y abre puertas a nuevas formas de pensar en la tecnología y su conexión con la humanidad.