Autobiografiándome - Programación
No recuerdo bien a qué edad comencé a programar. Fue entre los 10 y 11 años. Mi hermana mayor en ese momento tenía un novio que estudiaba ingeniería en sistemas y tenía una calculadora TI-92 que se programaba en un dialecto derivado del BASIC.
En las vacaciones de fin de año le presté el manual de su calculadora y siempre que podía le prestaba la calculadora para hacer programas bobos. No recuerdo bien qué cosas programé en ese entonces. Recuerdo que jugaba con las instrucciones para dibujar figuras geométricas, que hacía cosas básicas con ifs. Mi mente inexperta iba encontrándole sentido a ese mundo poco a poco. En definitiva no era un niño genio que hizo un programa complejo y funcional desde sus inicios. Fui poco a poco, dando pasos muy pequeños y disfrutando lo aprendido. Un día a mi cuñado le abrieron la puerta del carro y le robaron su TI-92. Paralelo a esto, mi cuñado me prestó un libro de C/C++ de la universidad. Un libro gigantesco que me leí todo en unos 5 meses. También me consiguió el TurboC, que corría en el DOS y tenía un editor de texto con fondo azul y letras de color amarillo (Años después probé el Borland C y no le encontré el mismo gusto). Programar en C era un reto mucho mayor. Los apuntadores fueron especialmente difíciles de asimilar. Para mis 14 años, ya había escrito programas en C bastante básicos; cosas como un paint mediocre, un juego de memoria, un moon lander, y un pong. En ese punto ya quería ser un desarrollador de videojuegos de grande.
Como a mis 14 años tenía que ir a un café internet para descargar cosas. Encontré un viejo curso de videojuegos hecho por unos españoles enfocado en DOS y tecnologías antiguas (ya en esa época estaba el windows XP y habían videojuegos en 3D). Como no tenía computadora con aceleración 3D, y sólo llega a windows 98, igual seguí ese curso ya que tenía tanta información nueva que no estaba en ningún libro común de programación. Un libro de un lenguaje de programación nunca va a mencionarte el montón de detalles que tenés que tomar en cuenta a la hora de programar en la vida real. Este curso era un zip con textos, código fuente y programas de pruebas. Incluso hicieron un lector para MS-DOS que les permitía presentar un texto con formatos (y no un texto absolutamente plano), ya que me imagino que no contaban con que sus lectores tendrían un navegador web o un software para leer PDFs o texto enriquecido para leer su curso. Seguramente el curso es de finales de los 80s. Afortunadamente alguien se dio la tarea de convertir ese curso a HTML y lo subió aquí http://www.nachocabanes.com/videojuegos/cpv/index.html . El curso lo hicieron Jesús Sánchez y Benjamín Palacios y desafortunadamente no lo he encontrado en línea (los archivos originales). Debería estar en el archive.org.
Mas o menos a los 16 años ya había aprendido bastante de estos españoles y me llamaba mucho la atención la arquitectura de bajo nivel de las computadoras, en especial las interrupciones y la paginación de la memoria RAM en los sistemas modernos. Me puse a investigar mucho sobre este tema y encontré un foro (hispabyte.net, que por cierto ya no existe :( ) en donde habían personas que intentaban escribir un sistema operativo desde cero. Creo que en ese año fue que aprendí un poco de ASM y usé FASM para hacer un helloworld en forma de bootloader en un diskette que cargaba después de que la BIOS cede la computadora al sistema operativo. Mi ambicioso objetivo era crear un sistema operativo desde cero. Claro que nunca lo logré. Allí conocí a Leo Ruilova, entusiasta del software libre y la cultura hacker. Tuve muchos problemas para cargar archivos con el bootloader y mis intereses se fueron moviendo a otras cosas, como la distribución de linux para música hecha por un argentino, Musix, y la adopción de sistemas GNU/Linux. Los primeros que usé fueron Knoppix y Ubuntu. También recuerdo que aprendí un poco de Visual Basic con las macros del MSWorld y eventualmente conseguí un viejo VisualStudio con el que hice pruebas. También el HTML/Javascript.
En los próximos años dediqué más tiempo a otras cosas, aprendí python y php. Este último me dio mi primer trabajo como webmaster de 1/4 de tiempo y una miseria de sueldo. Ahora hacer un videojuego como los que yo quería hacer es algo extremadamente sencillo con cualquiera de los frameworks que hay, como Godot, PyGame, Blender hasta los profesionales como Unity o Unreal, que estan al alcance de todos. También, hace unos días hice una ligera búsqueda de frameworks de videojuegos para web, y encontré bastantes. De hecho hay demasiadas opciones y cada año salen más y más frameworks para todo. Es muy interesante cómo la programación evoluciona. La complejidad va quedando enterrada entre capas de abstracciones. Ya no es necesario manejar interrupciones de hardware ni modos de video de las tarjetas gráficas con assembler, como me enseñaban en el curso de Sánchez y Palacios. Ahora un framework se ocupa de todo, que a su vez le deja el trabajo a webgl (y a engines de física), opengl o directx, que a su vez dejan la complejidad del hardware a los drivers. Esas complejidades se van superando y se toman nuevos retos. Por ejemplo, ahora se tiene los retos que presentan la realidad aumentada y virtual, o la inteligencia artificial. Y estas cosas ya tienen sus capas de abstracción que ya están permitiendo construir encima de cosas ya hechas, como Tensorflow y las SDK de las consolas de videojuegos AR.
También tomé 2 años de ingeniería en sistemas en la universidad, donde hice un videojuego en java para el primer curso de programación del que ya he hablado. Sin embargo, ya no continué por interesarme más la ciencia y cambiarme a física. Ahora me he dedicado más al análisis estadístico de datos y por eso he pasado por R y Python. Habiendo trabajado como desarrollador junior y luego senior en la industria he aprendido mucho, como java para apps de android, C#/.NET para software de backend, Python para backend y análisis de datos, o javascript para frontend.
Lo genial de la programación es que es un movimiento colectivo inmenso para automatizar el mundo y hacer capas de abstracción sobre capas de abstracción. He ido de lenguaje en lenguaje pasando por varios sistemas y aplicaciones partiendo de los mismos conceptos lógicos y primitivas con que empecé a programar aquella calculadora TI-92.
Me ha encantado leerte y ver como es que empezaste en el mundo de la programación, la verdad estas anécdotas se disfrutan mucho
¿Quieres recibir mejores recompensas en tus post de informática, tecnología o programación, ayúdanos delegando algo de SP:
1 SP, 5 SP, 10 SP
Gracias. Les delegué un poco de SP.
Muchas gracias por apoyarnos y de esa forma podemos apoyar au mejor tus futuros post y los demás post de tecnología, programación e informática que muchas veces no tienen la valoración que deberían de tener
Muy interesante tu autobiografía, es impresionante ver cómo has vivido esta evolución en los lenguajes de programación.
Gracias, @jga
Saludos @elguille. Tiempo sin saber de ti. Buen post. Me gustaría que usaras de vez en cuando nuestra etiqueta #proconocimiento.
Hola. De qué se trata esa etiqueta?
Chic article. I learned a lot of new things. I signed up and voted. I will be glad to mutual subscription))))
¡Qué interesante, mi Guille! Me lo perdí en su momento. Pero, siempre es un gusto leerte, aunque la vivencia expuesta no compagine con mi marco experiencial, me encanta leerte.