En mi circulo social, no conozco a mucha gente apasionada por la programación. Algunos si, claro. Pero no me atrevería a decir que programar ordenadores es un entretenimiento popular.
Yo, sin embargo lo encuentro apasionante. No tendría que ser difícil explicar porqué algo te resulta apasionante, pero por más que he pensado en ello, no encuentro una forma coherente y estructurada de enlazar frases lógicas que expliquen esa pasión. Quizás por eso, porque es una pasión y las cosas que te apasionan se escapan de la lógica.
Creo que los principales motivos que me sedujeron en un principio de la informática eran debidos más a mis defectos que a mis cualidades.
Se podría decir, y mis maestros lo decían mucho que yo era un muchacho algo vago. La idea de un mecanismo que hiciera el trabajo duro por mi, me resultaba atractiva de una forma natural. También era algo disperso y desordenado, creo que lo principal no es un amor al desorden, sino una cierta dificultad para ordenar. Un sistema que lo puedes ordenar una vez y siempre queda ordenado o incluso, que se ordena él solo es una maravilla. Por último soy, todavía hoy, despistado. Se me olvidan las cosas porque la cabeza bulle de otros pensamientos o le está dando vueltas a algo que en ese momento me obsesiona. Un sistema que recuerde las cosas por ti, te avise y haga las cosas en su momento y de forma ordenada. Suena casi a magia. Me parece lógico que despertase mi interés y excitase mi imaginación cuando era un niño y para mi, y para la mayoría de la gente en los 60 y los 70, los ordenadores eran tan lejanos como la ciencia ficción.
Sin embargo, cuando conseguí acercarme a ellos no me defraudaron. Allí dentro había un orden que permitía crear estructuras. Es cierto que había unas normas unos principios que respetar, una sintaxis, pero todo respondía a una lógica que a mi no me resultaba difícil entender. Se que hay personas que al leer un programa de ordenador solo ven un montón de palabras y números desconocidos y sin sentido, pero a mi, la mayor parte de las veces no me resulta difícil ver un orden y la estructura que subyace entre esas lineas, incluso aunque desconozca el lenguaje en el que está programado.
Pero es que cuando estudias un lenguaje de programación te das cuenta de que estás adquiriendo el poder de la predicción: «si hago esto de esta manera, pongo esto aquí y esto otro allá, ocurrirá esto y luego lo otro». Y cuando, después de algún fallo que otro, cada cosa está en su sitio y ocurre lo que querías que ocurriera, la satisfacción es inmensa. Tienes la sensación de haber resuelto un problema fundamental del universo, haber creado algo de la nada y ser inmensamente sabio después de haberte sentido inmensamente estúpido. Supongo que los artesanos, los artistas, los ingenieros o los arquitectos tienen sensaciones similares con sus obras una vez que las terminan.
Me ha pasado frecuentemente que he encontrado un problema tedioso y he pensado: «esto podria solucionarlo con un programa». Pero me he dado cuenta de que hacer el programa para solucionarlo llevaría más tiempo que realizar el trabajo tedioso en caso de hacerlo «a mano». Pero da igual; pocas veces puedo resistirme. Normalmente me digo que una vez hecho el programa, estará solucionado para siempre y si se me presenta otra ocasión, solo tendré que recurrir al programa ya realizado y que además quizás otros que tienen el mismo problema podrán usar mi programa para solucionarlo. La mayor parte de las veces se trata de excusas y el verdadero propósito es esquivar una tarea tediosa y sustituirlo por la apasionante ocupación de desentrañar el problema, convertirlo en un esquema, buscar un algoritmo que lo solucione y plasmarlo en una aplicación que materialice la solución. Da igual que sea ordenar una lista, cambiar unos nombres a unos archivos o escribir el código de una tabla para una página web.
La sensación de programar va acompañada de la misma gratificación que explorar algo nuevo, resolver un acertijo o jugar a un juego de estrategia, invertir o ganar dinero con los negocios. Estás aprendiendo como funciona algo y usando unas herramientas lógicas para resolverlo.
Como ejemplo, el último programa que hecho genera el código HTML de una tabla. Yo suelo escribir el HTML (el lenguaje de marcas con el que se componen las páginas web) con un editor, escribiendo las etiquetas. No me gustan los procesadores de texto que ocultan estas etiquetas o transforman el texto desde su formato a HTML. Suelen introducir mucho ‘ruido’ en el código y a mi me gustan las páginas en un HTML limpio y sencillo que permita inspeccionar el texto y su estructura, detectar fallos si los hay y sea cargado e interpretado por el navegador rápidamente. Pero por mucho que te guste algo, hay partes que siempre resultan más tediosas. Una tabla tiene muchas etiquetas: una al principio y otra al final de la tabla misma y un par así con diferentes contenidos para cada linea y cada celda. Todas ellas forman la estructura que permite que los datos se vean en el navegador como una cuadricula conteniendo datos.
En mi programa le pasas como parámetros el numero de columnas y el de lineas y genera el código para toda la tabla en unas milésimas de segundo. Da igual que tenga solo cuatro celdas o que tenga doscientas. Lo he hecho a pesar de que no codifico tantas tablas, porque estoy aprendiendo Python, el lenguaje con el que está hecho.
Python es un lenguaje tipo navaja suiza. Sirve para casi todo, porque hay mucha gente que ha programado librerias para cosas tan diversas como interpretar los meta datos de una fotografía, realizar operaciones matemáticas o entrenar redes neuronales. Lo usan científicos desarrolladores de aplicaciones, juegos y páginas web, y muchos friquis que como yo quieren automatizar tareas mas o menos tediosas. Como las navajas suizas, es interesante porque es una hertramienta que te puede ayudar a solucionar muchos problemas, y en mi caso, solucionarlo divirtiéndome.
Es muy poco probable que acabe creando una red neuronal, que la tenga que entrenar para algo y mucho menos que soluciones algun problema científico o descubra una fórmula o algoritmo de esos que luego salen en los libros. Pero os aseguro que cuando me pongo a hacer un sencillo programa de unas lineas para hacer cualquier chorrada, pase una tarde entera o unos minutos, disfruto como un niño presenciando un espectáculo fantástico, me abstraigo y me concentro hasta olvidarme de cenar o de ir a dormir y acabo muchas veces cansado pero muy satisfecho. Con ganas de contarle a todo el mundo aquella pequeña chorrada que he hecho como si fuera una gran hazaña.
Por suerte, tengo un blog.