Mis proyectos de sistemas en la USAC parte VI: Compiladores 1…

Que ironía, se me olvidó colocar el curso que auxilio en la universidad,  Introducción a los lenguajes y Compiladores 1.  Y si lenguajes era introductorio a éste, éste a su vez, es introductorio a la yuca de Compiladores 2 como lo describí anteriormente.  Lamentablemente, como tanto el auxiliar de ese curso, como el ingeniero, no sabian ni rosca, me tocó a mi estudiar por mi cuenta, mas por mi gusto que por ganarlo. y así fue. a continuación publico los únicos 2 proyectos que se realizaron.

1. Strim.

Un proyecto que la verdad, estaba bastante fácil, se trataba de un simple “concatenador” y “repetidor” de cadenas. el cual la mayor complicación era ponerse de acuerdo con el auxiliar para saber qué era lo que querían.  Desarrollado en C usando Flex y Bison, recuerdo cómo los demás compañeros aún no usaban la característica de atributos sintetizados, haciendoles más dificil la elaboración del mismo. El codigo esta en:

svn checkout http://proyectos-kreig-usac.googlecode.com/svn/trunk/c++/COMPI1-proy1-strim/ strim

2. Godzilla.

Bueno, aquí las cosas se empezaron a complicar, me rifaba entre hacer bien éste proyecto y dejar mediocre el de estructuras que estaba haciendo paralelamente… y así fue, me enfoqué más en este proyecto, el que consistía en un mini motor de un subconjunto de PHP, además que debía renderizar el HTML generado.  Desarrollado también en C++ usando QT 3 como framework, y Flex y Bison para el analizador léxico y sintáctico respectivamente, y enfocado desde su concepción a ser compilable y ejecutable tanto en Windows como en Unix.  Recuerdo aún que la mayor complicación de éste era el desarrollo de los ciclos, el cual, con un poco de autoaprendizaje de representaciones intermedias y árboles de sintaxis abstractas,  se simplificó y optimizó bastante la implementación de dicho lenguaje.  El código esta en:

svn checkout http://proyectos-kreig-usac.googlecode.com/svn/trunk/c++/COMPI1-proy2-godzilla/ godzilla

Bueno, eso fue compiladores 1, con un primer proyecto trivial, y el segundo no trivial… bastante parecido al semestre actual (enero-junio 2009) en este sentido. Un curso en el cual conocí la Biblia de los compiladores, el magnífico Libro del Dragón, y una introducción a lo que para muchos se convertiría en su peor pesadilla.

PD. Para poder bajarlos, deben instalar el cliente subversion de consola en gnu/linux y ya instalado ejecutar el comando dado en el directorio donde se vaya a bajar. Tambien recomiendo usar el TortoiseSVN si van a bajarlos en Windows

Mis proyectos de sistemas en la USAC parte II: Progra 2…

Bueno, luego del exitoso post anterior (de donde jodidos), tambien he publicado los proyectos desarrollados en el curso de Introducción a la Programación 2… en un semestre donde se comenzaban a complicar las cosas pues habia que llevar varios cursos no triviales como Fisica 2 o Lenguajes formales.  La progra 2 de aquellos tiempos era un poco diferente a la de ahora, pues antes se daba solamente temas de persistencia en archivos, OOP,   Memoria dinámica (punteros, listas y todo eso), un poco de análisis y diseño (unico tema que persistió en la progra 2 de ahora), y conceptos básicos de redes… y lo que se programaba se hacia en C ++.

Y aunque seguían con su necedad de obligarnos a programar en el asquerosisimo borland C++, me importó un comino y empecé a hacerlo en un compilador mucho más superior y que cumple estándares… GCC, desarrollandolos dentro de algo que es más que un IDE… EMACS, y sobre un sistema operativo tambien superior, Linux. además que daba primera vez uso de un sistema básico de versionamiento, el CVS.  Y para cuando tenian que calificarmelo en windows que hacia? pues como los proyectos eran básicamente en consola, no me costo mucho portarlos a Windows usando el compilador MingW.  Bueno, a continuación un trio de proyectos inútiles cuya única finalidad era didáctica (bueno, quiza tambien tenia de finalidad trabarnos, pero al menos no lo lograron conmigo):

1. FIRST (FIfa Rating SysTem)

Continúan los nombres estúpidos, para un proyecto tambien estúpido, supuestamente era un calculador de posiciones y punteos para torneos de la FIFA,  lo más difícil era entenderle bien la ambiguedad del enunciado que la mera programación en sí.  Éste proyecto tenía que hacer uso de archivos no recuerdo para qué, pero lo que si recuerdo es que sacaba estadísticas.

svn checkout  http://proyectos-kreig-usac.googlecode.com/svn/trunk/c++/IPC2-proy1/ first

2. MOTHELL:

Este supuestamente era una administración de hoteleria o algo así, en donde se debía poner en práctica los conceptos de OOP que supuestamente habian enseñado.  Tiene estructura parecida al anterior, pues fue hecho por el mismo mortal con las mismas herramientas… ahh, e incluye su Makefile para una facil compilacion.

svn checkout http://proyectos-kreig-usac.googlecode.com/svn/trunk/c++/IPC2-proy2/src/ mothell

3.  Libra:

