Récemment, une présentation de Tony Albrecht a fait pas mal de bruit dans le landernau de la programmation de jeu. En clair il expliquait que le paradigme de la programmation orientée objet est contre productif avec certaines architectures modernes de processeur. Pour faire court, la programmation orientée objet introduit une dispersion des données qui déplait fortement au cache de votre processeur. Or la vitesse de la mémoire est ce qui a grimpé le plus lentement sur ces dix dernières années d’évolution de l’informatique.
La démonstration est sans appel lorsque l’on voit les phases graduelles d’optimisation du code et les effets obtenus. Quand on divise par 5 le temps d’exécution d’un morceau de code, on est loin du négligeable. Cette démonstration prouve une fois de plus que malgrès l’évolution du matériel et des outils, les performances dépendent fortement du programmeur car c’est lui qui doit faire les choix intelligents, des choix qui peuvent intervenir très tôt dans une production.
Une conversation s’en est ensuivie sur le blog de Daz lors de laquelle un sujet est arrivé sur la table, pourquoi ne pas utiliser des langages fonctionnels dans le développement de jeu à l’instar des expériences de certains (Naughty Dog avec Goal vient à l’esprit). Au delà de la discussion sur la pertinence et les gains que l’on pourrait avoir à utiliser du code fonctionnelle la question du recrutement s’est bien évidemment posée.
En effet dans le monde du jeu vidéo nous devons embaucher des gens capables d’appréhender les problématiques auxquelles nous devons faire face et ce avec des salaires du milieux qui sont loin de la finance. Mais arrive alors la problématique du choix technologique. On serait tenté de croire qu’il s’agit juste d’une question technique alors que de fait il s’agit aussi d’un problème de personne. Comme l’avait constaté les gens qui ont bossé avec Goal, avoir la meilleure technologie du monde si vous êtes la seule personne à la maitriser on risque pas de vous filer un coup de main.
Le choix technologique doit donc s’accompagner d’une réflexion sur votre capacité à monter en charge sur cette techno et cela inclus de savoir si cette technologie est en usage, ce qui signifie la disponibilité de gens formés sur le marché du travail. Alors oui mettons en oeuvre des technologies innovantes, mais gardons à l’esprit de ne pas être le seul habitant de la forêt.