A una década de programar…

Justamente leyendo la página de Retromags comentada en el post anterior, me doy cuenta de un post  en el que preguntan… qué estaba haciendo en mayo de 1999??

Y justamente se me vino a la mente que en ese año fue que tuve mi primer ordenador, un vejestorio el cual venía aun con windows 3.11. Recuerdo que luego no pasaron ni dos meses para que le instalara Windows 95, que, aunque ya habia salido Windows 98, la máquina no lo iba a soportar con apenas 12 MB de ram.  El caso es que tambien así como aprendi a usar Windows 95, como todo nuevo usuario, aprendí a arruinarlo, y a instalarlo de nuevo N veces hasta memorizar el bendito fondo monocromo azul y negro de teclado que tenia la pantalla de instalación.

Asi era mi primer maquina, un vejestorio de primera.

Asi era mi primer maquina, un vejestorio de primera.

Fue así como, al instalar dicho S.O.  me di cuenta que traia un “navegador” (el cual en ese tiempo ni sabia que era, ni para que servia), pero recordé que tenía unas revistas viejas de Club Nintendo en donde estaba publicado unos cursos de HTML..  Y en mi afán de investigar y aprender, comenzé a hacer un HTML básico a puro notepad, la verdad no tenia ni idea para que servia pues mis conocimientos eran casi nulos. sin embargo ahi estaba terminado, una linda pagina Web 1.0 extremadamente estática, con exceso de tags <blink></blink> y marquesinas para que no se viera así. Eso fue como en abril de 1999…  teniendo siempre como inspiración los videojuegos.

A la vez también tuve mi primer experiencia con la Web, en un café internet del cáduco centro comercial Tikal Futura, El pinche café internet cobraba nada mas que Q25 la media hora de navegación, un total fraude.  Sin embargo ahi estaba yo feliz, no solo navegando por la web 1.0, sino tambien a cada efecto bonito que veía en alguna página, investigaba como carajo los hacian (como los onMouseOver que eran lo más interactivo de la época) Ahi fue donde descubrí JavaScript, mi primer lenguaje de programación

Dado que el acceso a internet era precario, en un dia lluvioso de Mayo de 1999, decidí encargarle a mi hermano que tenía acceso más facil a la web, que me imprimiese unos manuales de Javascript, con los cuales, de manera autodidacta, me puse a aprenderlos y a hacer mi primer “Hola Mundo!” al mejor estilo web 1.0(Ahh cuan dificil me fue agarrarle la onda a los ciclos for() en ese entonces).  Recuerdo la satisfacción de ver el primer algoritmo funcionar… era un éxtasis impresionante cuando todo corría como debía, era una sensasión endiosante, como sentirse creador. Pero lueg que habia dejado todo bonito, publique mi primer web en los servers de Angelfire llamado de The Underground Cave… el cual descontinuaria por lo cansado que era desarrollar a mano el contenido…

Y así fue consecutivamente con lenguajes como Visual Basic (1999,por lo fácil, y por que MS Office ya incluia el IDE  y el interprete, y luego haciendo menus de autorun para cada disco que quemaba), Pascal (2000,por curiosidad, y desde el principio odie ese lenguaje), C (2000,por que habia leído que los videojuegos se hacian en este lenguaje, compilando bajo djgpp), los que aprendi antes de entrar a bachillerato, sin saber que me iban a dar ventaja del resto, y tener mas tiempo para descansar.

Tambien con lenguajes como C++ (2001, que pense que iba a ser facil despues de saber un poco de C, pero sin contar que era un cambio total de paradigma), ActionScript y PHP (2002, Por la necesidad de aprender flash y server side scripting, por un desarrollo freelance que consegui). y así sucesivamente… hasta llegar al mogollón de lenguajes que se ve uno obligado a aprender de manera autodidacta  ya dentro de la Universidad..

Y asi, frente al ordenador, irónicamente escribiendo sobre una página HTML generada por JavaScript usando AJAX (el editor de texto de wordpress),  celebro mi décimo aniversario de hacer mi primer algoritmo, sin saber siquiera que era un algoritmo; haciendo una pagina web simple, sin haber tenido contacto siquiera con internet;  y sin saber además de que la programación además de convertirse en mi carrera profesional, se  iba a convertir en mi estilo de vida… Y todo por simple curiosidad (o como diriamos al buen chapín, por shute).

