Lors d'une présentation à l'O'Reilly Open Source Convention 2010, Tim Bray, le co-inventeur du XML, a fortement plaidé pour la programmation concurrente et fonctionnelle.
Au lieu d'utiliser des threads, la programmation fonctionnelle présenterait, d'après lui, une meilleure approche pour les développeurs qui doivent réaliser des programmes pour les processeurs multi-coeurs
La programmation pour les CPU multi-coeurs amène en effet son lot de problèmes, au premier rang desquels la simultanéité. Ces nouveaux problèmes (dont les goulets d'étranglement), seraient des « problèmes très difficiles à appréhender ou à comprendre », a-t-il souligné.
La programmation fonctionnelle, paradigme des langages comme Erlang et Clojure, permettrait de mieux les solutionner, et donc de mieux gérer cette simultanéité.
La programmation fonctionnelle repose sur le principe que les données ne sont pas partagées. Conséquence, les développeurs n'ont pas à se soucier de savoir si elles changeront, ce qui « permet de désigner les données au lieu de les envoyer », souligne Bray.
Erlang (conçu pour la programmation massive des Switch téléphoniques avec des centaines voire des milliers de processeurs) est par exemple un langage qui n'a ni classes, ni objets, ni variables. Sa gestion des fichiers est « misérable ». Mais il resterait particulièrement approprié et puissant pour gérer le multi-coeur.
Idem pour Clojure, « un langage de très, très hautes performance » pour Bray. Clojure est un Lisp qui fonctionne sur la machine virtuelle Java et qui compile en code Java classique. Ses performances en terme de vitesse sont remarquables.
La thèse de la démonstration de Bray est de dire que gérer la simultanéité avec le threading n'est pas une mauvaise idée en soi. Mais cette programmation avec les threads (qui offre de multiples accès à partager, des données mutables, etc) est mal, voire pas du tout comprise.
Pire, elle « ne sera jamais comprise par les développeurs d'applications », provoque-t-il.
Faudrait-il donc tout revoir à zéro pour accompagner l'évolution du hardware ?
C'est un peu ce que pense Bill Dally, un des ingénieurs les plus importants de Nvidia, mais dans un registre différent lorsqu'il écrit dans Forbes « après 40 ans de programmation linéaire [il faudrait] une rupture avec les pratiques de longue date ».
Et de regretter le manque de formation des développeurs dans la programmation parallèle et les technologies propres aux multi-coeurs.
Deux visions pour un même constat : le multi-coeurs n'a pas fini d'être un défi pour les développeurs.
Source : Site de l'O'Reilly Open Source Convention 2010
Lire aussi :
Quel langage pour la JVM est pour vous promis à un bel avenir ?
Qu'est-ce qu'un langage fonctionnel
Les rubriques (actu, forums, tutos) de Développez :
Hardware
Langages
Et vous ?
Pratiquez-vous de la programmation concurrente ou fonctionnelle ?
Dans l'ère du multicoeurs, pensez-vous comme Bray que les paradigmes de programmation fonctionnelle et concurrente soit plus adaptés ?
En collaboration avec Gordon Fowler
La programmation concurrente mieux adaptée aux CPU multi-coeurs ?
C'est ce que pense l'inventeur du XML
La programmation concurrente mieux adaptée aux CPU multi-coeurs ?
C'est ce que pense l'inventeur du XML
Le , par Idelways
Une erreur dans cette actualité ? Signalez-nous-la !