gradyboochSostuve una breve conversación con Grady Booch, un gran gurú del software (http://es.wikipedia.org/wiki/Grady_Booch) que trabaja como una especie de director conceptual de la marca Rational de IBM, y quise llevar la conversación hacia terrenos donde me manejo bien, mientras que los demás asistentes se centraban en cosas muy puntuales.

Me metí en su área y le plantee que pensaba que ocurriría con la computación actual que, bajo mi punto de vista, se está dividiendo en dos grandes vertientes: computación de alto rendimiento y computación transaccional, ejecutada en paralelo. Un ejemplo del primer tipo son las grandes computadoras, como Blue Gene, que requieren que los programas sean hechos especialmente para ellas y tomando en cuenta una paralelización muy especial. Mientras que la transaccional, lo que hace es manejar varios núcleos de computo, y asignar programas a cada uno. El caso más notable de este último tipo son las famosas nubes de cómputo.

Grady me miró un segundo, dijo algún cumplimento sobre la pregunta y rápidamente me dijo: “No son dos, son tres. Hay que agregar la computación en sistemas embebidos.”

La verdad es que hasta el momento nunca considere la computación en sistemas embebidos –vamos, la computación que se genera en chips que serán usados en carros, teléfonos u otros dispositivos—fuera tan distinta de las demás, por que se parece mucho a la computación que he visto toda mi vida. Es como programar un procesador z80, o un 8086, con un juego de instrucciones diferente. Pero basta con detenerse un momento y darse cuenta de que ya esa no es una verdadera opción de programación en las PC. O al menos está por dejarlo de ser. Aunque estoy seguro de que en el mundo hay más PC equipadas con procesadores de un solo núcleo, lo cierto es que en breve no será así. Sólo algunos Netbook serán vendidos con estos procesadores, y el mundo de los procesadores mono-núcleo quedará restringido en breve a los dispositivos ultra-móviles.

Por supuesto que la programación de sistemas embebidos tiene muchas diferencias con la programación tradicional que realizamos por mucho tiempo. Pero también es cierto que la programación para sistemas multi-núcleos pensados en las transacciones están evolucionando. Por ejemplo un servidor equipado con procesadores Intel Xeon 5500 –el famoso Nehalem—tiene 4 núcleos y 8 líneas de ejecución paralelas, y es tiempo que los sistemas empiecen a explotar estas ventajas. Si el mismo equipo incluye dos o cuatro procesadores, o 24, empieza a surgir la necesidad por sistemas operativos que aprovechen mejor esta infraestructura, y quizás el usar algunos principios de la computación de alto desempeño pueda ayudar.

Así que Brady, con tu permiso, reformulo la pregunta: ¿cuál será el futuro de la computación en estas tendencias: de un núcleo, de varios núcleos usados transaccionalmente o de varios usados de manera altamente paralelizada?

Y viene a mi mente la frase de Alan Key –pionero de la computación digital– que tanto le gusta a Brady: ¡la mejor manera de predecir el futuro es inventándolo!

Quién me iba a decir que un día por fin estaría Grady Booch hablandodeti.