Anuncios

Mi historia digital pt III: Emulando lo básico

Luego, en 1999 tuve mi primer ordenador, un vejestorio que tenía instalado Windows 95, y que, gracias a la misma revista previamente mencionada y otra que se llamaba CompuData, logré aprender lo que se convertiría en mi primer lenguaje formal y plataforma de desarrollo: HTML + JavaScript sobre Notepad y debugeado sobre IE 3.0, con esto logré aprender a hacer páginas HTML dinámicas a nivel cliente desde 0 literalmente, amarrándome implícitamente a tomar la informática como una carrera, pues me comentaban que aprender un lenguaje de programación era algo difícil, y que sin embargo yo lo había aprendido con facilidad en muy poco tiempo y con muy pocas referencias, debido a que el internet era bastante caro en ese entonces, al menos para mí.

zsnesLuego, en el 2000 seguí leyendo y practicando tecnología, aprendiendo otros lenguajes como Visual Basic y Pascal, Sin embargo mi pasión por la creación de videojuegos había terminado, ya que inspirado en emuladores como ZSnes, UltraHLE, etc, tomé otro objetivo en mi vida, aprender a hacer emuladores de consolas, ésto fortalecía cada vez más mis deseos de estudiar una carrera relacionada con la computación digital, pues los emuladores eran y son una maravilla, y entonces supe que existía una carrera que podrá satisfacer mis ansias de programar, además de que era muy lucrativa si se tiene la vocacion: Ingeniería en Sistemas en la universidad, pero aún estaba muy joven y todavía no habia terminado la secundaria y que para poder estudiar ésto debía seguir en una disciplina corta a nivel medio y relacionada con la informática: Bachillerato en computación.

Continuara…

Modularización, un problema pendiente…

Es lamentable que muchos estudiantes de la carrera de Sistemas no apliquen los conceptos más importantes de modularización, sea cual sea el lenguaje… Es algo inaceptable que un proyecto largo, como los que suelen dejar en los cursos de Sistemas de la USAC, venga si mucho un par de archivos fuente.

Recuerdo en mis tiempos, cuando llevé progra 1/progra 2, y se programaba en C existían proyectos con una modularización que daba pena, ya que ni modularizaban a nivel algoritmico ( o sea, todo lo hacian en el void main() olvidando los principios fundamentales de la programación descendente), mucho menos utilizaban diferentes archivos para la división semántica del proyecto, y en algunos caso llegaban a utilizar hasta sentencias goto!!(incluso todavía hay gente que lo utilizan en java… que pecado a la abstracción).

Por ello, es importante una buena modularización, tanto para el entendimiento del propio código, como del código ajeno (ojo Willy), además de que ayuda
evitar código redundante.

Cada lenguaje y compilador cuenta con sus propias herramientas y técnicas, además de “barreras naturales” para una mayor modularización, listaré algunos ejemplos básicos:

  • HTML/XHTML del lado cliente: Dividir el contenido, presentación e interacción en diferentes archivos .htm/.xhtml, .css,(Hoja de estilos) y .js (javascript). Esto es muy importante mas si se van a utilizar RSS Feeds.
  • Java: Utilizando un public class por cada .java, y aplicando el concepto de packages, ademas de utilizar generics cuando sea posible para evitar redundancia.
  • C#: Aplicando un public class por cada .cs, tratar de enfocar todo el motor en las librerías, y utilizar namespaces, generics, y reflexion cuando sea posible.
  • C: Contener la definición en un .h, y la implementación en un .c, tratando de colocar las estructuras de datos y declaraciones en el .h, y colocando sólo los algoritmos y funciones para estas estructuras de datos en su respectivo .c.
  • C++: Aplican los mismos principios que en C, ademas de hacer uso de namespaces para evitar colisiones, y templates para evitar redundancia.

Bueno, estos son los principales, en los que regularmente se suele hacer un espagueti de código (en especial C). Tomen el consejo… modularizen y sigan la regla KISS (Keep it simple, stupid!!)