De quoi l'informatique est-elle la science ?
"Dans quoi travaillez-vous ?" "Dans l'informatique." "Ah, un technophile, quoi. Sans la physique et l'électronique, vous n'auriez rien pu faire." "Pas exactement, l'informatique, c'est une science."
"De quoi l'informatique est-elle la science ?"
C'est une question qui peut venir à l'esprit quand on discute avec un professeur de mathématiques, un ingénieur informatique, ou même mamie Josette le dimanche à table. Et bien qu'elle porte à sourire, il faut y répondre avec un peu de sérieux -- sinon, comment pourrait-on justifier nos longs travaux de recherche enfermés dans des laboratoires ?
La question peut porter à sourire, mais il faut y répondre.
Citons, à l'inverse, Hal Abelson : "L'informatique n'est pas vraiment à propos des ordinateurs -- de la même façon, la physique n'est pas uniquement focalisée sur des accélérateurs de particules, la biologie ne concerne pas les microscopes et les boîtes de Pétri... et la géométrie ne concerne pas vraiment l'utilisation d'instruments d'arpentage. Maintenant, la raison pour laquelle nous pensons que l'informatique est à propos d'ordinateurs est à peu près la même raison pour laquelle les Égyptiens pensaient que la géométrie concernait les instruments d'arpentage : lorsqu'un domaine est à ses début et que vous ne le comprenez pas vraiment très bien, il est très facile de confondre l'essence de ce que vous faites avec les outils que vous utilisez."
Science appliquée à la machine ?
La principale objection, à mon sens, au traitement de l'informatique comme une science, vient du fait que l'on associe trop souvent "informatique" et "ordinateur". Encore que, contrairement à nos amis anglophones, le mot traduit traitement automatique (infomation + automatique), et non science des ordinateurs (computer science) - bien que le terme informatics s'applique aussi. Mais c'est une objection sans réel fondement, parce que l'informatique étudie bel et bien des systèmes d'information, qu'ils soient artificels (comme les ordinateurs) ou naturels.
Même si l'informatique était limitée à l'application d'algorithmes sur un ordinateur, cela ne suffirait pas à ce que l'objection fasse mouche : une telle science serait utile à d'autres disciplines. On peut citer la bioinformatique ou la physique fondammentale, qui appliquent leurs théories sur des modèles calculatoires. On obtient alors des "simulations" très proches du comportement que l'on souhaite étudier - cela n'en fait pas moins quelque chose de "purement informatique" ou de "purement construit".
Plus une technique qu'un art
On peut y objecter également que, dans les années 1950, les jeunes pionniers de l'informatique voyaient dans ce nouvel élément naissant une véritable révolution, mais qu'ils se sont tous trompés, et que le terme correct serait technologie de l'information, ou I.T. en anglais : on ne voit jamais que de l'art ou de la technologie émerger, jamais de la science. Tout au plus, les éléments "scientifiques" seraient des mathématiques appliqués, voire un peu d'électronique et de physique si besoin.
Pour écarter cette objection, il nous faut nous concentrer sur "la question fondammentale de l'informatique". Cette question, définie dans Computing as a discipline (1989) est "Qu'est-ce quii peut être automatisé de façon efficace ?". Et en effet, en informatique, nous faisons une étrange harmonie de science, d'ingénieurie et de mathématiques... mais la base reste fidèle à la définition baconnienne de la science : faire une hypothèse, la tester, conserver les modèles explicatifs corrects pour obtenir une explication du monde. C'est la base de la discipline de l'informatique théorique.
Science de quoi, alors ?
On peut s'amuser à discuter la notion de science, et faire émerger la distinction "science fondammentale" et "science appliquée", ou à différencier "science dure" de "science humaine" (encore que, certains diront que la compréhension des contraintes imposées à un projet dépend plus de la psychologie que d'une analyse froide). Et nous avons des exemples classiques de vision "informatique" : dans les sciences cognitives, par exemple, l'hypothèse principale est de montrer qu'un comportement "intelligent" émerge d'un processus de traitement de l'information dans un système nerveux (ou un cerveau) - l'implémentation de ce comportement sur un ordinateur permet de valider aussitôt l'expérience. Dans le cas de la recherche en processus de conception, on s'intéresse par exemple à détecter ce qui occasionne les erreurs et les défauts, pour obtenir des modèles et des méthodes qui permettent de les éviter. L'informatique expérimentale, notamment en algorithmique, calcule la mesure actuelle d'un algorithme sur des ensembles de données pour vérifier les prédictions temporelles et mémorielles - dans l'espoir éventuel d'avoir de meilleurs outils que l'approche asymptotique. Et que dire du champ de l'IHM (interaction homme-machine) qui étudie les rapports entre l'humain et la façon dont nous interagissons avec un processus informatique ? On est en plein dans ce qui est nécessaire pour une "science exacte" !
Mais alors, quels sont les fondamentaux de l'informatique ? À quelles lois (ou questions) de la nature peut-on "raccrocher" les différentes études de l'informatique ?
C'est difficile - mais tout à fait faisable. De même que la physique est divisée en "thermodynamique", "étude du solide", "électricité" et autre sous-domaines, nous devons considérer une approche "transversale" des questions à se poser. Ainsi, pour reprendre la classification de P. Denning, on peut distinguer les sous-disciplines suivantes :
- Automatisation:
-
Comment peut on passer le test de Turing ? Est-ce réellement quelque chose d'utile ? Quelles sont les limites sur les systèmes experts ? Comment simuler une tâche cognitive ?
- Calculabilité:
-
Tous les problèmes sont-ils solubles ? Tous les problèmes sont-ils calculables ? Comment optimiser la compilation ? Quels sont les algorithmes optimaux pour les problèmes les plus usuels ?
- Communication:
-
Peut-on transmettre une information avec moins de signes, sans perte ? Comment détecter s'il y a une erreur de transmission ? Comment échanger une information sensible dans un mileu public ?
- Conception:
-
Comment éviter qu'un système masque de l'information à l'utilisateur ? Comment rendre compte des éléments d'un système selon plusieurs niveaux de conception ?
- Interaction:
-
Comment éviter la famine (dans les processus) ? Comment prédire au mieux le temps de réponse et la capacité de traitement ? Comment authentifier quelqu'un sans (trop) de complexité ?
Pas convaincu ?
Vous n'êtes pas le seul : une telle conclusion n'est pas nécessairement partagée par les informaticiens. Certains, comme Abelson, Sussman et Dijkstra, venant d'un monde mathématique, préfèrent rattacher l'informatique aux mathématiques, refusant le terme de "science". Certains technophiles, comme Zuckerberg ou Graham, n'aiment pas le terme de "science", et y préfèrenet le terme de "art" ou de "technologie". Mais à mon sens, l'apparition de l'informatique (à nouveau, enfin) dès le plus jeune âge, en matière scolaire ou en tant qu'hobby, amène peu à peu une remise en question - la place centrale de l'informatique aujourd'hui pousse les informaticiens à expérimenter de plus en plus, vers une perception plus "scientifique" du milieu.