Comment publier un programme informatique ?

À la lecture de ce programme, quelque chose de frappant peut être immédiatement constaté : son caractère inintelligible dans le détail de sa séquence. Comme on ne dispose pas d’un organigramme, il faut en effet procéder à une lecture attentive, avec un papier et un crayon, si l’on veut suivre la séquence des tâches qu’il accomplit en vue d’en comprendre ensuite la structure générale. Cette compréhension est rendue d’autant plus difficile que de Reffye renonce à nous donner l’attribution de la cinquantaine de registres qui y figurent et dont les noms sont très sibyllins puisqu’il ne peuvent être appelés que par leur formule générique R(i). Seule une vingtaine de noms de registres sur la cinquantaine utilisés se voient clairement attribuer leurs correspondants mathématiques et biologiques dans un tableau récapitulatif. Cette explicitation limitée constitue, on le comprend, un véritable défi à la mémoire du lecteur et donc à la vérification précise du programme. Dès lors, pourquoi publier la liste d’un programme ?

Citer la liste non totalement commentée d’un programme dans ces conditions ne relève plus vraiment d’une entreprise de communication et de clarification des preuves, comme cela semble devoir être la règle pour un article scientifique, mais sans doute plutôt d’une volonté de produire un certain effet de réalité par rapport à la production technique laborieuse que constitue indéniablement la conception d’un programme informatique 1548 . Il y a là un mouvement d’intégration et de concrétisation de l’instrument linguistique de contrôle de la machine programmable (le programme) qui devient ainsi l’analogue d’un objet technique « concret », au sens de Simondon 1549 . D’une part, en effet, le fait que l’on se trouve ici en face d’une liste d’instructions symboliques, que l’on peut encore citer intégralement, montre qu’il s’agit clairement d’une production intellectuelle, proche en cela d’un argument scientifique présenté en langage naturel ou sous la forme d’un symbolisme mathématique (équations ou formules). La nature du programme peut dès lors sembler homogène à celle des signes ou des symboles habituels. Mais d’autre part, la longueur et la rapide opacité structurelle d’une telle liste font qu’on ne peut considérer avoir affaire à une simple écriture symbolique d’un nouveau genre. Le décryptage visuel qu’elle exige est d’une tout autre nature que celui que demande une simple lecture ou une classique interprétation des symbolismes mathématiques. Une lecture-interprétation des symboles mathématiques procède en effet principalement par évocation successive puis simultanée, en imagination, des opérations que chaque symbole tout à la fois désigne, abrège et remplace. Au besoin, une telle lecture se complète et s’assure de sa compréhension d’une part au moyen d’une reprise active, c’est-à-dire écrite, du cheminement qui donne naissance et sens aux symboles formulés : on lit un livre de mathématiques ou de physique théorique un crayon à la main. D’autre part, le lecteur peut s’expliciter la formule symbolique nouvelle, car résultant d’un travail de recherche inédit, en la rendant opératoire sur des valeurs particulières (des exemples donc) pour s’assurer de sa capacité à « prendre » en une seule vue de l’esprit (ce que signifie « comprendre ») l’opération globale qu’elle institue à partir des opérations déjà instituées et intériorisées par le lecteur qu’il est et la communauté qui est la sienne.

Or, peut-il en être de même avec la liste d’un programme informatique ? Si l’on peut en droit suivre une liste de programme en écrivant à la main ses étapes successives pour suivre pas à pas l’automate des états logiques que la machine suit, en fait, dès que le programme devient complexe et notamment, comme c’est le cas ici, dès qu’il recourt à des sous-routines emboîtées qu’il appelle un très grand nombre de fois (plusieurs centaines ou plusieurs milliers ou millions de fois), il n’est pas possible au lecteur de se livrer à ce suivi pas à pas. S’il n’en est pas le concepteur, son travail de compréhension du programme ne peut être en fait que directement symétrique et opposé à celui qui est d’ordinaire le sien face à des symboles mathématiques : un travail de synthèse et d’abréviation à l’égard des opérations pas à pas du programme et non un travail d’analyse, comme c’était le cas pour le symbolique. Alors que l’opératoire est enveloppé dans le symbole et dans la formule mathématique, et qu’il demande à être pour cela déplié et explicité 1550 , l’opératoire est en revanche la substance même, certes immédiatement accessible et lisible, de la liste d’un programme, mais rapidement incompréhensible. Pour s’expliquer un programme, on ne va pas vers l’opératoire élémentaire, bien plutôt, on en part. Il n’y a là nul symbole qui envelopperait une tâche complexe et précise à se figurer, mais il y a au contraire à tenter de synthétiser ces tâches morcelées et en lambeaux, en quelque sorte, pour les constituer à une échelle logique intégrée où elles peuvent nous donner du sens. Ce travail inverse est extrêmement difficile voire impossible en fait, sinon en droit, surtout quand aucune indication mnémotechnique sur la structure du programme n’est donnée dans la liste. Il est bien plus difficile que celui de l’explicitation de formules symboliques puisqu’il se fonde sur un travail d’imagination doublé d’un travail empirique d’essai (et erreur) de synthèse, non orienté a priori, donc souvent fondé sur l’heuristique du pari. Ce travail est inductif plus que déductif. Il demande des capacités d’observation et de rapprochement bien loin d’une analyse linéaire. Il est donc un défi pour l’imagination autant que pour le pouvoir de synthèse de l’imagination.

