jueves, 3 de abril de 2014

El Arte de Programar, ¿se está perdiendo?

LA PREHISTORIA

Quizás tuviera 15 años cuando descubrí los ordenadores. No recuerdo la fecha exacta pero sí casi todos los detalles de mi proceso de iniciación. Fascinado por la posibilidad de controlar la televisión, decidí comprar una de esas publicaciones por fascículos, "Biblioteca de la Informática" creo recordar. Y me puse a programar.

Lo más curioso es que aún no tenía ordenador, así que programaba con lápiz y papel mientras atosigaba a mi madre para que pusiera a mi disposición una herramienta más adecuada. No tardó en librarse de mis gimoteos gracias a un banco que regalaba un ordenador al domiciliar la nómina. Como no podía ser de otra manera, fue un  ZX Spectrum de 16Kb. Aún lo tengo, creo que pediré que me entierren con él; no conozco a nadie que no guarde un recuerdo pasional por aquella pequeña caja negra y su llamativo arcoiris alegrando una de las esquinas (os dejo un vídeo con 50 de los mejores juegos para esta máquina)..

Cogí mis papeles, dejé de comprar los fascículos, me suscribí a MicroHobby (una revista mítica, os dejo la portada del primer número) y me puse a la faena para crear mi primer juego. Era un coche que recorría una carretera (dos simples líneas verticales) esquivando piedras y charcos. Cuando llegaba arriba de la pantalla el juego terminaba con una serie de pitidos. Poco más tarde descubrí que, al llegar al final, podía escribir Y=0 y el coche volvía al principio haciendo que el juego continuara hasta perder todas las vidas. También me di cuenta que podía hacer que las líneas fuera curvándose gradualmente para ofrecer algo más de acción al jugador. Estos dos descubrimientos cambiaron mi vida.

A estas alturas algunos estaréis pensando "ya tenemos al abuelete contando sus batallas de la prehistoria de la informática". Tenéis razón, no he podido resistirme a hablar de mi Spectrum. Ya lo dejo.



El hecho es que descubrí que alterando sólo un par de líneas del código podía mejorar el juego, y me enamoré de la algoritmia. Dediqué entonces todos mis esfuerzos a realizar pequeños programas (con 16Kb no había otra) que utilizasen potentes algoritmos (eso creía por aquél entonces) para realizar las más diversas tareas.

La programación se convirtió para mí en un reto intelectual, era como pasarse el día haciendo Sudokus. Había que luchar por optimizar la memoria (si un dato ocupaba 2 bits, no ibas a malgastar todo un byte para almacenarlo), por reducir el código al mínimo (recuerdo unos fantásticos campeonatos de programas de menos de 1Kb) y optimizar el código hasta lo imposible para ganar algo de velocidad

Y LLEGARON LOS PCS

Y entonces llegaron los PCs (gracias a IBM y al MS-DOS de Bill Gates). Me compré un Amstrad con 512Kb de memoria, una cifra desmesurada. Sustituí la cinta y el boli para rebobinarla por diskettes de cinco pulgadas y un cuarto. Disponía de una máquina más potente pero aún había que currárselo para conseguir algo decente.

Pero no tardaron en aparecer en escena los discos duros y todo cambió. La mayor capacidad de almacenamiento y velocidad de acceso permitió crear bases de datos capaces de almacenar e indexar cantidades ingentes de información (creo que mi primer disco duro era de 20 Megas). Dejó de ser necesario preocuparse por el tamaño de los datos o por diseñar algoritmos para localizarlos u ordenarlos. Los echabas a la Base de Datos y ella se ocupaba de todo.

Se perdió la necesidad de optimizar el código o de minimizar el uso de la memoria y nos dedicamos a crear programas mucho más tristes. Comenzó entonces a hablarse de Cuadernos de Carga, de herramientas Case y Modelos Relaciones.

Ya me encontraba en la Universidad cuando decidí huir de estos intentos de sistemtización de la programación. Afortunadamente aún quedaba mucho por hacer. Si necesitabas algo diferente aún tenías que hacerlo tú mismo. Me dediqué entonces a hacer programas de tratamiento de imágenes, experimentar con fractales e hice algún pinito con sistemas expertos y redes neuronales. Aún era posible jugar a los Sudokus.

Y LLEGÓ EL COPY PASTE

