Savoirs et savoir-faire

De formation plutôt mathématique, je suis chercheur en informatique. La recherche en informatique est souvent mal comprise ; ainsi, lorsque, lors d'une rencontre entre étudiants en 1997, j'expliquai que j'étais en DEA d'informatique (actuellement, on dirait « master recherche, 2e année »), mon interlocutrice laissa échapper « il y a des DEA en ça ? ». Plus tard, j'ai eu affaire à des gens ayant pourtant un certain niveau d'éducation (CAPES de philosophie, par exemple) qui expliquaient doctement que l'informatique n'est pas une science. Je passe sur les gens qui s'attendent à ce que je leur dépanne leur PC.

L'informatique, c'est en effet beaucoup de savoir-faire, c'est-à-dire de connaissances pratiques, portant souvent sur des aspects plus ou moins arbitraires : « comment mettre en gras dans Word », « comment faire une page Web avec des éléments qui bougent », « comment se connecter à distance sur un serveur Linux ». Par « arbitraire », j'entends qu'il y a de nombreux éléments à connaître qui sont comme cela par pure décision humaine (le nom de telle ou telle fonction, son emplacement dans les menus...), sans qu'il y ait de raison profonde, souvent par habitude et similarité avec d'autres systèmes plus anciens. L'informatique se rapproche ainsi du droit (connaître une terminologie et des façons de parler étranges, s'y retrouver dans des codes modifiés par des décennies d'amendements par forcément bien écrits...).

Par ailleurs, un cliché à l'égard de l'informatique est que « cela change tout le temps », que les connaissances sont vite périmées, que ce qui était vrai il y a trois ans ne l'est plus, qu'on ne lit pas les articles anciens. Voilà d'ailleurs un argument souvent lu ou entendu contre l'enseignement de la programmation au collège, au lycée, voire à l'université : les connaissances acquises seraient largement périmées au moment de l'arrivée sur le « marché du travail ». Il s'agit là encore d'une vision parcellaire, reprenant des clichés journalistiques (l'innovation perpétuelle, la mode d'il y a 6 mois déjà dépassée...), mais qui ignore que, même si effectivement les interpréteurs BASIC de 1986 sont maintenant considérés comme primitifs et obsolètes, la notion de calcul séquentiel a été formalisée au début du XXe siècle et que son apprentissage est en bonne partie indépendant du langage de programmation effectivement utilisé. Ceci explique que des algorithmes des années 1950 ou 1960 soient encore employés, même si les astuces de mise en œuvre sur tel ou tel type de matériel ancien relèvent maintenant de l'histoire.

La théorisation

Une collection de faits épars ne fait pas un savoir. Le travail d'un chercheur est de dégager des concepts, des idées, des approches, qui permettent d'unifier ces faits. Par exemple, le travail d'un chercheur en langages de programmation n'est pas de connaître les détails de la syntaxe, des opérateurs ou des bibliothèques de nombreux langages, mais de réfléchir à des idées générales en programmation (par exemple, les systèmes de types) permettant de suggérer des façons de structurer les langages qui ne se réduisent pas à de la « bidouille » autour de l'existant.

Cette notion de la connaissance s'oppose à une notion, il est vrai entretenue par les jeux de société et télévisés, où il s'agit de connaître le maximum de « faits » sans grande conceptualisation derrière — en histoire, par exemple, pour reprendre un exemple fourni par une amie, il s'agit de savoir répondre « 1515 » à la question « Marignan ? » mais sans être capable d'expliquer ce qu'étaient les guerres d'Italie. L'universitaire est donc assimilé à une sorte de champion (au sens de Questions pour un champion) spécialisé, d'où l'incompréhension de son entourage quand il explique qu'il ne connaît pas tel ou tel détail sans intérêt particulier et qui peut se retrouver par 3 minutes de recherche dans Google.

Cette recherche du concept permet de s'affranchir de visions trop opérationnelles, « le nez dans le guidon ». Prenons par exemple le temps d'exécution d'un programme, qu'on tend généralement à vouloir diminuer. La conceptualisation scientifique consiste à se détacher un peu du programme concret à optimiser, à ne pas se contenter de petites mesures locales, mais au contraire à s'intéresser à ce que le programme tentait de faire et à réfléchir à des structures de données ou des algorithmes profondément différents (par exemple, si un programmeur inexpérimenté rajoute un à un des éléments à un tableau puis les trie avec un algorithme quadratique, une personne plus versée en algorithmique pourra lui dire d'utiliser une structure adaptée telle qu'un arbre de recherche).

