À propos de dualités en sciences et technologies de l’information et de la communication
Ces réflexions nous ont été inspirées par le thème proposé aux élèves des classes préparatoires aux grandes écoles pour les TIPE (travaux d’initiative personnelle encadrés) de l’année 2005-2006. Nous espérons qu’elles ouvriront des pistes à toute personne qui souhaite approfondir son regard sur notre discipline.
L’épreuve TIPE est une épreuve commune, organisée par quatre grands concours (Mines-Ponts, Centrale-Supélec, Concours communs polytechniques, Banque d’épreuves PT), dont la note est transmise aux services des concours des différentes écoles.
Chaque candidat présente oralement le travail qu’il a effectué en cours d’année, individuellement ou en petit groupe, à partir du thème imposé. Le travail fourni doit comporter une production personnelle de l’étudiant (observation et description d’objets naturels, collecte, tri et traitement de données, mise en évidence de phénomènes, expérimentation, exploitation d’un logiciel, modélisation…), réalisée dans le cadre d’une investigation sur un problème scientifique. Cette production ne peut en aucun cas se limiter à une simple synthèse d’informations collectées, mais doit comporter une « valeur ajoutée » apportée par l’étudiant.
Pour l’année scolaire 2005-2006, le thème TIPE commun aux filières MP, PC, PSI, PT, TSI, TPC, BCPST, TB des classes préparatoires aux grandes écoles est intitulé : les dualités en sciences.
Le document officiel précise : « Une dualité peut se révéler au cours de l’étude de certains objets ou certains phénomènes, cette dualité exprimant ou non une opposition, une complémentarité… Lorsque l’étude est menée selon des approches différentes, la dualité apparaît plus souvent encore.
Les sujets choisis pourront, selon les cas, amener à constater cette dualité, à l’analyser, à la comprendre ou en expliquer les conséquences.
Individuel-collectif, ordonné-désordonné, simple-complexe, unique-multiple, microscopique-macroscopique, continu-discontinu, stable-instable, réversible-irréversible, local-global, explicite-implicite… constituent des exemples génériques qui portent une dualité. »
1. Dualités dans la méthode scientifique : deux repères
Lors de l’étude de ce qui est l’objet des STIC, c’est-à-dire l’étude des systèmes d’information industriels, physiques ou biologiques (qu’il s’agisse des systèmes symboliques ou cognitifs, évidemment des systèmes communicants, très souvent des systèmes numériques), les dualités sont omniprésentes. Que ce soit au niveau de la modélisation de ces systèmes, de leur conception s’ils sont industriels, de leur simulation s’ils sont biologiques ou physiques, ces dualités sont tellement présentes qu’il faut considérer l’occurrence d’une dualité comme indissociable de la méthode scientifique utilisée.
Les dualités comme outils scientifiques
Faire apparaître une dualité ou une pluralité pour comparer et mieux comprendre de manière différentielle un formalisme. Opposer deux méthodes pour en faire émerger une nouvelle qui en les intégrant offre plus de possibles. Faire coopérer deux mécanismes ou plus pour bénéficier de leurs performances conjointes. Traiter volontairement conjointement deux sujets pour faire émerger de cette étude duale une synthèse d’un ordre supérieur. Ou plus souvent… constater que deux outils restent irréductibles en l’état actuel de nos connaissances et humblement les utiliser ensemble au mieux ! Voilà où se situent les dualités dans ces sciences.
Quiconque voudra montrer que – sur ce sujet – différents aspects de la démarche scientifique ont été appréhendés, maîtrisés et appropriés, devra se poser ces questions et relire (avec par exemple Bachelard « La philosophie du non ») comment la science contemporaine s’est construite de manière littéralement dialectique, en opposant à chaque thèse une antithèse qui la remet en question, avant de pouvoir trouver la solution dans une synthèse, elle-même candidate à une nouvelle remise en question.
Dualisme philosophique et dualités en science
En sciences, toute dualité est « provisoire », quand elle n’est pas tout simplement instrumentalisée, à prendre puis à laisser. En sciences, les dualités ne figent pas les choses mais permettent juste d’aider à aller de l’avant. Aucun jugement de valeur, évidemment, entre les deux pôles d’une dualité en sciences. Les dualités se contentent de rester humblement pragmatiques.
Pire, comme le montre Jean-Marc Lévy-Leblond dans « Aux contraires », les sciences n’ont eu et n’auront de cesse que de rechercher l’unité, donc de dépasser la dualité, dans une conceptualisation qui englobe les deux pôles identifiés.
Considérer le dualisme comme une opposition, entre le bien et le mal par exemple, serait donc ici une erreur.
Le dualisme philosophique, lui, est le même que le dualisme scientifique, il ne s’applique simplement pas aux mêmes objets : si nous considérons le dualisme âme/corps, par exemple, on n’oppose pas l’âme au corps, on fait simplement apparaître leur différence d’essence. Mais l’âme sans le corps n’existe pas, donc on ne peut les opposer et les dissocier. Un autre exemple : l’être et l’étant. Le monde est composé d’êtres et d’étants qui forment une dualité et non une opposition, puisqu’ensemble ils constituent le monde, comme l’âme et le corps constituent l’Homme.
C’est en logique que les éléments de réflexion sur dualité et non-dualité se développent de manière très proche entre la philosophie et les sciences de l’information, en particulier les mathématiques appliquées.
En bref, les dualités scientifiques ont beaucoup à nous apprendre : ce sont les philosophes des sciences, ceux qui font de l’épistémologie, qui nous le rappellent, ce sont les scientifiques qui le vivent au quotidien.
(Éléments validés grâce à Julia Bougeois, étudiante en philosophie à l’Université d’Aix en Provence.)
2. Quelques dualités dans le contenu des STIC
Une tentative de tri
Il y a tellement de dualités en STIC que la seule chose possible est de commencer par une liste à la Prévert :
continu-échantillonné, symbolique-numérique, local-global, déterministe-stochastique,
décidable-indécidable, logiciel-matériel…
qui se poursuivrait presque sans limite :
explicite-implicite, simple-complexe, stable-instable, individuel-collectif,
ordonné-désordonné, unique-multiple, microscopique-macroscopique, réversible-irréversible, etc.
Choisissons : les dualités de la première liste sont liées aux méthodes fondamentales utilisées en STIC, les évoquer à bâtons rompus va finalement nous permettre d’évoquer les autres et le but sera atteint : qui souhaite ou doit se préoccuper de dualités en sciences y moissonnera quelques idées.
Continu-échantillonné
C’est peut-être la plus omniprésente des dualités. En traitement de l’information, on utilise conjointement des méthodes continues (par exemple des intégrales ou des équations différentielles) et des méthodes dites discrètes, basées sur des quantités échantillonnées (par exemple où les intégrales continues deviennent des sommes et les équations différentielles se traduisent en équations de récurrence sur des suites). Les secondes correspondent mieux à ce qui se passe dans un ordinateur actuel (où les quantités ont été échantillonnées sous forme de nombres), alors que les premières vont être plus proches de systèmes physiques courants, puisque dans notre vision des sciences de la matière à l’échelle usuelle, les lois de la mécanique ou de l’optique, ou encore de l’électromagnétisme, sont de l’ordre du continu. Souvent, c’est au continu qu’il revient de comprendre et de prédire les propriétés générales, à l’échantillonné d’assurer l’implémentation et la mise en œuvre.
Mais méfiance, car si on descend au cœur de la matière (mécanique quantique) ou si on se tourne vers des modèles biologiques (réseaux de neurones dans le cortex), ce sont des modèles échantillonnés qui prévalent. Et des modèles continus permettent de les simuler globalement. La dualité peut donc s’inverser.
De manière duale, en traitement d’images, ce sont des approximations continues (approches dite variationnelles) des algorithmes de traitement d’images qui offrent aujourd’hui les meilleures performances, car l’approche continue se révèle d’une grande richesse pour définir des processus très sophistiqués. En commettant sciemment une erreur (faire comme si un ordinateur faisait un calcul dans le domaine du continu), la conception des outils de traitement d’images a pu se dépasser.
Autre perspective à ne pas négliger : si la technologie actuelle limite l’implémentation informatique à des algorithmes échantillonnés, il existe des alternatives, pas encore abouties (par exemple, des calculateurs basés sur un signal optique et non électronique) ou provisoirement obsolètes (comme les calculateurs analogiques), qui pourraient conduire à des calculs directement effectués en continu : les nanotechnologies émergentes sont un chemin vers cette issue.
Symbolique-numérique
Les STIC savent distinguer les systèmes symboliques, où l’information est représentée de manière plus qualitative (sous forme de symboles qui se combinent par des opérations ou des relations spécifiques), des systèmes numériques, où l’information est plus quantitative (sous forme de quantités numériques).
Modéliser la parole (pour concevoir des systèmes de synthèse ou analyser automatiquement un signal) ou d’autres formes de langage, comme la langue des signes, est peut-être le champ où la nature symbolique de l’information (mots, syntaxes des phrases…) et sa nature numérique (signal audio, harmoniques des sons…) sont le plus visiblement entrelacées, même si les solutions qui marchent actuellement sont principalement numériques (et plus précisément stochastiques). Mais en bio-informatique, la situation est tout aussi riche. Plus surprenant peut-être, cela se vérifie aussi lors de la modélisation des plantes.
Par rapport à la première dualité évoquée, il va sans dire que cette dualité est omniprésente aussi, et que les deux facettes, bien qu’étroitement liées, peuvent être différenciées. La dualité symbolique/numérique ne recouvre donc pas exactement la dualité discret/continu. Le symbolique est du discret interprété. C’est-à-dire que non seulement on réalise une approximation des rééls par des entiers ou des rationnels de précision bornée, mais en plus on leur donne des noms pris dans un domaine d’interprétation choisi. On passe ainsi de 1,9847… mètres à 2 mètres puis à « grand », si le domaine d’interprétation est celui de tailles d’humains, ou à « petit », si le domaine d’interprétation est celui de tailles d’éléphants.
Local-global
Une autre dualité se retrouve très souvent, celle qui fait distinguer les problèmes locaux (c’est-à-dire qui se résolvent en se limitant à des opérations d’envergure limitée faiblement couplées entre elles) des problèmes globaux (qui ne peuvent bénéficier de cette modularité).
Il existe par exemple une méthode quasiment universelle pour résoudre localement (c’est-à-dire, à partir d’une approximation de la solution, la raffiner jusqu’à en trouver une meilleure) une équation numérique même compliquée, mais rien de cela au niveau global, y compris pour des problèmes peu compliqués. Un système complexe reste facilement contrôlable – dans plusieurs sens du terme – s’il reste « localement » dans le respect de contraintes qui permettent de travailler de manière simplifiée.
Réduire la résolution d’un problème global à la résolution d’une famille de problèmes locaux est la base d’un nombre important de méthodes éprouvées. C’est peut-être la clé du fonctionnement de certains mécanismes cérébraux cognitifs qui commencent à être bien modélisés, où la vision que nous avons d’un réseau de neurones biologique est qu’en faisant fonctionner localement des groupes de neurones, il arrive à des comportements globaux assez sophistiqués.
La métaphore vaut aussi pour les systèmes informatiques eux-mêmes, où dans les grands réseaux comme l’Internet, c’est cette dualité qui a permis de mettre en place des systèmes communicants sur lesquels se base aujourd’hui toute notre société. On parle alors de modularité, au sein des objets informatiques, et les langages informatiques les plus performants implémentent cette modularité.
Notons enfin que faire du global avec du local est l’essence de beaucoup d’algorithmes. Par exemple, en traitement d’images, beaucoup de filtres examinent chaque pixel de l’image avec son voisinage et lui appliquent une opération. C’est une façon très locale de considérer une image, mais le résultat pourra être la détermination des contours, qui donne un point de vue global. De la même façon, un algorithme de tri d’une liste procède uniquement par comparaison deux à deux d’éléments de la liste, mais il en résulte l’effet global qu’une liste est triée. Dans « Les enfants de minuit », Salman Rushdie fournit un très bel exemple de ce phénomène ; le docteur Sahib ne peut examiner une de ses patientes qu’au travers d’un drap troué qu’il place sur la zone à examiner. Il finit pourtant par acquérir une connaissance globale de sa patiente, tellement favorable qu’il demande à l’épouser !
Déterministe-stochastique
Un pas en avant dans cette exploration nous met face à une dualité fondamentale dans toutes les sciences : celle qui oppose le déterministe au stochastique. Il faut s’y attarder, car la vision scientifique du monde reste encore trop souvent réduite à celle du 18e siècle, où on voyait les lois physiques comme un mécanisme horloger où tout était déterminé…
Or ceci est faux pour les systèmes physiques, puisqu’il est impossible de les mesurer de manière déterministe. En effet, effectuer une mesure perturbe obligatoirement le phénomène, il s’y ajoute forcément une incertitude quand on vient l’observer, il ne peut donc être complètement connu. Pour l’observateur, le système n’est donc plus déterministe, car un aléa s’ajoute qui rend le modèle qui s’applique à ce système obligatoirement stochastique. Voilà ce que la mécanique quantique du 20e siècle nous a enseigné. La nature est un mécanisme horloger qui fait ce que bon lui semble et nous laisse une image qui n’aura de cesse de se déformer.
L’observation des systèmes biologiques ne peut être totalement déterministe non plus, pour une tout autre raison : leur incommensurable complexité. De la plus petite échelle des gènes, déjà formés d’une extraordinaire combinatoire d’éléments à l’enchevêtrement vertigineux, à celle du cortex humain qui avec quelque 109 neurones reliés par plus de 104 synapses chacun, chaque synapse étant une gentille petite unité biochimique d’une redoutable complexité codant peut-être 103 informations élémentaires, c’est donc un nombre qui passe allègrement la quinzaine de zéros qu’il faut considérer pour ne serait-ce qu’énumérer l’état d’un tel système biologique à un instant donné. Ajoutons pour ne pas être en reste la simple constatation que quelques millions d’années d’évolution des espèces ont abouti à cette complexité, en produisant un bon million et demi d’espèces en termes de biodiversité, pour convaincre qu’il n’est expérimentalement pas concevable (quelle que soit la puissance de calcul espérée des ordinateurs qui plie devant de tels nombres) de faire autre chose que de rechercher des valeurs « moyennes » au sein de ces populations, bref de construire les modèles de tels systèmes sur la base de statistiques, c’est-à-dire de visions macroscopiques qui réduisent la combinatoire initiale. Les systèmes vivants sont des mécanismes horlogers dont la combinatoire semble aujourd’hui impossible à énumérer.
Dernier saut du déterministe au stochastique à considérer : dans la conception des systèmes artificiels, il est parfois plus efficace de… confier au hasard des choix plutôt que de… tergiverser ! Plus efficace un algorithme qui va aléatoirement choisir très vite une solution dans un espace de choix trop large pour être énuméré, puis une autre encore et encore, et retenir la meilleure, qu’un autre algorithme qui se doterait de mécanismes – forcément lents car très lourds – pour explorer ce même espace de manière sophistiquée, le déterminisme de cette exploration empêchant de se donner une chance de tomber sur un cas nouveau, innovant, etc. qui indiquerait un résultat à favoriser. La science de l’informatique regorge de telles méthodes, mathématiquement valides et expérimentalement éprouvées. Les systèmes artificiels n’ont pas forcément intérêt à se construire comme des mécanismes horlogers.
Les mathématiques des probabilités ont fourni des outils inouïs pour réduire cette dualité, permettant de faire des mesures sur les phénomènes aléatoires, de revenir à des résultats déterminés (résultats de sondages par exemple) sur de grandes populations, etc. Mais cette théorie dominante n’est pas la seule voie, on a aussi très minutieusement modélisé le flou (l’« à peu près », mais dont on peut tout de même dire quelque chose), c’est un indéterminisme qui se distingue de l’aléa (le « peut-être »), et on ne calcule pas de la même manière dans un formalisme ou dans un autre (disons pour simplifier qu’on fait des calculs flous en calculant des valeurs maximales et minimales, tandis qu’on fait des calculs aléatoires en ajoutant et multipliant des probabilités). L’existence de voies alternatives est fondamentale pour cette dualité.
Notons une variante plus spécifique aux STIC, la dualité déterministe/non déterministe. Dans ce cadre, on qualifie de déterministe un système qui dans tous ses états possibles a toujours une opération bien déterminée à réaliser (pas toujours la même, bien sûr) ; par exemple, suivre un labyrinthe en serrant toujours à droite. Et on qualifie de non déterministe un système qui en certains de ses états doit choisir une opération parmi plusieurs, sans qu’il soit question de choix aléatoire ; par exemple, suivre un labyrinthe en se fiant à son instinct lorsqu’on rencontre une bifurcation. Imaginons qu’on sache se doter d’un instinct sûr qui fait toujours le bon choix, on sent bien qu’il s’agit d’un énorme avantage pour sortir du labyrinthe. Or, beaucoup de problèmes des STIC sont de cette nature : trouver un plus court chemin, trouver un meilleur appariement, etc. Il semble donc avantageux de se doter d’un tel instinct. En fait, on montre que cet instinct miraculeux ne permettrait pas de calculer plus de choses qu’en son absence, par contre il permettrait de les calculer beaucoup plus efficacement, au point même que certains calculs qui ne sont pas envisageables parce que trop complexes deviendraient faisables. Malheureusement, cet instinct sûr dans tous les cas reste mythique ; on l’appelle d’ailleurs souvent « oracle ». On ne peut donc que l’approcher, et parfois par des méthodes stochastiques, on en revient à… confier au hasard des choix plutôt que de… tergiverser !
3. Quelques dualités dans le contenu des STIC (suite)
Décidable-indécidable
Dans toute branche des mathématiques (ne serait-ce que la bonne vieille arithmétique), il existe une infinité de faits vrais qu’il est impossible de prouver en utilisant la branche des mathématiques en question (cela s’appelle l’incomplétude, et a été prouvé en 1931 par Kurt Gödel). C’est même le cas de l’écrasante majorité des faits. Et comme c’est vrai de toutes les branches des mathématiques, y compris celles qui englobent les autres, la catastrophe est consommée. Que les philosophes nous excusent, mais depuis l’hiver 1931, nous voilà face au fait qu’une chose prouvable n’est pas nécessairement vraie et qu’une chose vraie n’est pas toujours prouvable.
L’indécidabilité est à ajouter au panthéon de ce que la science a démontré être impossible : dépasser la vitesse de la lumière, concevoir un système biologique immortel, remonter avant le Big Bang, refroidir la matière en dessous de -273,15 °C, ou… démontrer que la bonne vieille arithmétique est OK (Gödel a construit une formule de l’arithmétique qui affirme d’elle-même qu’elle est indémontrable).
Et alors, me direz-vous ? C’est grave en pratique ? Une paille : indécidable la quasi totalité des mécanismes de l’informatique, indécidable le fait de prouver qu’un programme ne va pas « boguer ».
L’informatique est face à une terrible dualité : faire des programmes exacts et sûrs, mais dans un cadre décidable limité… ou tenter d’oublier cette barrière et construire artisanalement des logiciels qui « devraient » marcher. La seconde voie a toujours conduit à moyen terme à des échecs. Il y a des conséquences indirectes encore plus limitantes : impossible de réaliser en un temps raisonnable la plupart des mécanismes algorithmiques les plus complexes, donc ceux ayant le plus de potentialités. À oublier, de bien jolis mais bien vains mécanismes qui se sont révélés impraticables à cause de leur complexité. L’informatique se confronte au quotidien à cette dualité, à toujours évaluer ce qui est décidable, calculable mécaniquement – quand on traduit ce concept au niveau des ordinateurs – de ce qui ne l’est pas.
Pourquoi alors ne pas choisir la première voie ? Elle a contre elle que les cadres décidables connus sont trop étriqués ; ils obligent à des contorsions là où le cadre indécidable semble plus naturel. Les deux voies sont exactement caractérisées par deux constructions très classiques de la programmation : la boucle FOR pour la première voie, et la boucle WHILE pour la seconde. La boucle FOR sait dès le début combien de fois elle sera exécutée ; elle ne permet que de programmer des procédures qui terminent tout le temps. La boucle WHILE ne sait pas combien de fois elle sera exécutée, elle attend qu’une condition soit réalisée ; elle permet donc de programmer des procédures qui prennent un temps indéfini, voire infini, que ce soit voulu ou bien une erreur de programmation. On ne peut pas, en général, remplacer toutes les boucles WHILE d’un programme par des boucles FOR, et même quand on le peut, c’est souvent très malcommode. Savez-vous toujours combien de fois vous allez regarder votre montre avant l’arrivée du bus ?
Logiciel-matériel
La dialectique évoquée au sujet des autres dualités s’applique très bien ici encore, mais cette fois-ci ce n’est pas tellement pour comprendre la nature des choses, mais plutôt pour piloter des décisions d’ingénierie. Ce qui semblait redevable d’une solution matérielle à une époque l’est d’une solution logicielle à une autre. Prenons le cas des systèmes d’exploitation. Le matériel fait de plus en plus de choses, mais en même temps il devient de plus en plus programmable. Par exemple, dans les systèmes informatiques des années soixante-dix, le système d’adressage était un gros appareillage matériel (microprogrammé, mais quand même) ; le même service, voire plus, est aujourd’hui rendu par des machines banales, où la part du matériel pour rendre ce service s’est considérablement réduite, et la part du logiciel augmente ; mais en fait, chacun a trouvé sa place dans l’économie actuelle des performances, et dans le même temps d’autres services sont rendus par le matériel. On assiste véritablement à une coévolution du matériel et du logiciel. Et si cette coévolution a un but, c’est bien une programmabilité plus grande des systèmes. On retrouve une évolution de ce genre pour les cartes graphiques. Elles ont tendance à substituer du matériel à du logiciel, mais sont de plus en plus programmables.
Intension-extension
L’intension est la propriété commune à une collection d’individus ; l’extension est la collection d’individus qui répond à une propriété donnée. On est évidemment tout de suite tenté de penser à l’intension d’une extension et à l’extension d’une intension. Quand une intension I et une extension E s’équivalent, c’est-à-dire que I est l’intension de E et vice versa, on a un concept. Déjà les logiciens de Port-Royal au XVIIe siècle voyaient les choses comme cela. Il n’est pas question de choisir entre les deux ; ce sont leurs relations croisées qui permettent de voir émerger des concepts.
Une fois les concepts appréhendés, on peut se demander comment les désigner. Par leur intension ? Mais c’est souvent un peu trop abstrait, et comparer des concepts (C est-il plus général que C’) nécessite de faire des preuves. Par leur extension ? Mais c’est souvent trop fastidieux, voire impossible (par exemple, pour le concept de chien), même si comparer des collections ne semble pas trop difficile.
L’informatique apporte son grain de sel. En extension ou en intension, les deux façons habituelles de désigner un ensemble sont considérées comme extensionnelles. Sera intensionnelle la désignation d’un ensemble par un algorithme qui en énumère les éléments. Là encore, les relations croisées entre extension et intension existent, mais on les appelle correction et complétude. On aboutit ainsi directement à la dualité dénotationnel-opérationnel.
Dénotationnel-opérationnel
Ce sont deux méthodes pour décrire le sens des langages de programmation ou des programmes écrits dans ces langages. La méthode dénotationnelle cherche à décrire un programme par la fonction qu’il réalise ; elle s’affranchit du « comment » il le réalise. La méthode opérationnelle décrit un programme par l’enchaînement des opérations qui se font quand on lui fournit une entrée. Cela peut bien sûr s’exprimer en termes plus abstraits que les opérations de l’ordinateur, mais il s’agira alors d’un ordinateur idéalisé. On peut comparer cette dualité aux deux points de vue historiques sur la nature des fonctions mathématiques. Le point de vue extensionnel décrit une fonction f par son graphe, l’ensemble des points (x, f(x)). Il est donc dénotationnel. Le point de vue intensionnel décrit une fonction par les opérations qu’elle enchaîne, qu’il s’agisse de fonctions élémentaires ou de fonctions algébriques. Il est donc opérationnel.
Les deux points de vue n’ont pas toujours prévalu, et le XIXe siècle a vu comment l’exploitation sans vergogne du point de vue extensionnel a permis de construire des fonctions pathologiques et des paradoxes. Mais l’informatique n’en est plus là, elle est postmoderne ; elle a assimilé Cantor, Church et Scott, et pour elle dénotationnel et opérationnel ne sont que deux façons d’accéder à la nature des langages de programmation et des programmes.
On oppose souvent « infini potentiel » et « infini actuel ». Dans le premier, l’infini réside dans la faculté de toujours pouvoir produire un nouvel élément d’une collection. Par exemple, on peut toujours produire un nombre entier nouveau en additionnant 1 à celui que l’on vient de produire. Dans le second, on considère une collection infinie dans sa totalité : les nombres entiers, les nombres rationnels, les nombres réels, les fonctions des entiers vers les entiers, les décimales de π, les programmes conformes à la définition de Java, etc.
Cantor est le premier mathématicien à avoir exploré l’arithmétique de l’infini actuel. Il a entre autres montré que toutes les quantités infinies ne sont pas équivalentes ; il y autant d’entiers pairs que d’entiers ou de rationnels, mais il y en a beaucoup moins que de fonctions des entiers vers les entiers ou de réels. On dit des premiers qu’ils sont dénombrables, et des seconds qu’ils ne le sont pas. Comme on peut montrer qu’il y a autant de programmes Java que d’entiers, on voit qu’il y en a beaucoup moins que de fonctions des entiers vers les entiers. Conclusion : toutes les fonctions ne sont pas réalisables par un programme.
Toutes les fonctions ne sont pas définissables par un programme ; mais lesquelles le sont ? Plusieurs définitions de fonctions calculables ont été proposées dans le premier tiers du XXe siècle.
Church est l’auteur de l’une d’entre elle, le lambda-calcul. Toutes se sont révélées équivalentes ; en d’autres termes, ce n’est pas le langage de programmation qui détermine ce qui est programmable, au moins en principe. On en déduit une thèse, plutôt une conjecture non démontrable, qui dit que les seules fonctions définissables par un programme sont celles qui sont définissables par un de ces formalismes. L’extrême variété des formalismes proposés rend cette thèse très crédible.
Le lambda-calcul de Church permet de représenter un ensemble dénombrable de termes, mais ignore la distinction entre valeur élémentaire ou fonction, qui sont toutes les deux des termes. En particulier, il permet de coder les nombres entiers comme des fonctions. Cela semble contradictoire avec le résultat de Cantor, qui dit qu’il y a beaucoup plus de fonctions sur les entiers que d’entiers.
Scott propose une notion de domaine qui n’est pas un ensemble au sens de Cantor et où les fonctions sont exactement celles qu’on peut représenter. Il s’agit donc d’un domaine d’interprétation des programmes qui est plus fidèle que ne l’est l’ensemble des fonctions sur les entiers.
Syntaxe-sémantique
Cette dualité est proche de la précédente, en décalant encore une fois le lieu de l’opposition. Dénotationelle ou opérationnelle, la sémantique décrit le sens des langages de programmation et des programmes, et des représentations en général. On peut cependant se demander s’il faut toujours accéder au sens des représentations pour les manipuler ou si on ne peut pas le faire directement sur les représentations, c’est-à-dire de façon syntaxique. Là, un théorème comme celui de Rice (théorie de la calculabilité) nous arrête tout de suite ; pour peu que la représentation ait une puissance suffisante, celle d’une machine de Turing, le sens est définitivement inaccessible au calcul. Il faut donc travailler sur la syntaxe ou sur une approximation du sens.
C’est exactement ce que fait un compilateur ; il traduit un programme source en un programme exécutable et de même sens, mais il ne calcule jamais le sens du programme. Même les analyses dites sémantiques opérées par certains compilateurs ne captent qu’un sens très approximatif.
La dualité syntaxe-sémantique se retrouve aussi en logique formelle, où les méthodes de preuve qui s’automatisent bien sont les méthodes syntaxiques. Ce qui ne rend pas futile la quête du sens. On a toujours besoin d’avoir un point de vue sémantique ; le « même sens » de la définition de ce que fait un compilateur est central pour qualifier la correction d’un compilateur, mais la référence au sens est externe au compilateur.
4. Quelques dualités dans les enjeux des STIC
Parce que la société s’en est emparée dans maint débat public, il est plus facile d’évoquer les dualités qui apparaissent non plus dans le contenu des STIC mais dans leurs enjeux, technologiques ou sociétaux. Choisissons-en deux, là encore en les effleurant, pour simplement permettre de se glisser dans leurs interstices afin de découvrir d’autres dualités.
Retour sur la dualité logiciel-matériel
Au nombre des dualités qui concernent les enjeux des STIC, la dualité logiciel-matériel doit être réabordée. Les cinquante dernières années en témoignent facilement. Si un logiciel ne pourrait jamais tourner sans un matériel suffisamment puissant, un ordinateur « nu » (sans logiciel pour le commander) n’existe pas. Devant l’évolution extrêmement rapide des technologies liées aux microprocesseurs, on a cherché à formuler des hypothèses sur le progrès de leurs performances. Ainsi Gordon Moore, cofondateur de la société Intel, avait affirmé en 1965 pour une conférence de presse, que « le nombre de transistors par circuit de même taille va doubler tous les 18 mois » [jusqu’en 2015]. Cette affirmation a marqué les esprits, puisqu’elle s’est vérifiée à peu près au niveau des performances générales des matériels informatiques, même si les limites semblent proches (par exemple au niveau thermique) ou si les performances effectives ne sont pas forcément liées aux chiffres annoncés. Mais ce qui est bien moins visible, c’est que les performances des outils et des composants logiciels ont suivi une expansion similaire, leur complexité aussi. Mais dire que le logiciel se développe jusqu’à ce qu’il soit limité par les performances du matériel est partiellement inexact. Le logiciel se développe jusqu’à ce qu’il soit limité par les formalismes et les fondement théoriques qui ont permis de le spécifier : la barrière est effectivement scientifique, en tout cas tout autant scientifique que technique. Comme cela apparaît en regardant les autres dualités.
Un exemple précis le montre bien. Calculer les décimales de π est une quête ancienne, qui a connu d’énormes progrès durant les dernières décennies. Mais ce progrès n’est pas dû qu’à l’accroissement des performances du matériel. Il est surtout dû à la découverte de nouveaux algorithmes, eux-mêmes dus à une meilleure connaissance du nombre π.
Sciences ou technologies de l’information ?
Comparées à la physique ou à la biologie, les STIC sont-elles vraiment liées à « la » Science ou s’agit-il juste de développement technologique ? Cette dualité sciences-technologies est le meilleur atout des STIC : car la réponse est : « justement, les deux ». Il y a des systèmes d’information naturels et artificiels, les premiers sont des systèmes biologiques considérés a priori comme immuables jusqu’à un passé récent, les seconds sont conçus à façon. Ce dernier élément permet donc d’expérimenter grandeur nature, et sans aucune limite, les modèles informatiques proposés. C’est aussi un couperet expérimental très sévère, car contrairement à une discipline (par exemple l’astronomie) qui n’a finalement accès qu’à une partie du matériel expérimental qui lui permet à un instant donné de vérifier une hypothèse, les sciences de l’information, elles, ont de facto à leur disposition des outils d’expérimentation à grande échelle et très concrets (les applications technologiques) pour valider ou invalider leurs hypothèses. À l’inverse, cet énorme univers technologique lance en permanence des défis scientifiques passionnants à l’informatique théorique et aux mathématiques appliquées, qui sont les deux disciplines scientifiques au cœur des STIC. C’est nourries de cet aller-retour que les STIC sont aujourd’hui les disciplines scientifiques dont le développement est le plus accéléré.
Systèmes biologiques et artificiels
Informatique bio-inspirée ou modèles informatiques d’une réalité ? La modélisation des systèmes artificiels ou celle des systèmes biologiques ne peuvent être confondues. Prenons l’exemple de robots et d’animaux : les modèles de connaissance des mécanismes étudiés en neurosciences diffèrent des modèles de fonctionnement utilisés en robotique, les deux types de systèmes étant si différents. Il n’y a pas non plus lieu de développer une robotique plus ou moins anthropomorphique : on fera sûrement mieux en se libérant des contraintes biologiques. En revanche, dans les deux cas, les systèmes doivent accomplir des tâches semblables et émettre des hypothèses similaires sur les caractéristiques de l’environnement qu’ils perçoivent, à partir d’informations sensorielles physiquement voisines. C’est donc bien au niveau de la modélisation que les deux disciplines se retrouvent. Et cette synergie permet de mieux comprendre les phénomènes de perception biologique et d’améliorer les algorithmes de perception robotique. À condition de ne pas se tromper de cadre pour cette dualité.
Pour conclure
Il faudrait aussi citer des dualités qui ne concernent pas uniquement les STIC, mais plutôt les liens entre ces sciences et la société. Dualités dans le domaine économique, par exemple entre croissance libérale ou développement durable, les technologies de l’information ayant un impact primordial dans ce domaine. Une société informatisée de manière optimale pourrait effectivement rationaliser sa consommation d’énergie, ses transports, etc. Dualité dans le domaine social, en ce qui concerne les problématiques d’un société à deux vitesses, entre ceux qui accèdent aux technologies de l’information et ceux qui en sont socialement ou médicalement exclus, ou, plus insidieusement, fracture avec ceux qui utilisent les technologies de l’information mais à qui il n’a pas été donné de moyens pour les maîtriser, qui y sont donc soumis. Il ne faut surtout pas croire que ces débats sont tabous, parce qu’uniquement partisans ou bassement politiciens. Ces débats sont essentiels, ils doivent être menés pas des spécialistes des sciences humaines et sociales, et les scientifiques des STIC y contribuent par leur prise de conscience ainsi qu’en amenant des faits au débat. Ces dualités dépassent donc le cadre de ce qui sera trouvé ici, mais nous nous devions de les citer.
Newsletter
Le responsable de ce traitement est Inria. En saisissant votre adresse mail, vous consentez à recevoir chaque mois une sélection d'articles et à ce que vos données soient collectées et stockées comme décrit dans notre politique de confidentialité
Niveau de lecture
Aidez-nous à évaluer le niveau de lecture de ce document.
Votre choix a été pris en compte. Merci d'avoir estimé le niveau de ce document !
Olivier Ridoux
Professeur d'informatique à l'Université de Rennes, chercheur à l'IRISA.