Les quelques derniers billets de ce blog qui avaient un contenu
scientifique (notamment celui-ci
et celui-ci) tournaient autour de
l'informatique théorique. (Et je compte en écrire encore plusieurs.)
Je ne sais pas si le lecteur non spécialiste aura vu la différence
avec des maths. Je ne sais pas si je vois une différence
avec des maths. Après tout, j'ai rangé ces billets dans la
catégorique « maths » (pas que le mécanisme de catégories sur ce blog
serve à quoi que ce soit, et c'est peut-être surtout que j'avais la
flemme de créer une nouvelle catégorie, mais quand même, c'est une
info) ; alors que par le passé, j'ai écrit des entrées sur la physique
théorique (comme celle-ci
ou celle-là) et je les ai rangées
dans une catégorie différente. Peut-être même qu'avec assez de
mauvaise foi on pourrait prétendre que la correspondance de
Curry-Howard affirme qu'il n'y a pas de différence entre maths et info
(mais soyons clairs, ça demande une bonne dose de mauvaise foi,
justement).
Ce n'est pas la première fois que je médite sur cette question à
laquelle je n'ai pas vraiment de réponse : qu'est-ce que c'est
que l'informatique ? — et secondairement, quelle
position a-t-elle par rapport aux maths ? et cette position
est-elle analogue à celle de la physique ?
(Je précise que ce billet, qui est une méditation décousue et sans
véritable point d'arrivée, se veut non-technique, i.e., lisible par
tout le monde, mais que fatalement je vais être amené à faire des
remarques techniques çà et là : si on ne sait pas de quoi je parle, on
peut juste ignorer ces passages, ils ne sont là que pour appuyer ou
illustrer mes propos, ils n'en sont pas le cœur. Si vous n'avez
vraiment pas le temps de lire, regardez au moins
le dernier paragraphe
pour un résumé de ce que j'essaie de dire.)
☞ Science informatique et génie informatique
Mettons-nous d'accord sur le fait que je parle de l'informatique en
tant que science : computer science
en anglais,
par opposition à computer engineering
, ce dernier
étant le génie informatique (lui-même au sens d'ingénierie, pas au
sens du fait d'être génial…), comme on peut parler de la physique
comme science par opposition au génie mécanique / électrique /
électronique / etc. Mais la frontière entre la science et le génie
n'est pas super claire non plus, et peut-être que ça fait aussi partie
de la question : en première approximation, une science est une
discipline qui cherche à élargir nos connaissances tandis que le génie
cherche à appliquer des connaissances pour résoudre des problèmes,
mais évidemment ce n'est pas toujours net, et il y a des sciences
appliquées (que je range quand même parmi les sciences) qui montrent
que la limite est assez floue.
Néanmoins, j'aime bien souligner
que ce n'est pas parce qu'une limite est floue qu'elle n'existe pas :
entre l'étude des modèles du λ-calcul et l'optimisation d'un jeu vidéo
il y a bien une différence d'approche, ce qui se mesure ne serait-ce
qu'empiriquement au modèle économique qui paye les gens qui font l'une
et l'autre activité, et il me semble que cette différence est assez
analogue à celle entre, pour ce qui est de la physique, l'étude de la
théorie des solutions exactes de l'équation d'Einstein et
l'optimisation d'un moteur de moto. (Et je devance l'accusation qu'il
y aurait là un jugement de valeur de ma part : d'une part je mets ma
vie entre les mains des gens de chez Yamaha qui conçoivent des moteurs
de moto, d'autre part j'avoue platement que programmer un jeu vidéo ou
concevoir un moteur de moto est quelque chose qui me semble
complètement hors de mes capacités à la différence de l'étude des
solutions exactes des équations d'Einstein ou des modèles du λ-calcul,
que j'ai au moins pratiquées de loin.)
Alors maintenant, si la physique est l'étude du monde matériel, ou
quelque chose qui y ressemble, l'informatique, c'est quoi ?
☞ L'informatique n'est pas la science
des ordinateurs
La réponse la plus évidente serait que c'est la science des
ordinateurs
. À ça il faut répondre par une citation souvent
attribuée
à Dijkstra,
mais comme toutes les meilleures citations sont
apocryphes, elle
n'est probablement pas de lui :
Computer science is no more about computers than astronomy is about
telescopes.
Les ordinateurs ne sont que le moyen d'étude de
l'informatique, en même temps que son application : ils ne sont pas
son objet.
Le grand public a peut-être dans l'idée qu'un chercheur en
informatique cherche à rendre les ordinateurs plus rapides. (Bon, à
vrai dire, le grand public a peut-être dans l'idée qu'un chercheur en
informatique est un pro en Excel ou sait réparer une imprimante qui
dysfonctionne, et ce sont des idées à ranger avec celle du
mathématicien comme quelqu'un qui passe ses journées à faire des
calculs immensément compliqués : juste naïves, mais révélatrices d'un
triste manque d'information sur le fonctionnement de la science.) Ce
n'est pas complètement faux, bien sûr, il y a des informaticiens qui
cherchent effectivement à rendre les ordinateurs plus rapides.
D'autres qui cherchent à les rendre plus sûrs. Mais ce sont un peu
les arbres qui cachent la forêt.
Bon, mais alors c'est quoi, l'objet de l'informatique, si
ce n'est pas les ordinateurs ?
À vrai dire je ne sais pas bien quoi répondre. Ma première
approximation de la réponse (peut-être désespérément vague)
serait : l'informatique est la science de l'information, des
données, de la communication, de l'automatisation et du
calcul.
☞ La physique et l'informatique
vis-à-vis des maths
L'ennui, si on dit ça, c'est que ça ressemble beaucoup à des maths.
Bon, à ce stade, il faut peut-être aussi que je tente de définir les
maths, et je suis tout autant embarrassé : c'est essentiellement aussi
naïf de s'imaginer que les maths sont la science des nombres que que
l'informatique est celle des ordinateurs, mais là aussi, on est en
droit de se demander de quoi elles sont l'étude, alors. Je dirais
bien l'étude des structures abstraites, mais on m'objectera que ça
ressemble trop à la philosophie, ça. En tout cas, l'information,
les données, la communication, l'automatisation et le calcul
, ça
ressemble beaucoup à des notions abstraites que les maths pourraient
étudier. Et de fait, il y a une intersection énorme entre les maths
et l'informatique théorique ; mais intersection
ne signifie
pas inclusion
c'est un peu le cœur de mon propos.
Peut-être parce qu'elle est née plus récemment que la physique,
l'informatique semble avoir une crise identitaire vis-à-vis des
mathématiques un peu plus compliquée que celle de la physique. Crise
identitaire qui peut signifier qu'elle tarde à prendre son
indépendance, ou au contraire prendre la forme d'une volonté excessive
de « tuer le père ».
Je pense qu'informatique et physique occupent une place
relativement analogue (voire, symétrique) par rapport aux
mathématiques. Les deux sont à la fois une inspiration pour les
mathématiques et un domaine d'application de celles-ci, et, dans leur
partie la plus théorique, elles intersectent largement les
maths. (Elles ont aussi, dans leur incarnation moderne,
émergé des mathématiques : Turing était mathématicien au moins autant
qu'informaticien, comme Newton était mathématicien au moins autant que
physicien.) Les maths qui intéressent l'informatique (par exemple la
logique et l'algèbre discrète) et les maths qui intéressent la
physique (par exemple la géométrie différentielle et la théorie des
groupes continus) sont généralement distinctes, mais il y a de grands
domaines qui intéressent les deux (comme l'analyse de Fourier ou les
probabilités).
☞ Une digression sur mon papa physicien
Je devrais peut-être faire une digression à ce sujet pour parler
de mon papa, qui était physicien
théoricien, et faisait de la physique qui pourrait franchement être
considérée comme des maths
(genre, ça),
mais qui avait une relation difficile avec les maths et les
mathématiciens (il aimait bien citer Feynman qui comparait la rigueur
mathématique à la rigor mortis ; il faudrait que
je vérifie si elle n'est pas apocryphe aussi celle-là, mais en tout
cas ça montre que si son sujet d'étude était très mathématique, son
approche n'était pas vraiment celle d'un mathématicien).
Mon papa était en outre persuadé que la physique était la
source d'inspiration des maths, et que toutes les idées mathématiques
naissaient soient de la recherche d'applications à la physique soit de
généralisations assez évidentes de ça. J'aurais dû lui rétorquer
plein de choses quand il me disait ça (par exemple, parmi les choses
qu'il aurait dû bien savoir en tant que relativiste, que la géométrie
riemannienne était là bien avant qu'Einstein n'en ait besoin pour
décrire un espace-temps courbe), mais je pense qu'il reflétait là
surtout son propre biais d'intérêt dans les domaines qu'il connaissait
des mathématiques (à chaque fois que je lui ai parlé de corps de
caractéristique p>0, par exemple, il haussait les yeux
au ciel comme si c'était vraiment une lubie saugrenue d'étudier des
choses aussi déconnectées du monde réel dans lesquelles en
ajoutant p fois le nombre 1 on retombe sur 0). C'est
intéressant, donc, parce que mon père ne semblait pas du tout avoir
considéré cette possibilité que l'informatique soit, de façon analogue
à la physique, elle aussi une source féconde d'inspiration en même
temps que de débouchés pour les maths. Mais c'est aussi intéressant
parce que sa relation compliquée avec les maths, qui dans son cas
était plutôt idiosyncratique, est quelque chose que je crois retrouver
de façon collective dans des tentatives de trouver un démarquage entre
les maths et l'info pour des disciplines qui sont à cheval entre les
deux.
☞ L'enseignement de l'informatique comme
science
Il me faut sans doute d'abord dire un mot de l'enseignement. Ne
sachant pas comment ça se passe ailleurs, je vais évoquer le cas de la
France.
Malgré N timides tentatives par le passé, n'ayant jamais
vraiment abouti, ce n'est que tout récemment (~2018, peut-être ?) que
l'enseignement secondaire français s'est doté, sous le nom
de numérique et sciences informatiques
(NSI), d'un
véritable enseignement (optionnel…) de l'informatique. (Cela me
semble impossiblement tardif, mais je crois qu'il vaut mieux que je ne
regarde pas à quel moment historique on a commencé à enseigner la
physique dans les lycées français, parce que j'ai peur de faire une
attaque.) N'ayant pas de contact direct avec le monde de
l'enseignement secondaire, je ne peux juger que
par les
programmes, qui sont un peu bizarres (p.ex., l'enseignement
du SQL me semble vraiment bizarrement précis à côté de
généralités très vagues sur d'autres plans) mais néanmoins
intéressants par certains côtés. Donc je ne vais pas en dire
plus.
☞ La génération Z et l'informatique
Même si ce n'est que tangentiel à mon propos, comme c'est quelque
chose qui revient régulièrement si on évoque la nécessité de
l'enseignement de l'informatique au lycée, il faut que je dénonce un
lieu commun, qui dit quelque chose comme ceci :
❝Les jeunes, de nos jours, ils n'ont pas besoin qu'on leur enseigne
l'informatique, parce qu'ils ont grandi avec les ordinateurs.
D'ailleurs, ils en savent certainement plus que leurs profs de
lycée.❞
Il y a tellement de choses fausses là-dedans que je ne sais pas
bien par où commencer. Par le fait que l'informatique n'est pas la
science des ordinateurs ? Je l'ai déjà signalé. Mais je pourrais
aussi remarquer le ridicule de l'idée analogue que parce qu'on a tous
grandi avec les voitures thermiques on saurait expliquer comment
fonctionne un moteur à
explosion[#].
[#] Je serais d'ailleurs
sincèrement curieux de savoir quelle proportion de la population prise
au hasard dans la rue serait capable d'expliquer approximativement le
principe d'un moteur à explosion (disons par exemple, de nommer les
quatre phases du cycle d'un moteur à quatre temps). Mais
j'ai déjà souligné l'incongruité du
fait que ce genre de connaissances ne soient pas considérées comme
faisant partie de la culture générale.
Un autre problème avec ce cliché est que, en fait, la
génération qui a grandi avec les ordinateurs,
c'est plutôt la mienne et
la suivante ; la génération de ceux nés au XXIe siècle, ils
ont grandi avec des smartphones (et autres interfaces
graphiques complètes), et c'est bien différent. Or les interfaces
graphiques comme celles des smartphones, comme leur but était de
mettre l'outil entre les mains de tout le monde en évitant que
Monsieur Toutlemonde ait à connaître quoi que ce soit du
fonctionnement interne de la machine, elles ont tout fait pour cacher
(dans
des skeuomorphes
plus ou moins heureux) la moindre chose qui ressemble à de la
programmation. En même temps que le monde informatique derrière est
devenu de plus en plus compliqué par l'empilement de couches séparant
l'utilisateur du matériel (et ceci vaut aussi pour les
vrais PC, pas seulement pour les smartphones), l'accès de
l'utilisateur à ces couches et devenu de plus en plus compliqué.
Donc je ne pense pas du tout qu'un jeune né en 2000–2010
soit automatiquement doué pour la programmation, encore moins pour
comprendre la notion abstraite de machine de Turing, pas plus
que quelqu'un qui a grandi avec les voitures modernes — par opposition
à la Ford modèle T — est automatiquement doué pour la mécanique auto,
encore moins pour expliquer la thermodynamique
du cycle
d'Otto.
(Loin de moi l'idée de faire mon vieux con en mode c'était mieux
âââvant
, hein ! Je n'ai rien contre les interfaces graphiques pas
plus que je n'en ai contre les voitures modernes. Si on n'est pas
obligé de taper mkdir
pour créer un répertoire, c'est
très bien. Le problème c'est plutôt quand on ne peut même
pas taper mkdir
pour créer un répertoire. Je ne suis pas
non plus en train de reprocher à la génération Z de ne rien savoir
faire en-dehors de se servir de leur smartphone — autre cliché à la
con que je déteste : je dis juste qu'il ne faut pas automatiquement
supposer que grandir avec un smartphone rend ipso facto
compétent pour se servir d'un ordinateur, encore moins pour comprendre
le fonctionnement d'un ordinateur ou la théorie derrière.)
☞ L'informatique en prépa et à l'agreg
S'agissant de la formation des futurs ingénieurs (i.e.,
post-baccalauréat), les classes préparatoires scientifiques françaises
ont tout récemment (à la rentrée 2022) vu la création d'une
filière MPI
(pour maths, physique,
informatique
), qui ouvre un véritablement enseignement de
l'informatique en tant que science en classes prépa, à côté des
filières MP (maths-physique) et PC
(physique-chimie). Un de mes collègues a d'ailleurs participé à
l'écriture des
programmes de cette filière (du coup, la partie sur les automates
finis est fortement inspirée d'un cours que je donnais sur ce sujet à
Télécom[#2] et dans lequel ce
collègue intervenait). Je suis certainement favorable à cette
évolution, et au fait que l'informatique soit traitée comme une vraie
manière autonome et pas une sorte d'excroissance des maths ni une
distraction proposée en marge des cours et visant uniquement
les applications dans d'autres domaines. Pour autant, je
pense qu'il faut aussi se méfier de la fausse impression que cela
pourrait causer dans l'esprit des préparationnaires qui risquent de
croire faussement que parce que c'est de l'informatique ce n'est pas
des maths (cf. ce que je dis plus bas sur la grande intersection entre
ces domaines) : ils risquent du coup de se construire une image
mentale trop exiguë des mathématiques (limitée en gros à l'algèbre
linéaire et à l'analyse classique, ce qu'on leur enseigner en cours de
maths), alors qu'en fait de grands pans de ce programme informatique
auraient très bien pu être enseignés dans un cours de maths.
[#2] Cours
dont voici
les notes
et ici
une vidéo des séances de 2020–2021. À ce sujet,
en avril 2021 on m'a demandé
d'assurer un cours sur le sujet destiné aux profs de prépa (et qui va
donc un peu au-delà du
programme). Mes
slides sont ici, et les vidéos de l'exposé lui-même
sont ici
pour les 2h du matin
et ici
pour les 2h de l'après-midi.
Cette création d'une filière MPI en prépa scientifique
fait suite de peu à la création d'une agrégation d'informatique
(premier concours à l'été 2022). Auparavant, il y avait eu une option
informatique à l'agreg de maths (option proposée à l'écrit entre ~1990
et ~1997 je crois, puis à l'oral entre ~2006 et 2022 ; entre les deux
il n'y avait rien). Il y a certainement lieu de s'interroger sur la
question de savoir s'il était idéal d'avoir une agreg complètement
différente plutôt qu'une option, ou une solution intermédiaire (une
question analogue se pose certainement aussi sur le rapport entre
physique et chimie, ou entre biologie et géologie), ou d'ailleurs s'il
était évident que la création d'une agreg d'informatique dût entraîner
la suppression de l'option informatique de l'agreg de maths.
(Bizarrement, en prépa, il continue à exister une option info en
filière MP, qui est distincte de la
filière MPI : c'est confusant, pas forcément super
cohérent, et un peu compliqué à gérer en aval dans l'enseignement,
mais je suis tenté de croire que cette multiplicité des choix a des
vertus.)
Sans vouloir suggérer que c'est un mauvais choix scientifique ou
pédagogique (au contraire), je pense que ces décisions relèvent
largement d'une décision d'affirmer l'indépendance de l'informatique
comme discipline scientifique à part entière, et de ne pas laisser
l'idée que c'est une sorte d'appendice des mathématiques.
☞ Le problème des limites entre
sciences
Au-delà de l'enseignement, parlons un peu de la science pour la
science.
Les frontières entre disciplines sont, évidemment, un peu
arbitraires. D'abord, je crois fermement à l'unité
fondamentale de tous les domaines du savoir humain,
c'est-à-dire au moins que je suis sûr qu'on peut passer de proche en
proche de la théorie des cordes à la philologie grecque, ou de la
biochimie à la musicologie, sans jamais rencontrer de barrière nette.
Si cela peut paraître farfelue, je rappelle au passage qu'un concept
très important de l'informatique théorique (à l'intersection avec les
maths), la notion
de grammaire
hors contexte a été inventé par un
linguiste[#3] (d'ailleurs
peut-être plus connu pour son activisme politique), Noam Chomsky.
[#3] Je sais que
l'importance de cette notion en linguistique (ou de façon générale
toute la linguistique chomskienne, et la notion de grammaire
universelle
) est assez controversée. Je m'abstiens explicitement
de me prononcer sur ces questions sur lesquelles je suis incompétent.
Mais quoi qu'on en pense dans le cadre de la linguistique, en
informatique théorique c'est une notion fondamentale.
Mais je ne veux pas tomber dans le sophisme des sorites que je ne
cesse de dénoncer : ce n'est pas parce que la frontière est floue
et/ou largement arbitraire qu'elle n'existe pas, ou qu'on n'a pas le
droit de discuter le meilleur endroit où la faire passer.
Les limites administratives entre sciences causent toutes
sortes de maux de tête, par exemple pour les candidats à un
poste académique dont la spécialité est proche d'une de ces frontières
arbitraires : a priori on pourrait imaginer que cela tourne à
leur avantage (par exemple, quelqu'un qui fait quelque chose à cheval
entre les maths et l'info pourrait candidater aussi bien en maths
qu'en info), mais dans la réalité c'est presque toujours un handicap
(il y aura toujours quelqu'un pour vous reprocher de faire des choses
trop informatiques quand vous candidatez en maths et de faire des
choses trop mathématiques quand vous candidatez en info, avec le
prétexte que vous auriez dû candidater dans l'autre domaine ; je pense
que ceci vaut à chaque fois qu'il y a une interface de ce genre : sur
le papier tout le monde dit du bien de la transdisciplinarité, mais
dans la réalité ça a tendance à nuire aux candidats de ne pas rentrer
dans les bonnes petites cases). Mais ce n'est pas tellement de ça que
je veux parler.
Donc, l'informatique fait-elle partie des mathématiques ? Une
partie de l'informatique fait-elle partie des mathématiques ? Où est
le meilleur endroit pour tracer la limite ?