El último y más trabajoso proyecto (aunque la verdad estaba bastante facil) que consiste en Mantenimientos para libros de una biblioteca, administrando también préstamos y todo es en colas. En éste se tendría que utilizar ya estructuras de memoria dinámicas como pilas, listas y colas, y además, usar full OOP.  Aqui empezaba a meter mano a los TDAs, además de usar la característica de Templates de C++ para no andar reescribiendo un TDA para cada tipo de dato. Compila bajo GCC e incluye makefile tambien.

svn checkout http://proyectos-kreig-usac.googlecode.com/svn/trunk/c++/IPC2-proy3/ libra

Bueno, esto fue IPC2, un curso “comodín” en donde metían cualquier tema que les diera la gana dar.  con proyectos que quizá eran los más fáciles de la carrera media vez se dominara de antemano la OOP (algo dificil para la mayoria, dado que se aprendia en progra 1 en el paradigma top down)…

PD. Para poder bajarlos, deben instalar el cliente subversion de consola en gnu/linux y ya instalado ejecutar el comando dado en el directorio donde se vaya a bajar. Tambien recomiendo usar el TortoiseSVN si van a bajarlos en Windows

Mis proyectos de sistemas en la USAC parte I: Progra 1…

Bueno, el ocio es taller de Satan, y para aprovechar mejor mi tiempo de ocio, decidí hacer un clean a todos aquellos proyectos de programación que desarrollé en la carrera de Ingeniería en Ciencias y Sistemas de la gloriosa y tricentenaria Universidad de San Carlos de Guatemala.  Y luego de limpiar dichos  proyectos, publicarlos en Internet, aprovechando el repositorio que google ofrece por medio de su servicio google code.

Iré curso a curso publicando los que fueron los proyectos más significativos de estos, muchos de estos son medios ratas, otros no tanto, pero hay que comprender que, en la Universidad siempre nos ponían a hacer dichos proyectos contra el tiempo. Y hoy, es el turno de publicar aquellos proyectos que desarrollé durante el curso de Introducción a la programación 1… si, progra 1 de la vieja escuela… cuando éramos obligados a usar el nefasto Borland C++ 3.1 (y me quejo por el compilador que era una basura, no por el lenguaje).  pero qué otra, muchas veces los auxiliares ineptos no dan otra opción.   Los proyectos son los siguientes:

1.  Paintkiller.

Con Éste proyecto supe qué era programar un proyecto de la Universidad, Nombre inspirado en la canción Painkiller para denominar a un programa básico de dibujo al estilo paint de windows, con una interfaz gráfica tan antiestética y antiusable, pero que al final es funcional, que era lo que importaba.  Está desarrollado en Borland Turbo C++ 3.1, y pues, de estilo, casi nada, cero patrones, y puro hardcode,  aparte que mezcla C y C++ por la poca diferenciacion que le hacia este compilador a ambos lenguajes.  La interfaz grafica, pues es puro modo gráfico que proporcinaba el borland para MS DOS por lo que no creo que exista alguna SO actual que lo pueda correr.  Por ser el primer proyecto, pues lo único que puedo comentar es que solo era aprender lo básico en un lenguaje de programación, de una manera no tan trivial, pero bueno, fue una buena experiencia hacer este proyecto, pues puse en práctica mis conocimientos de OOP al hacer mi “libreria” de widgets, teoría la cual ántes, enseñaban (digamos) hasta Progra 2.

ahi si quieren curiosear pues les dejo el comando SVN para poder bajarlo.

$ svn checkout http://proyectos-kreig-usac.googlecode.com/svn/trunk/c++/ipc1-proy1-PAINTKILLER/

2. Hammerfile

Bueno, otro proyecto más en BorlandC++, y otro más con nombre inspirado en algo de heavy metal, esta vez en Hammerfall (nombres mas basuras los que les pongo, pero de alguna manera los tenía que identificar),  Este proyecto, pues en realidad no me recuerdo que hacia, y como no lo puedo correr no puedo ver actualmente, lo único que me recuerdo es que me llevó la chingada para parsear los benditos archivos de entrada… si tan solo hubiera sabido que flex/bison eran para eso en ese entonces.  Igual que el anterior, es C y C++ mezclado, usando la misma librería de widgets que me fume en el primero, y obviamente, para MS DOS, aqui va el url:

$ svn checkout http://proyectos-kreig-usac.googlecode.com/svn/trunk/c++/ipc1-proy2-HAMMERFILE/ hammerfile

Bueno, la verdad no creo que a estas alturas le puedan servir a alguien, dado que ya no se programa ni en C++ ni mucho menos en Borland en el curso de programación 1 de la USAC, pero bueno, lo tenía que hacer, quiza para que los patojos de la nueva generación se dén cuenta que la época en la que viven es más sencilla… cuando ántes nos llevaba sor judas cuando intentabamos solamente mostrar el mouse en el modo grafico de MS DOS.

Iré publicando más proyectos, avanzando de curso en curso, durante el transcurso del tiempo, asi que, pilas.

PD. Para poder bajarlos, deben instalar el cliente subversion de consola en gnu/linux y ya instalado ejecutar el comando dado en el directorio donde se vaya a bajar. Tambien recomiendo usar el TortoiseSVN si van a bajarlos en Windows