(Article destiné à la revue EpiNet de l'association « Enseignement public & Informatique »)
De quoi parle-t-on lorsque l'on dit qu'il faut « enseigner l'informatique » ? Que veut-on enseigner, au juste ?
Certains sont tentés de se limiter à l'art de la programmation, pour lequel la référence est l'ouvrage monumental de Donald Knuth1 – et il est vrai que l'algorithmique pourrait, à elle seule, nourrir un programme étalé sur plusieurs années de cours suivies par une vie entière de recherche.
Mais l'informatique se réduit-elle aux algorithmes ? Non, bien sûr, car l'algorithmique n'est que l'une de ses couches. Elle en comporte d'autres que l'on peut découper de diverses façons : on peut par exemple distinguer la couche physique des processeurs, mémoires et réseaux ; la couche sémantique où sont définies les données ; la couche « processus » où l'informatique rencontre le comportement des êtres humains ; etc.
L'informatique est d'ailleurs essentiellement orientée vers l'action : comme le disent Abelson et Sussman2 elle répond à la question « how to », « comment faire », alors que les mathématiques répondent à la question « what is », « qu'est-ce que c'est » en déployant ce qu'impliquent des définitions. Un enseignement qui négligerait la relation entre l'informatique et l'action, c'est-à-dire l'informatisation, serait artificiel.
Il suffit pour s'en convaincre de penser à la qualité des données. La règle « garbage in, garbage out » est implacable : si les données sont mal définies (incohérentes, polluées par des synonymes et des homonymes, etc.), l'algorithme le mieux conçu ne peut rien fournir qui vaille.
Or on ne peut définir les données de façon pertinente que si l'on a défini d'abord l'action que l'on veut réaliser, puis désigné les êtres réels qu'elle concerne et sélectionné les attributs qu'il convient d'observer. Pour construire un modèle de données il faut donc se poser la question « que voulons-nous faire », point de départ de l'ingénierie sémantique.