Llevaba algún tiempo oyendo cómo los límites de frecuencia de los procesadores se estaban alcanzando, y cómo AMD e Intel tenían ya la respuesta en los multicore, pero hasta ahora no había visto un análisis de las causas y sobre todo, de las consecuencias que puede tener sobre los desarrolladores, como el de este artículo: The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software.
Básicamente, dice que los tiempos en los que se obtenía rendimiento simplemente dejando pasar el tiempo y comprando procesadores más rápidos han terminado. A partir de ahora(o en los próximos años) habrá que currarse un diseño concurrente si quieres aprovechar de verdad el hardware disponible. Hasta tal punto será importante el cambio que vaticina un impacto similar al de la generalización de la Orientación a Objetos a principios de los 90.
Ésto afecta también a las herramientas. Los lenguajes que tienen threads "en espacio de usuario"(como Ruby), o que imponen una serialización vía big-lock(como Python) tendrán que ponerse las pilas, mientras que otros como Erlang pueden aparecer con fuerza. Lo mismo pasa en los sistemas operativos con soporte "rudimentario" de SMP como NetBSD y OpenBSD...
En fin, una lectura interesante. Y de regalo un artículo sobre el procesador SPARC Niagara: 8 cores * 4 threads = 32 threads ¡en una oblea!. Eso sí no se puede podrá hacer SMP con él (aunque quién sabe si se podrá con el que será su sucesor llamado "Rock").
Actualización: El artículo sobre Niagara es éste. El que he enlazado antes habla sobre los multicore en general
humm..
(Puntos:1)( Última bitácora: Viernes, 03 Febrero de 2012, 15:18h )
Por supuesto el futuro esta en lenguajes que expongan la paralelidad al algoritmo, de forma que se trabaje con matrices, y no datos individuales, pero tambien es verdad que los mejores programas se hacen en lo que mejor conoces, y esto para mucha gente aun es cosas como C o como C++ o como Java.
Veremos... Por otra parte, esta epoca que ya dejamos atras me parece interesante, por lo que ha tenido de poner el acento en algo distinto a la optimizacion. La verdad es que la optimizacion es un objetivo bastante malo del que salen bastantes malos programas... por eso ha estado bien que durante 10 ó 20 años los esfuerzos no se hayan centrado tanto en temitas de estos.
comentarios propios y ajenos
(Puntos:1)( https://twitter.com/yapw | Última bitácora: Viernes, 13 Mayo de 2011, 21:21h )
Por oro lado, algunos comentarios... Para empezar creo que la capacidad de las máquinas de domésticas es muy superior, en general, al uso que se le pretende dar. Que hay un montón de sistemas y aplicaciones en los que este cambio, en principio no debería notarse... pero ya veremos. Por otro lado, en los campos en los que el rendimiento ya va ajustado ahora tampoco se utilizan lenguajes con rendimiento no óptimo... Por lo que a corto plazo no sería muy alarmista.
A medio plazo... seguramente si tendrá impacto. Lo que me parece a mi es que probablemente se ha perdido la oportunidad de crear un buen lenguaje que conjugase la facilidad con la potencia y sobre el cual fuese sencillo encajar la concurrencia. Es cierto que en lenguajes como erlang [barrapunto.com] vienen integrados perfectamente y muy bien implementados... pero de ahí a que se convierta en un lenguaje mayoritario me parece que tienen que pasar muchas cosas, porque es un cambio muy grande de mentalidad para el programador y eso no se hace de la noche al día...
Pero bueno, esto son solo impresiones a bote pronto, el futuro lo veremos :)
Un saludo
Aquí había una firma