sábado, 2 de abril de 2011

Aprendiendo a hacer un lenguaje de programación

Bueno, no se si serán los 28 grados de abril, la salida de la astenia primaveral o las 5 cervezas que llevo por cuerpo, pero se me ha antojado desarrollar mi propio lenguaje de programación, también está en mi lista de cosas que debo hacer antes de morirme así que no hay nada que pueda fallar.
Desarrollar un lenguaje de programación es una ardua tarea y como sólo quiero aprender, voy a desarrollar lo mínimo que se despacha y que sea fácil de aprender.

¿Qué es lo mínimo que se despacha?

Cuando digo lo mínimo que se despacha hablo de hacerlo lo más simple y fácil de implementar, no voy a hacer un lenguaje como java, voy a hacer un lenguaje bajo el paradigma imperativo sin encapsulación, sin interfaces, ni clases, sin excepciones, no va a tener una parte declarativa y otra de implementación, tampoco me voy a pelear con ensamblador, será completamente dinámico y tendrá recolector de basura.

Voy a desarrollar un lenguaje que compile a bytecode de java, creando un parser con java, un pequeño ide  y un pequeño procesador de lenguaje que genera código java que después se compila a bytecode.

¿Se le puede llamar a esto lenguaje de programación?

Sí, si no que se lo digan a java o pyton, a parte que no tengo tiempo, ni recursos, ni ganas de pelearme con ensamblador, c y crear un backend para gcc.

El primer objetivo es aprender y el segundo es enseñar, tanto a desarrollar un lenguaje de programación, como a enseñar a programar bajo el paradigma imperativo. Con lo que debo desarrollar los suficientes elemmentos como para que el usuario comprenda la casuística de la programación y partir de él aprender un lenguaje de más alto nivel en el que pueda aprender los conceptos actuales de la ingeniería del software, hablando siempre de implementacion, como es el uso de patrones en la programación orientada a objetos.

Sí ingeniería, no os asustéis puesto que la ingeniería informática es muy reciente, los conceptos que actualmente se manejan no tienen ni 10 años algunos incluso menos y para alguien que sepa programar les son muy fáciles de aprender, no hay que pelearse con tensores ni ninguna bizarrada matemática de cálculo o álgebra, sólo hay que aprender unos patrones, conocer unos conceptos de desarrollo, gestionar una documentación con la que te puedes poner tanto deacuerdo con tu cliente como con tu equipo de desarrollo y una serie de metodologías de gestión de proyectos, algo muy fácil de aprender que genera mucho éxito y por lo tanto pasta, ya me explayaré otro día sobre ésta cuestión que en mi mundillo genera mucha controversia, símplemente pido que no hay que verlo como algo complicado cuando hablo de ingeniería informática.

¿Que voy a implemetar?

 -Tipos de datos
 -Estructuras de control repetitivas
 -Estructuras de control selectivas
 -Funciones
 -Herencia

En la próxima publicación empezaré a definir cada apartado.

No hay comentarios:

Publicar un comentario en la entrada