Se acabó el almuerzo gratis: el giro hacia la concurrencia en el software

Fuentes: The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software

Herb Sutter describe en este artículo de fondo, publicado originalmente en Dr. Dobb's Journal en 2005 y actualizado en 2009, el cambio más importante en el desarrollo de software desde la revolución orientada a objetos: el fin de las mejoras gratuitas de rendimiento y el giro forzoso hacia la concurrencia. Durante décadas, los fabricantes de procesadores —Intel, AMD, Sparc y PowerPC— incrementaron el rendimiento elevando la frecuencia de reloj y optimizando la ejecución secuencial, de modo que las aplicaciones funcionaban más rápido sin requerir cambios en el código. Ese «almuerzo gratis» está tocando a su fin: los principales proveedores han topado con límites físicos y de consumo, y en lugar de seguir subiendo los gigahercios han adoptado de forma masiva el hyperthreading y, sobre todo, los procesadores multinúcleo, disponibles ya en PowerPC y Sparc IV y anunciados por Intel y AMD para 2005. Sutter sostiene que este cambio de rumbo en el hardware obliga a redefinir cómo se escribe el software: en lugar de depender de CPUs cada vez más rápidas, los desarrolladores deben diseñar aplicaciones capaces de aprovechar varios núcleos simultáneos. El artículo desgrana las tres palancas que han sostenido el rendimiento —mayor frecuencia, optimización de la ejecución y memorias caché— y advierte de que las dos primeras ya están agotadas. Además, explica por qué la presión por extraer más rendimiento ha empujado a los diseñadores de chips a realizar reordenaciones de lecturas y escrituras que pueden alterar el significado de los programas, incrementando la carga sobre los programadores. Como telón de fondo, el texto recurre a la observación popularizada como «Andy giveth, and Bill taketh away»: por mucha potencia que ofrezca el hardware, el software siempre encuentra nuevas formas de consumirla. La consecuencia práctica es clara: el crecimiento del rendimiento ya no llegará en la misma dirección que seguían las aplicaciones tradicionales, y quienes no adapten su código a la concurrencia quedarán estancados.