49

Cómo crear un lenguaje de programación propio

10261Puntos

hace 4 meses

Curso de Introducción al Desarrollo de Lenguajes de Programación
Curso de Introducción al Desarrollo de Lenguajes de Programación

Curso de Introducción al Desarrollo de Lenguajes de Programación

Descubre el funcionamiento interno de los intérpretes y compiladores de software. Aprende las características de los lenguajes de programación más importantes y sus tipos. Desarrolla lenguajes de programación para dar tus primeros pasos en el mundo de computer science con tu profesor David Aroesti.

Si eres programador o ya tienes experiencia con los lenguajes de programación sabrás que existen muchísimos hoy en día, cada uno con sus fortalezas y debilidades, su sintaxis y peculiaridades.

Quizás hayas pensado en que un lenguaje sería mejor con cierta cualidad o tal vez pensaste en resolver un tipo de problema, pero las herramientas que tenías no se acoplaban lo suficiente a lo que necesitabas. Para ello una solución que encontré fue crear mi propio lenguaje de programación. Aquí te contaré cómo lo hice. 😉

lenguaje-de-programacion.png

¿Qué tomar en cuenta antes de empezar?

Paradigma

Una de las principales cualidades de un lenguaje de programación es el paradigma al que pertenece. Existen dos clasificaciones principales de ellos: imperativos y declarativos. Por ejemplo:

  • Imperativos:

- Programación procedimental

- Programación orientada a objetos o POO

  • Declarativo:

- Programación funcional

- Programación lógica

Dentro de cada uno de estos paradigmas podemos encontrar varios lenguajes, como:

  • C (imperativo, procedimental).
  • Java (imperativo, POO).
  • Haskell (declarativo, funcional).
  • Prolog (declarativo, lógico).

También existen los lenguajes multiparadigma, lenguajes en los que puedes programar en múltiples paradigmas o mezclando varios. Algunos ejemplos son:

  • Python
  • JavaScript
  • Julia

Interpretado o compilado

Para crear un nuevo lenguaje debes tomar en cuenta cómo el computador entenderá tu lenguaje. Puede hacerse con intérpretes o compiladores.

A grandes rasgos, los lenguajes compilados son aquellos que se traducen a un lenguaje máquina para que el computador pueda entenderlo desde un archivo ejecutable. En cambio, los lenguajes interpretados se leen instrucción por instrucción y se ejecutan paso a paso conforme se leen.

interpretes-compiladores.png

Sintaxis y semántica

Luego de eso también se debe pensar en su sintaxis y semántica.

  • Sintaxis: se define como las reglas que verifican si el conjunto de símbolos de un programa está bien escrito o no.
  • Semántica: es cómo el computador entiende el programa cuando lo ejecutamos. Para ello postula una máquina abstracta con las reglas de ejecución de un programa.

Si quieres saber más de la maquina abstracta te recomiendo el
Curso de Historia de la Programación: Lenguajes y Paradigmas

Deberás buscar que tu lenguaje sea fácil y claro de entender, según su propósito.

¿Y ahora cómo empiezo a crear mi lenguaje? 🤔

Una vez que pensé en los puntos anteriores fue que comencé mi propio lenguaje de programación al ver el Curso de Introducción al Desarrollo de Lenguajes de Programación y el Curso de Creación Lenguajes de Programación: Intérpretes.

Decidí que sería un lenguaje interpretado para seguir con el curso. Además que es una de las formas más simples de comenzar con un lenguaje. En un comienzo no tenia un problema claro que resolver, sino que lo veía más como un reto y ambicioso proyecto.

No te olvides de los detalles

Citando a mi profesor de lenguajes de programación:

“Hacer un lenguaje de programación es mitad diseñarlo y hacerlo bien y la otra mitad es community management”.

Mi lenguaje lo llamé SigmaF porque quería que fuese funcional, ya que yo estaba muy emocionado de haber conocido Haskell y para que sonara lo más matemático posible.

Elegí una letra griega que me gustara y quedara bien, en un nombre sucedido por la letra F por funcional. Y así es como nació el concepto de SigmaF.

Otro detalle importante es cómo los demás interactúan con tu lenguaje, es decir, cómo está construido. En mi caso yo usé Python 3.8 y TDD (Test-driven development) para su desarrollo, lo que agiliza la implementación de nuevas cualidades y permite anticiparte a los problemas o bugs que se puedan presentar.

Para comenzar a utilizar SigmaF en la terminal de tu computador ejecuta:

git clone [email protected].com:FabianVegaA/sigmaF.git

Crea un entorno virtual con Python e instala los requirements. Puedes ver la guía completa en el repositorio oficial en GitHub de SigmaF, donde también puedes contribuir al lenguaje.

sigmaf.png

Dale un propósito  🙌

En este momento el propósito de SigmaF es ser un puente entre el paradigma funcional y el paradigma imperativo, ya que la mayoría no suelen ser tan fáciles de aprender, especialmente si te has acostumbrado a programar imperativamente. Por ello quiero que este sea un lenguaje fácil de aprender para cualquier programador, y los que no lo son aún, siendo la puerta para otros lenguajes funcionales.

Ahora te toca a ti crear tu lenguaje

Espero que con todo esto te animes a crear tu propio lenguaje o a apoyar otros en desarrollo. Ya tienes varias herramientas a tu disposición, para profundizar en ellas toma el Curso de Introducción al Desarrollo de Lenguajes de Programación y cuéntame aquí en comentarios cómo será tu lenguaje. 💪

Curso de Introducción al Desarrollo de Lenguajes de Programación
Curso de Introducción al Desarrollo de Lenguajes de Programación

Curso de Introducción al Desarrollo de Lenguajes de Programación

Descubre el funcionamiento interno de los intérpretes y compiladores de software. Aprende las características de los lenguajes de programación más importantes y sus tipos. Desarrolla lenguajes de programación para dar tus primeros pasos en el mundo de computer science con tu profesor David Aroesti.
Fabián
Fabián
fabianveal

10261Puntos

hace 4 meses

Todas sus entradas
Escribe tu comentario
+ 2
Ordenar por:
4
12810Puntos

Carai! Gran proyecto, Fabián! 😄

4
5273Puntos

Excelente trabajo Fabián!

3
33027Puntos

BIen Fabian!

3
3996Puntos

Espero poder seguir tus pasos , muchas felicidades :3

0
10261Puntos
4 meses

Increíble, espero poder ver tu proyecto 😉

3
28508Puntos

Muy buen proyecto 😉!

3
1943Puntos

fantástico trabajo!!!

2

Recién estoy comenzando en este amplio rubro y la verdad, es que leer este artículo me ha instruido bastante y me ha aportado a tener más claridad de lo que he elegido aprender.
¡Buenísimo!