Con la llegada de Internet todo fue más fácil. Ya no había que rebanarse el coco para diseñar un nuevo algoritmo; alguien lo había hecho antes por ti. Dejó de ser necesario leer libros de informática, una búsqueda rápida en Altavista (el precursor de Google), leías las tres primeras líneas de las tres primeras entradas y le dabas al Copy-Paste para incorporar el precioso código a tu programa. No sabías ni qué estabas haciendo pero el hecho es que funcionaba.

A partir de aquí asistimos a un proceso acelerado. Mejores Bases de Datos sin límites de almacenamiento y con optimizadores cada vez más poderosos e inteligentes. Ya ni siquiera necesitabas construir correctamente una sentencia SQL; la escribías de cualquier manera y el optimizador se ocupaba de corregirla. Frameworks de desarrollo visuales que te permitían programar con el ratón, utilizando paletas de objetos, configurando propiedades y escribiendo dos o tres líneas en el manejador de un evento. Servicios Web que hacían por ti el trabajo más duro; el código completo de un programa dejó de estar en tu ordenador. Fantásticas librerías, millones de líneas de código a tu disposición, para cubrir todas las funcionalidades imaginables. Motores 3D para crear fantásticos juegos en un periquete.

Y todo fue más fácil, pero también más aburrido.

EL ARTE DE PROGRAMAR

Sé que llevo llorando un buen rato, embriagado por la nostalgia. En realidad he sacado partido de todas las nuevas tecnologías que han ido apareciendo en el mundo de la programación. He sido un fanático de Visual Basic y Visual C++. He diseñado gestores de contenidos que hacían uso extensivo de servicios Web y aún hago algún jueguecillo utilizando aplicaciones como Stencyl (un framework de desarrollo de juegos multplataforma, sencillo de utilizar pero con un simulador de gravedad fantástico). Hasta tengo un robot bailando por toda la casa hecho con Lego MindStorms.

No juego mucho, pero hace no demasiado me vicié con God of War (tiene su propia entrada en WikiPedia) y conseguí terminarlo para descubrir los títulos de crédito. No sé, fueron diez minutos o así´. Como si de una película se tratara, aparecían los directores y productores, los guionistas, los diseñadores, los coordinadores de efectos visuales, los encargados de los escenarios, las voces y los efectos de sonido, el responsable de la captura de movimiento y otro largo elenco de personalidades. Y allí, entre la inmensidad, figura el nombre de los programadores, apenas cinco o seis. Probablemente no necesitaban saber demasiado, simplemente conocer un motor 3D, diseñado tres años atrás, para poder configurar las colisiones, los cambios de escenario y los movimientos del protagonista.

Lo que me preocupa es que los programadores cada vez tienen que pensar menos. Evidentemente hay unos cuantos privilegiados encargados de programar las herramientas que utilizamos el resto, pero la mayoría nos limitamos a copiar y pegar o a provechar las funcionalidades que ofrecen los nuevos entornos de desarrollo, más parecidos al Powerpoint que al entrañable Turbo Pascal.

En las entrevistas, cada vez me encuentro con más frecuencia programadores que se limitan a copiar código, algunos de ellos son incapaces de programar el más simple de los algoritmos o de entender para qué sirve una función o una clase de objetos.

No son culpables o menos inteligentes de lo que fuimos los cavernicolas de la programación. Pero ya no necesitan dedicar tanto esfuerzo a aprender, a conocer en profundidad las herramientas que utilizan, a buscar soluciones óptimas a los problemas. Para ellos, programar ya no es un arte, tampoco un juego o un reto mental.

No es menos cierto que los logros son ahora más importante. Quizás la informática se esté transformando poco a poco para convertirse en una verdadera ingeniería. Se perderá algo de glamour pero seremos mejor reconocidos.

Para terminar, os dejo un encantador vídeo que muestra las reacciones de algunos niños ante un ordenador de hace 20 años:


[Como siempre, comentarios, críticas, correcciones y propuestas son más que bienvenidos]

Artículos relacionados:

2 comentarios:

  1. Genial este articulo, gracias, lo expresas muy bien!!

    ResponderEliminar
    Respuestas
    1. Gracias a ti. Ya casi ni me acordaba de él (lo escribí cuando empezaba con el blog). Qué tiempos!

      Eliminar