La théorisation consiste donc à retenir les caractéristiques essentielles du problème (et donc à rejeter des détails, notamment ceux qui se périmeront vite), à le généraliser et à réfléchir sur le problème théorique ainsi dégagé. Pour prendre par exemple mon dernier article publié, à partir d'un problème pratique (déterminer le pire temps d'exécution d'un programme, par exemple une boucle de contrôle-commande de pilotage d'aéronef) nous avons dégagé un problème théorique (comment déterminer la solution optimale d'un certain genre de formule de logique du premier ordre), une difficulté (les algorithmes usuels ont une complexité exponentielle sur ce genre de formules) et une solution : il s'agissait, au delà de l'application particulière, de réfléchir à la façon dont des parties entières d'un espace de solutions peuvent être « résumées » de façon à éviter des explorations exhaustives et coûteuses.

La théorie finit par prendre une vie autonome. Le problème pratique motivant à l'origine les études menées peut être oublié : ainsi, les recherches sur l'amélioration du temps d'exécution des programmes informatique ont été à l'origine de la théorie de la complexité, mais une bonne partie des développements de celle-ci n'ont aucune importance quant à l'écriture de programmes (quelle différence pratique, par exemple, entre un algorithme en complexité doublement exponentielle dans le pire cas et un algorithme en complexité non élémentaire ?).

Les dangers de la théorie

Dans le langage courant, on mentionne souvent l'opposition entre la théorie et la pratique, notamment sous la forme de l'objection : « cela fonctionne en théorie, mais cela fonctionnera-t-il en pratique ? ». Il est facile de rejeter celle-ci comme une manifestation d'anti-intellectualisme. C'est pourtant une question parfaitement légitime.

La théorisation d'un problème pratique passe souvent par sa simplification. C'est le vieux problème de la carte par rapport à la réalité : une carte qui reprendrait tous les détails de la réalité serait aussi grande que celle-ci... donc irréalisable et sans intérêt pratique. La simplification du problème passe par l'oubli de détails réputés sans importance pour ce qui nous intéresse : ainsi, si nous planifions un itinéraire routier à grande distance, nous consultons une carte à petite échelle où ne figurent pas les chemins de terre, car nous n'entendons pas emprunter ceux-ci.

En physique, un exercice jadis (et peut-être encore) pratiqué en mathématiques supérieures est le calcul du temps de cuisson d'une dinde en fonction du poids (pardon, de la masse) de celle-ci. Pour cela, on suppose que la dinde est sphérique et de matériau uniforme, ce qui est évidemment faux d'une vraie dinde. Cependant, l'étude du temps de cuisson d'une vraie dinde en tenant compte de sa géométrie précise exigerait sans doute une tomodensitographie, une discrétisation de la géométrie et la résolution numérique (informatique) d'un système d'équations aux dérivées partielles, soit des moyens lourds dignes de la préparation d'une radiothérapie, tandis que l'hypothèse de dinde sphérique uniforme permet un calcul manuel à portée d'un étudiant, voire de simple analyse dimensionnelle. Qui plus est, si ce qui nous intéresse est juste l'allure générale de l'évolution du temps en fonction de la masse de la dinde (est-il linéaire comme le préconise Femme Actuelle ?), ces précisions sont sans doute inutiles (mais encore faudrait-il le confirmer expérimentalement).

Parfois, le chercheur est tenté, au vu de ses études théoriques, de préconiser telle ou telle solution à des problèmes concrets, qu'ils soient industriels, médicaux, sociaux... Il y a là un danger : celui de considérer que le modèle théorique étudié reflète réellement les problèmes qui se posent in concreto.

Prenons tout d'abord quelques exemples informatiques. On étudie habituellement la complexité des algorithmes de tri par le nombre asymptotique de comparaisons qu'ils font ; de ce point de vue, le tri par tas est de complexité optimale, meilleur que le tri rapide. Cependant, me fit remarquer un doctorant (à ma grande honte) il y a quelques années, le tri rapide a une meilleure localité dans le cache, ce qui fait qu'il sera sans doute plus rapide. Le problème est que l'étude théorique fait une hypothèse (que le temps mis à comparer deux éléments à trier ne dépend que d'eux et non de l'historique du calcul ; ou encore, que ce qui importe est l'asymptote et non la constante multiplicative) qui n'est pas vraie du problème réel. Ce n'est pas que l'étude théorique est à jeter : simplement, il faut la prendre avec ses limites, découlant de son cadre de conceptualisation.

Dans le même ordre d'idées, un collègue m'a récemment confié son désarroi au constat qu'on avait pendant dix ans étudié une classe de systèmes de transition au motif de faire de l'analyse de programmes, alors qu'il n'existe aucun programme réel ou presque qui se modélise dans cette classe. Là encore, il ne s'agit pas de jeter ces études, qui peut-être serviront ; simplement, il est impossible de les appliquer directement, alors que certains des chercheurs du domaine prétendaient cela. Voici un des dangers du travail théorique : on finit par croire que le modèle que l'on étudie est la réalité, et on passe à côté des problèmes qui se posent vraiment.

Les deux exemples ci-dessus ne prêtent guère à conséquence : au pire, on obtiendra un logiciel inefficace, ou on aura financé quelques personnes · années de recherche inutile, ce qui ne coûte pas très cher au regard de la moindre opération démagogique en matière d'impôts. Toutefois, la même critique est parfois adressée à certains économistes, accusés de développer des modèles théoriques (notamment mathématiques) sans les confronter à la réalité, et surtout d'en tirer des préconisations politiques. Un amusant jeu intellectuel peut alors avoir des conséquences concrètes pour des millions, voire des centaines de millions, de personnes.