Magazine

Saine concurrence

Publié le 11 mars 2008 par Carlseleborg
J'avoue humblement mon manque d'expérience en matière de programmation concurrente.
Bien sûr, je connais les notions de thread, de sémaphore, de mutex, etc. Je les ai utilisées plus d'une fois. J'ai même travaillé sur des problèmes de communications inter-threads et inter-processus assez épineux lors de mon passage chez eNetshare. En fait, je pense que j'en sais autant (ou plutôt aussi peu) sur la programmation concurrente que la plupart des développeurs non experts en la matière.
Mais cela ne m'empêche pas de me sentir peu à l'aise lorsqu'il s'agit de concevoir une architecture complexe comme celle sur laquelle je travaille à mes heures perdues (je n'en dis pas plus aujourd'hui, car ce projet mérite plusieurs articles à lui seul), qui implique l'exécution en temps-réel d'un langage interprété et un d'un graphe de traitements audio.
Herb Sutter, un grand personnage dans la communauté C++ et certainement quelqu'un dont le discours mérite d'être écouté, expliquait déjà en mars 2005 pourquoi la programmation concurrente est à prendre au sérieux: le déjeuner à l'œil, c'est fini. Le temps joyeux où la vitesse d'exécution des programmes bénéficiait gratuitement de l'accélération des cadences des processeurs tend vers sa fin, et les gains de performance devront à l'avenir être recherchés ailleurs, et notamment dans la concurrence. Mieux encore que les cartes graphiques ultra-puissantes d'aujourd'hui, la Playstation 3 en est une belle illustration: elle tire ses performances exceptionnelles de son architecture Cell, avec 7 processeurs spécialisés travaillant en parallèle pour les divers types de calculs nécessaires.
Toutes ces belles raisons m'ont poussé à rechercher de la documentation sur la programmation concurrente avancée sur Internet ou sous forme de livre. Ce qu'on y trouve est étonnamment pauvre. Les introductions à la programmation concurrente sont aussi nombreuses que les musiciens dans le métro parisien, et de qualité analogue. Une fois qu'on a compris le sémaphore, on trouve quelques articles intéressants sur la programmation lock-free, mais le traitement de l'architecture concurrente laisse singulièrement à désirer.
Si la programmation multithread mérite le respect, elle ne doit pas provoquer la crainte.

Cependant, je ne désespère pas. Je viens de tomber sur l'ouvrage de mon compatriote suédois le professeur Bo I. Sandén, Multithreading, un livre abordant la conception d'applications concurrentes entièrement disponible en ligne (c'est une version beta... décidément, un doux vent de folie souffle sur ces universitaires qui font de l'informatique). Le dr Sandén propose une approche pratique et claire de la programmation multithread, baptisée Entity-Life Modelling, ou "modélisation de la vie d'entités".
Je n'en suis qu'au seconde chapitre, il est donc bien trop tôt pour me prononcer sur la qualité de l'ouvrage. L'approche pratique me plait, et j'espère que je trouverai des réponses satisfaisantes à mes questions dans les chapitres à venir.
Affaire à suivre.
[Mise à jour du 11/03: lisez ma critique sur cet ouvrage]

Retour à La Une de Logo Paperblog

A propos de l’auteur


Carlseleborg 1 partage Voir son profil
Voir son blog

l'auteur n'a pas encore renseigné son compte l'auteur n'a pas encore renseigné son compte

Dossier Paperblog