Laurent a binômé lors de la dernière session du dojo avec Christophe pour nous présenter en mode "programmation collective" un nouveau kata -- résoudre un problème de labyrinthe de deux façons, l'une itérative et l'autre récursive. Plusieurs d'entre nous avait regardé ledit kata, peu avaient les deux solutions de prêtes. Pour ma part, la version récursive, sans être triviale, m'avait paru venir assez naturellement, alors que je n'avais aucune idée de comment aborder la version itérative. Il n'en fallait pas plus pour piquer ma curiosité et souhaiter en apprendre plus sur cette question.
Je me suis accroché. Jusqu'au moment où je n'ai plus pu. Un moment magique où tout avant s'enchaînait logiquement, où le chemin à suivre était clair. Une charnière faisant basculer mes certitudes dans une interrogation perplexe -- pourquoi cet algorithme ? Pourquoi cette ligne en plus ? Je voyais le but à atteindre, et pouvais tant bien que mal revenir à quelques étapes préliminaires qu'il fallait achever avant d'obtenir la pleine solution. L'enchaînement logique que constituait ce moment charnière me restait pourtant inaccessible. Nous en étions alors au passage du cas trivial en une itération à celui, nettement moins, en deux itérations.
Blocage psychologique ? Manque d'endurance dans mon attention ? Je ne sais. Ce qui est sûr, c'est que rapidement je me suis retrouvé face à de vieux démons réveillés, ceux rencontrés dans les cours de mathématiques post-lycéennes. Ceux où j'aimais aller, où pugnace je bataillais pour comprendre l'enchaînement des lignes écrites au tableau, où la plupart du temps pourtant je devais entourer un point d'interrogation en marge et aux deux-tiers de la démonstration recopiée -- promesse hâtivement formulée d'un retour à ma copie qui, une fois effectué, ne laisserait plus plâner aucun mystère ; crainte sourde d'une sanction si le mystère demeurait jusqu'au prochain examen. Cette peur mêlée à la bonne volonté de comprendre ce qui se passe a longtemps été pour moi une source de frustration -- jusqu'au jour où j'ai compris qu'il n'y avait pas de honte à dire qu'on ne comprend pas, que la responsabilité de compréhension incombe autant à l'émetteur qu'au destinataire. Stella Baruk pose comme thèse que l'échec scolaire en mathématique est avant tout un échec de l'enseignement à communiquer un savoir à des élèves pourtant capables de le comprendre. Sans avoir eu à réellement subir le sentiment d'échec scolaire en mathématiques, je regrette de ne pas avoir lu les écrits de Stella Baruk à une époque où je redoutais de voir mes questions sur une démonstration mathématique répondues par un "C'est pourtant simple..."
La même problématique s'est présentée de façon nettement moins iconoclaste en cours d'écriture théâtrale, quelques années plus tard. Le progrès de chacun s'y mesurait en sa capacité à communiquer une histoire, sans susciter pour autant de contre-sens en ce qui concerne les motivations des protagonistes. Dans un tel cadre, il vient clairement qu'un texte, un dialogue, un scénario peut être "intelligent" sans pour autant "fonctionner". La responsabilité qui est laissée au public de comprendre ce qui est à comprendre est contre-balancée par celle qu'a l'auteur de communiquer efficacement ce qui, justement, est à comprendre.
J'en suis toujours à creuser où sont les aspects performatifs de l'activité de programmation. Si notre travail est de communiquer des idées, un savoir, des formes, des expérience ou une théorie, peut-être qu'une part de réponse se situe dans la nécessité pour le codeur/auteur de s'accorder avec son lectorat/public sur ce qui "fonctionne" dans son discours.
Posted by Emmanuel at February 6, 2005 11:32 PM