A pesar de que el
artículo es un tanto viejo, tiene una buena redacción acerca de la
tendencia que tuvo el paralelismo computacional. Y no se equivocaba
el autor al respecto. El paralelismo hoy en día es importante para
el desarrollo de infinidad de aplicaciones de software.
Los usuarios no se
percatan de ellos, pero el paralelismo está vigente en muchos de los
servicios web que utilizamos, como youtube, facebook, outlook, entre
muchos otros. Otro ejemplo de paralelismo importante es la industria
del videojuego. ¿Cómo es posible que puedas jugar Halo con tantos
bots, escuchar la música de ambientación, e incluso jugar contra
jugadores humanos? La respuesta es sencilla: paralelismo.
Como menciona el
autor, parte fundamental del paralelismo actual se debe a la
fabricación de procesadores de multinúcleo, ya que sin ellos, la
gente no tendría acceso a muchas de las aplicaciones mencionadas, y
tendría que estarse capacitando para poder utilizar los clusters,
cuyo acceso sólo lo tienen (y lo seguirán teniendo) las grandes
empresas y los gobiernos más fuertes, económicamente hablando.
Es bien cierto que
mucha gente se basa en algunas cosas para decir “yo compro esta
máquina”. Y una de ellas es el procesador que tienen. No saben qué
significa que tengan 4 núcleos a ciencia cierta, pero eso les indica
que la computadora es capaz de realizar más tareas en un periodo de
tiempo. Sin embargo, de nada sirve tener una computadora super buena,
con 16 núcleos, si las aplicaciones no soportan esta arquitectura, y
si no son diseñadas adecuadamente para ella.
Por esto, como programadores, sin importar tendencia, objetivo, preferencia en cuanto a lenguaje, ambiente de programación, entre otros; debemos siempre tener en cuenta que ya es posible realizar paralelismo, y que esto nos dará la ventaja sobre los programadores que están aferrados a seguir programando de manera secuencial para un solo núcleo. El paralelismo le dará un grado más de escalabilidad a nuestro trabajo, y con algo de suerte, nuestros clientes no nos estarán pidiendo que volvamos a desarrollar el mismo programa (que nos costó 3 años de arduo trabajo) para una computadora con mayor capacidad, simplemente porque el hardware ya no es compatible con el software.
Por esto, como programadores, sin importar tendencia, objetivo, preferencia en cuanto a lenguaje, ambiente de programación, entre otros; debemos siempre tener en cuenta que ya es posible realizar paralelismo, y que esto nos dará la ventaja sobre los programadores que están aferrados a seguir programando de manera secuencial para un solo núcleo. El paralelismo le dará un grado más de escalabilidad a nuestro trabajo, y con algo de suerte, nuestros clientes no nos estarán pidiendo que volvamos a desarrollar el mismo programa (que nos costó 3 años de arduo trabajo) para una computadora con mayor capacidad, simplemente porque el hardware ya no es compatible con el software.
Y, a decir verdad,
no es necesario que estemos casados con una tecnología de
paralelismo. Podemos seguir solteros o ser polígames, y probar con
muchas y diferentes tecnologías, como MPI para C, OpenMP, Pthreads,
Java threads, Kuda, entre muchas otras opciones, que siempre tendrán
ventajas respecto al enfoque que les demos, y que nunca está por
demás ir a la vanguardia, sin la necesidad de tirar a la basura lo
que hemos programado hace unos años.