Les deux facettes du codage : le «D»

Quand on parle de l'ABCD de l'informatique on arrive rapidement au «C» comme codage.

A ? comme Algorithme !

B ? comme … ah ben comme Binaire, pardi.

C ? comme … Codage

et D ?

D ? … comme Décoder le Codage.

 «Décoder le Codage ?» Cela veut dire très simplement dire comprendre comment marchent ces machines ( ces robots/ordinateurs/tablettes/…) que l'on dit programmables.

Gérard Berry nous l'explique brièvement de manière lumineuse en reprenant la belle métaphore de Maurice Nivat sur Outils, machines et informatique. Nous, prenons un peu plus de temps pour comprendre et …

… allons dans une cuisine. Faire un quart-quart à l'orange. Oui c'est facile : on prend de la farine, des oeufs, du beurre et du sucre, à parts égales, on ajoute le parfum d'orange et on met au four une demi-heure. Bien. Même un informaticien saura faire ça.

Mais ? Que se passe t'il si nous introduisons cette recette dans un ordinateur ou un robot . . enfin une machine quoi ? Et bien il ferait exactement ce que nous lui avons commandé. Il mélangerait la farine, les oeufs, le beu… Ah ! Les oeufs : avec les coquilles, personne ne lui a dit de les retirer. Les humain-e-s savent ce qu'est un oeuf, ce mot a du sens pour eux, elles ou ils comprennent le contexte dans lequel on parle. Mais . . une machine, voyons ? Quelle chance aurait-elle de savoir que (contrairement aux batailles d'oeufs dans les cantines de potaches) on doit séparer les coquilles ? De plus, bien plus precisément qu'un humain, le gateau sera mis au four 30 minutes, 0 seconde, 0 dixième, … sans allumer le four. Puisque cela n'a pas été dit explicitement.

En bref : un ordinateur ou un robot, … c'est «très con». Ce mot d'argot de la langue française ne dit pas que le sujet est «sans intelligence» mais qu'il agit sans discernement, sans comprendre le contexte, san devier ce qui reste implicite. De l'intelligence mécanique quoi ! Et non pas je ne sais quelle «intelligence artificielle» (qui dans l'imaginaire collectif renvoit à la science-fiction).

Alors à quoi bon détailler tout cela ? Cela aide à comprendre quelle est la différence entre mon intelligence et celle d'une machine. La machine «calcule de manière fabuleusement rapide et efficace mais reste totalement dénuée de pensée». Qui ne comprend pas la différence entre l’intelligence mécanique et l’intelligence humaine, ne sait pas se positionner correctement par rapport à ces systèmes numériques. Et alors, très naturellement, ces objets virtuels sont personnifiés, vus comme magiques, donc nous dominent.

Bien, voilà un point d'acquis. Et pour comprendre le codage alors ?

Retournons dans notre cuisine, et pour apprendre à programmer, mettons nous à deux.

Gnirut, un monstre codeur - © S. Auvin

Gnirut, un monstre codeur - © S. Auvin

L'un va faire le robot (donc exécuter ce qu'on lui demande de la manière la plus c… mécanique possible), et l'autre de lui faire faire correctement la recette. Si vous faites cela il va se passer quatre choses amusantes.

 1/ Vous allez lui donner la recette à exécuter dans ses moindres détails, pas à pas, sous forme d'une séquence d'instructions élémentaires que la mécanique du robot peut exécuter au niveau de ses mécanismes physiques (ce sera «avancer de trois pas dans la cuisine» … «tendre le bras» «prendre le paquet de farine blanc» … (eh, qui sait ce qu'est un «paquet de farine» sans en avoir jamais vu?)).

2/ Et … que faire si il n'y a pas de beurre ? Disons : prendre de la margarine, pardi, sinon arrêter avant que ce soit un massacre. Tiens … ce n'est plus tout à fait une simple séquence, il y a aussi des testssi pas de beurre alors margarine …»)

Et voilà que notre «intelligence mécanique» qui se réduit à faire tester une condition binaire, puis, selon qu'elle est vraie ou fausse, exécuter une séquence d'instruction ou un autre.

3/ Bien. Voila le robot en train de faire un quatre-quart à l'orange. Et . . pour le quatre-quart au citron ? Dois je lui répéter toute la recette ou simplement lui dire … à la place de l'orange tu mets du citron ? Ou du chocolat ! Bref, voilà l'automate capable de faire tous les quatre-quarts du monde. Il sait faire un quatre-quart à «X». Où X est une variable dont le nom est «parfum du gateau» et dont la valeur est «orange» ou «citron», …

Une variable c'est donc une boite avec une étiquette (son nom) et dans laquelle on met une valeur. Grâce aux variables on peut programmer « tous les quart-quart du monde» de même que sur notre machine à laver, la température de l'eau correspond à la variable qui permet de laver tout le linge de la maison.

4/ Nous y sommes presque. Pour faire 50 quart-quarts pour la fête des voisins, je peux recopier la recette 50 fois pour mon robot. Ou mieux : faire une «boucle» : de 1 à 50 fait un quart-quart, fait un quart-quart, …

D'ailleurs nous avons un peu menti : on ne met pas vraiment le gateau au four une demi-heure, mais dix minutes, on plante un couteau dedans et si le couteau ressort mouillé, on refait cuire dix minutes. C'est donc une boucle («tant que le couteau ressort mouillé fait cuire dix minutes») qui gère la cuison du gateau. Et si le four n'a pas été allumé, la semaine suivante le robot est toujours là à planter un couteau dans un gateau pas cuit et … pourri.

Et bien, à ce stade il y a un résultat énorme à partager.

© Dessin : Paul Gendrot

© Dessin : Paul Gendrot

Si un ordinateur, un robot, … enfin une machine quoi, peut exécuter ces ingrédients des algorithmes alors elle peut faire TOUS les programmes d'informatique du monde !! Il n'y a pas un seul logiciel, algorithme du Web, programme de robot, … qui ne se décompose pas en ces ingrédients. C'est ça l'intelligence mécanique. C'est une machine qui va pouvoir exécuter un algorithme qui a été exprimé dans un langage qui permet de traiter de l'information.

Cela veut dire que mon smartphone, le processeur de ma machine à laver, le plus grand ordinateur au monde ou ma calculatrice programmable ont la même intelligence mécanique (donc sont tout aussi con). Bien entendu il y en a des plus moins rapides, efficaces, agréables à utiliser, … Mais qualitativement, leurs capacités calculatoires (on va dire «computationnelles» en franglais) sont équivalentes : on peut coder des algorithmes dessus.

C'est ce résultat monumental (on parle de la Thèse de Church-Turing) qui a fondé les sciences informatiques et permis au monde de passer de l'ère industrielle à l'âge numérique. Ne pas savoir, ne pas comprendre ça, c'est se priver du levier primal pour maîtriser cet univers qui est le notre aujourd'hui.

Oui mais concrètement ? Comment apprendre cette notion de codage à nos enfants. Voici ici des éléments pour répondre à leur question « Dis maman (ou papa), c’est quoi un algorithme dans ce monde numérique ?
»

Et au dela ? Comment avec tout ça peut on coder et traiter de l'information par exemple ?

c'est le «C» du codage qui en est le levier.

Publier un commentaire