La creación de mi propio lenguaje de programación
¡Hey amigos! 👋 ¿Alguna vez pensaron en crear su propio lenguaje de programación? ¡Porque yo sí! Estoy cocinando un lenguaje sencillo y totalmente en español para que aprender a programar sea tan fácil como decir 'hola mundo'. 🚀 Sumérgete en este post para descubrir cómo lo estoy haciendo. #programación #códigoEnEspañol

Durante las últimas semanas, me he embarcado en un proyecto fascinante: la creación de un nuevo lenguaje de programación destinado a facilitar el aprendizaje de la programación. Inicialmente, mi objetivo era desarrollar un intérprete de pseudocódigo con una visualización de diagrama de flujo integrada, una característica que posiblemente incorpore más adelante. Sin embargo, a medida que avanzaba en mi investigación, surgió la idea de crear un "lenguaje de programación" similar al que usaba en mi infancia con un emulador de robot llamado Karel, un software libre orientado a la educación de lenguajes de programación como Pascal.
Con ese pensamiento en mente, empecé el proyecto con el objetivo de crear una plataforma que permitiera aprender sobre lógica, algoritmos básicos, bucles y más. Para cumplir con este objetivo, determiné que el lenguaje debía poseer las siguientes características:
- Simplicidad: Dado que está diseñado para aprendices, solo incluirá tipos de datos simples como números, cadenas y arreglos, y posiblemente diccionarios.
- Verbalidad: Para facilitar la comprensión y lectura del código, he decidido que tenga más palabras que símbolos.
- En español: El aprendizaje es más sencillo cuando se realiza en tu lengua materna, por lo que el español era la opción ideal para este lenguaje. Incluso, estoy planeando permitir el uso de la ñ y acentos dentro del código.
- Fácil acceso: Es esencial que el lenguaje sea fácil de usar, por lo que opté por un diseño que pueda ejecutarse en un navegador sin necesidad de instalaciones adicionales o acceso a internet.
Una vez que tenía claras estas metas, era momento de empezar. Pero, ¿cómo? ¿En qué lenguaje? Para responder a estas preguntas, me puse a investigar cómo funciona un lenguaje de programación, qué partes lo componen, cómo se ejecuta el código y descubrí que un lenguaje de programación consta de los siguientes componentes:
- Tokens: Los tokens son los símbolos o palabras que tienen un significado específico dentro del código, como los operadores +, -, /, >, <, o las palabras if, else, for, while. Cada token tiene un tipo de token y un literal; el tipo de token es el significado que tendrá el símbolo y el literal es el símbolo asociado. Por ejemplo, el token (ASSIGN,=) significa que cada símbolo = (igual) que se encuentre en el código se entenderá como una asignación de valor.
- Lexer: El Lexer o analizador léxico es la parte que lee el código fuente carácter por carácter y va creando los tokens. Por ejemplo, el código fuente
5;genera el token (INT,'5'). - AST: El AST (Abstract Syntax Tree) o Árbol de Sintaxis Abstracta es una estructura de datos que representa la estructura gramatical de un programa de manera jerárquica y abstracta. Se utiliza como una representación intermedia durante el análisis sintáctico de un lenguaje de programación.
- Parser: El Parser es la parte que analiza la sintaxis del código utilizando los tokens, y se encarga de construir el AST para su posterior procesamiento.
- Evaluator: El evaluator es la parte de un intérprete o entorno de ejecución que realiza la evaluación y ejecución de un programa representado internamente, como un AST. Es responsable de interpretar y ejecutar las expresiones y las instrucciones del programa de acuerdo con las reglas y semántica del lenguaje de programación.
Con este conocimiento en mente, era hora de dar inicio al proyecto. Decidí utilizar TypeScript, principalmente porque, como mencioné antes, quería que se pudiera ejecutar en el navegador. Aunque existen otras alternativas, como ejecutarlo desde el servidor, esto requeriría acceso a internet. Además, si bien WebAssembly sería otra opción, no cuento con la misma experiencia y conocimientos en lenguajes como C o Rust, como los que poseo con JavaScript y TypeScript.
Así que aquí estamos, al inicio de este emocionante viaje. En los siguientes posts, compartiré más detalles sobre los avances y desafíos que se presenten en la creación de este lenguaje de programación.
Conclusión
La creación de un lenguaje de programación puede parecer una tarea desalentadora, pero con la determinación correcta y una comprensión sólida de los conceptos básicos, es un proyecto factible y gratificante. Mi objetivo con este lenguaje de programación es facilitar el aprendizaje de la programación y hacerlo accesible a una audiencia más amplia, particularmente a aquellos cuyo idioma nativo es el español. Espero que, al compartir mi experiencia y los detalles técnicos detrás de este proyecto, pueda inspirar a otros a embarcarse en sus propios proyectos de creación de lenguajes de programación. ¡Nos vemos en la próxima entrada!