C’est une des raisons épistémologiques pour lesquelles de Reffye et d’autres chercheurs, à la même époque 1551 , tout en continuant dans un premier temps à publier la liste de leurs programmes, commencent à ne plus voir l’intérêt qu’il y a à lui donner la fonction d’une explicitation et d’une justification du travail accompli, ce qui devrait continuer d’être la fonction principale d’un article scientifique. À tel point qu’au début des années 1980, pour les articles plus tardifs qui présenteront les travaux de sa thèse d’Etat, de Reffye décidera de ne plus faire paraître que les organigrammes logiques de ses programmes. Dans ses productions, la publication des listes des programmes sera donc progressivement remplacée par la publication des seuls organigrammes, plus courts, plus lisibles et plus universels. En effet, en visualisant les séquences logiques sous forme d’un graphe, la fonction des routines comme les branchements conditionnels, l’organigramme présente également le grand avantage de ne pas opposer au lecteur ou à l’utilisateur la barrière de la spécificité du langage de programmation utilisé. Mais faire ce choix impliquera d’accepter une certaine déperdition dans la transmission de l’information. Or, comme nous le verrons plus loin, mais comme nous pouvons d’ores et déjà le supposer, ce choix ne sera pas sans quelques conséquences. Tout au moins, cette supposition, encore à confirmer, peut-elle déjà nous expliquer en partie pourquoi de Reffye et la plupart des utilisateurs pionniers de programmes codés en langage évolué ont d’abord fait le choix de publier leurs codes in extenso. Ils l’ont fait jusqu’au moment où le gain en explicitation pouvait être jugé nul au regard de la difficulté de la relecture.

Notes
1548.

Dans le cas de figure qui nous occupe, même si on peut l’interpréter en ce sens, nous n’irons pas jusqu’à dire qu’il s’agit d’un argument d’autorité masqué parce que chosifié et fondé sur un « recrutement » des symboles, des procédés intellectuels et des techniques informatiques. Un tel « recrutement », compris au sens de [Latour, B., 1989, 1995], fonctionnerait sans doute comme une politique de l’exhibition du programme informatique présenté comme fait accompli, c’est-à-dire encore comme une chose bien réelle car compacte (dotée de propriétés enchevêtrées et inextricables) et non plus comme un simple argument. La chose réalisée, c’est-à-dire littéralement rendue réelle de ce fait, aurait pour immense avantage de ne pas prêter à contestation, à contre-argument ou contre-exemple. Nous ne pensons pas devoir employer une telle grille de lecture sociologique dans la mesure où le caractère sibyllin du programme n’est pas, à l’heure où il a été conçu, ce qui est prioritairement voulu en tant que tel. Il est avant tout le simple fruit de limitations techniques, notamment dues à la faible mémoire de la machine utilisée. D’autre part, à ce moment-là, de Reffye ne recherchait pas particulièrement à imposer sa compétence à travers sa maîtrise de la programmation (puisqu’il ne lui semblait pas encore y avoir beaucoup de répondant et donc d’attentes de ce côté là, à l’IFCC) mais plutôt à travers les résultats biologiques et agronomiques obtenus. De plus, dès 1976, comme on le voit dans ses premiers programmes, s’il recherche une telle reconnaissance, c’est bien plutôt à travers la visualisation réaliste des résultats de la simulation. En effet, comme on le verra bientôt, c’est cela qui lui semblera un bon moyen d’imposer son approche auprès de ses pairs et de faire consensus autour de lui, donc de « recruter » si l’on veut. Il ne faudrait donc pas faire ici une lecture anachronique qui présenterait d’emblée celui qui le premier a employé l’ordinateur dans un domaine scientifique historiquement éloigné de ses lieux de naissance, comme ayant été l’occasion et l’objet d’enjeux de pouvoir immédiatement considérables, même si certains signaux précoces en ce sens peuvent, de notre point de vue postérieur mais autrement informé, donc déformant, y être décelés.

1549.

Voir [Simondon, G., 1958, 1969, 1989], pp. 20-23. Cependant, ce qui reste conceptuellement très pertinent dans l’analyse de Simondon pour le cas du programme implémentant ce que nous appelons une modélisation fractionnée (car il y a bien une sorte de « convergence des fonctions dans une unité structurale », ibid., p. 22) ne l’est plus lorsqu’il s’agit du produit des programmes de simulation, c’est-à-dire des simulations informatiques proprement dites. Comme nous le verrons, dans le cas des simulations réalistes de plantes, c’est plutôt la relation inverse qui est vraie : il y a une diversification des fonctions susceptibles d’être remplies par la simulation, cela par l’effet d’une intégration et d’une concrétion, ou co-croissance, des diverses caractéristiques structurelles. En ce sens, les simulations informatiques, dès lors qu’elles passeront pour des doubles d’une réalité complexe et qu’elles serviront à une extension du domaine de l’expérimentation, n’apparaîtront plus véritablement comme des objets techniques finalisés, pas plus qu’elles ne vaudront comme de simples calculs singuliers, ou instanciations, d’un modèle mathématique préalable.

1550.

Nous avons conscience de la simplification que nous faisons subir ici aux notions de lecture et de compréhension mathématiques. Comme le montre J.-T. Desanti [Desanti, J.-T., 1975], pp. 172-174, la « production d’un concept » mathématique et sa compréhension renvoient toujours à un travail de production (au sens d’une « explicitation », d’une « mise au jour ») et d’insertion de ce concept dans un contexte interprétatif déjà constitué comme tel, par ailleurs, parce que rendu opératoire. En cela, nous le suivons. Mais nous n’insistons pas ici sur le fait indéniable que ce contexte est lui-même à contextualiser pour prêter à compréhension (ce qui fait qu’il n’y a pas de compréhension pleine et définitive en mathématique), et cela sans doute sans fin. Nous nous contentons de nous appuyer ici sur le possible (et toujours réel) arrêt temporaire de ce processus d’emboîtement des contextualisations et des structures mathématiques dans une pratique interprétative particulière à la communauté mathématicienne de l’époque. C’est cela qui nous permet de définir ici, de façon certes limitée et historiquement contextualisée, la compréhension que l’expert a de tout symbole mathématique. Sur le symbole mathématique et sa toujours possible analyse en des termes opératoires plus élémentaires, voir également les réflexions de E. Ortigues inspirées de Bourbaki et Wittgenstein [Ortigues, E., 1962, 1977], pp. 171-176.

1551.

Par exemple, dans les actes du colloque State-of-the-Art in Ecological Modelling de 1978, présidé et édité par l’écologue modélisateur danois Sven Erik Jorgensen, on trouve encore quelques listes intégrales de programme. Ce sont essentiellement des listes de programme de simulation (avec modèle logico-mathématique donc) et non de modélisation mathématique de type Lotka-Volterra (donc avec des modèles mono-formalisés de type équations différentielles) car la nouveauté mathématique et informatique est alors du côté des approches par simulation. Il faut donc communiquer sur ce point. C’est le cas du travail de J. A. Meyer (écologue français qui travaillera ensuite en vie artificielle), et N. Pampagnin, membre du CEREQ (Centre d’Etude et de Recherche sur les Qualifications créé à Paris en 1973). Dans le cadre de l’ATP-CNRS (Action Thématique Programmée du CNRS) « Analyse des Systèmes » (contrat 3702), ils ont utilisé des ordinateurs du centre de calcul CIRCE du CNRS fonctionnant avec le langage SIMSCRIPT II pour simuler un système complexe de prédateurs-proies. La liste de leur programme fait déjà huit pages en tout : voir [Jorgensen, S. E., 1979], pp. 819-826. Le CIRCE était le Centre Interdisciplinaire Régional de Calcul Electronique d’Orsay. Il avait été créé à partir de l’Institut Blaise Pascal en 1970. Il a lui-même été supprimé et remplacé en novembre 1993 par l’IDRIS (Institut du Développement et des Ressources en Informatique Scientifique).