Vue lecture

Il y a de nouveaux articles disponibles, cliquez pour rafraîchir la page.

Sortie de Tcl/Tk 9.0

Le Tcl Core Team (TCT) est heureux d'annoncer la sortie de la version 9.0 du langage de script Tcl et de la bibliothèque d'interface graphique Tk.
C'est la première version stable de la branche Tcl/Tk 9.0 dont le développement a commencé en janvier 2013.
Il y a quelques potentielles incompatibilités avec les précédentes versions même si la plupart des programmes fonctionneront sans retouches.

Les principales nouveautés et améliorations de Tcl 9.0

  • Données en 64-bit : support des structures de données supérieures à 2 Go (variable, chaîne de caractères, tableau, liste et dictionnaire).
  • Support étendu d'Unicode : avec tous les emojis qui vont bien.
  • Système de fichier virtuel dans le langage : basé sur le format zip et permettant la lecture/écriture ou le montage/démontage.
  • Déclaration de constantes : const
  • De nouvelles commandes de listes : lpop, lremove, ledit et lseq
  • De nouvelles options pour les tableaux : array default et array for
  • De nouvelles commandes de coroutines : coroinject et coroprobe pour interagir avec une coroutine en pause.
  • Substitution avec script : possibilités d'attacher un script à la commande regsub
  • Notation décimale explicite : un entier pourra optionnellement être précédé du préfixe 0d pour indiquer sans ambiguïté qu'il est en notation décimale.
  • Notation de nombre : possibilité de noter un nombre entier avec des tirets bas (underscore) pour plus de clarté (1_000_001).
  • Changement de l'interface de notification d'événements : remplacement de select par epoll/kqueue.
  • Le tilde (~) n'est plus interprété comme le répertoire home.
  • L'encodage par défaut d'un script devient l'UTF-8.

Les principales nouveautés et améliorations de Tk 9.0

  • Onglets de tous les côtés : haut/bas/droite/gauche et navigation avec la molette de la souris.
  • Accès au système de notification, à la barre des tâches et au gestionnaire d'impression : tk sysnotify, tk systray, tk print.
  • Texte dans une barre de progression : ttk::progressbar ... -text
  • Badge temporaire sur une icône : wm iconbadge
  • Image de fond dans un frame : frame ... -backgroundimage ... -tile ...
  • Support partiel du format SVG : image create photo ... -file test.svg
  • Accès aux métadonnées et au cannal alpha des images : image read/write/put/cget ... -metadata etimage get/put ... -to ...
  • Rotation des objets graphiques d'un canvas : canvas rotate ... x y angle
  • Support du défilement à deux doigts.

Pour le reste des nouveautés

  • Un pythoniste (Marc Culler) fait partie du TCT pour faciliter le développement de TkInter.
  • Il n'y aura pas de version 8.7 officielle.
  • Tcl 9 bénéficie d'un nouveau logo dessiné par une graphiste (Valerie Carroll).

Titre de l'image

Commentaires : voir le flux Atom ouvrir dans le navigateur

Arrêtons de (dé)tester nos applications web

Dans ce billet, nous allons discuter d’un sujet crucial pour les développeurs et les testeurs : la pertinence des tests de bout en bout (ou end-to-end E2E) web.
En effet, lorsqu’il s’agit de tester des applications web, les tests automatisés jouent un rôle vital, car ils peuvent être exécutés à plusieurs reprises sans effort et manuel supplémentaire. Parmi les tests automatisés, les tests bout en bout sont particulièrement importants, car ils simulent des cas d’utilisation réels. Cependant, il existe des pratiques courantes qui limitent la pertinence de ces tests.
Nous allons ici examiner 3 mauvaises pratiques, ou erreurs courantes, qui limitent la pertinence de vos tests de bout en bout.

  • lien nᵒ 1 : UUV

1. Écrire des tests centrés développement

La première erreur courante que l’on peut citer est de rédiger des tests E2E centrés sur la personne qui développe.
Pour comprendre ce que nous entendons par test E2E centré sur le développement, prenons un exemple.
Imaginons que je souhaite écrire un test pour vérifier que le titre « Welcome to weather App » et le bouton « Get Started » sont bien présents sur la page web suivante :

Application Weather App

Avec un outil populaire comme Cypress (sous MIT), je peux écrire le test suivant :

Test Développer centric

Et ça marche ! Mais ce test a, au moins, les 2 limitations suivantes :

  • Il est écrit en Typescript : Il n’est donc pas facile à comprendre pour les personnes qui ne développent pas (on entend ici toute personne qui ne comprend pas du code de programmation), et c’est un peu dommage, car il est censé représenter un cas d’utilisation réel.
  • Utilisation de testId : les testIds sont des attributs ajoutés par les développeurs pour faciliter la localisation des éléments de la page lors des tests.

Mais lorsqu’on les utilise dans nos tests, nous n’interagissons pas avec notre application comme un utilisateur final. Nos utilisateurs finaux ne connaissent pas les ID de test, ils connaissent les boutons, les liens, les champs de formulaire, ils connaissent tout ce qu’ils peuvent voir et/ou entendre.

Alors, comme bonne pratique, adoptons une approche centrée sur la personne utilisatrice (user-centric), qui consiste à utiliser des éléments connus de la personne utilisatrice finale pour interagir comme elle le ferait avec notre application.
Cet exemple montre le même test écrit avec la solution UUV.

Test User centric

Le nom et le rôle accessibles sont utilisés pour exprimer le cas d’utilisation dans un langage anglais simple.

2. Oublier l’utilisation du clavier

La seconde erreur courante est de négliger l’usage du clavier lors des tests. Les directives WCAG stipulent que tous les éléments interactifs doivent être accessibles via une interface clavier. Cela profite non seulement aux personnes ayant des handicaps visuels ou moteurs, mais aussi à ceux qui préfèrent utiliser le clavier pour des raisons de productivité.
Pour remplir un formulaire comme celui-ci :

Formulaire à remplir

Les utilisateurs déplacent naturellement une souris pour naviguer, car c’est l’usage par défaut qui est enseigné pour manipuler un ordinateur. Les développeurs ont donc l’habitude de reproduire ce genre de scénario lors de tests E2E, comme sur cet exemple :

Remplissage du formulaire à la souris

Pour les plus expérimentés d’entre nous, la navigation au clavier est un excellent moyen d’augmenter la productivité. Ainsi lorsque nous testons nos applications, une bonne pratique est de vérifier l’usage du clavier. Pour cet exemple, il convient donc de vérifier le remplissage du formulaire au clavier. Voici un scénario écrit avec l’outil UUV pour le faire :

Remplissage du formulaire au clavier

La première partie est identique à la navigation à la souris. Ensuite, nous plaçons le focus sur le coin gauche de l’application. Puis nous déplaçons le focus lorsque nous appuyons sur la touche tabulation et nous vérifions que le focus est sur le lien nommé Weather App's Logo. Nous reproduisons ce mécanisme avant de le soumettre.

3. Ignorer l’accessibilité (#a11y)

Contrairement à ce que l’on pourrait croire, les tests E2E sont un excellent contexte pour effectuer des vérifications d’accessibilité en utilisant des outils comme axe-core (sous MPL2) pour effectuer des contrôles de référence WCAG, ou en utilisant des bibliothèques comme uuv/a11y pour les vérifications RGAA. Il est important de garantir la non-régression de l’accessibilité lorsque l’on met à jour nos interfaces, surtout à une époque où l’intelligence artificielle prend de plus en plus de place.

Voici un exemple de scénarios effectuant des vérifications d’accessibilité :

Vérification d’accessibilité

En résumé

Commencer ou continuer à :

  • Écrire des tests centrés sur l’utilisation
  • Tester l’utilisation du clavier
  • Effectuer des vérifications d'accessibilité

En adoptant ces pratiques, nous pouvons nous assurer que nos applications web sont robustes, accessibles et prêtes pour une utilisation réelle par tous nos utilisateurs.

Mais au fait, qu’est-ce que UUV ?

Logo UUV

Pour faire simple, UUV est une solution opensource (MIT) qui facilite l’application des pratiques évoquées et de bien d’autres en matière de tests E2E.

Disponible en tant que dépendance npm, UUV offre des phrases prêtes à l’emploi user-centric pour rédiger les tests E2E. Pour les développeurs, le plugin Jetbrains et l’extension VS Code facilite l’écriture des scénarios. De plus, l’assistant UUV, une application de bureau, permet de générer des scénarios de tests comme ceux pour vérifier la navigation au clavier, les interactions avec les boutons, et bien plus encore.

Vous pouvez tester UUV directement sur vos projets ou à l'aide du Kata UUV E2E et contribuer à son développement sur GitHub.

Merci pour votre lecture, n'hésitez pas à partager votre avis en commentaire !

Commentaires : voir le flux Atom ouvrir dans le navigateur

Claire Mathieu et les algorithmes

Si on devait définir Claire Mathieu en mots-clés, ce serait, dans le désordre : algorithmes, Parcoursup, CNRS, pédagogie et éthique. Mais comme c’est très réducteur, ce portrait de celle qui a codé l’algorithme de Parcoursup évoquera, outre ces sujets, son parcours et son passage au Conseil présidentiel de la science. Et, si vous ne savez pas vraiment ce qu’est un algorithme, normalement, cette notion devrait vous être plus familière après la lecture de la dépêche, et qui sait, peut-être vous donner envie de vous y mettre.

Claire Mathieu, photo Patrick Imbert

Sommaire

Parcours

Claire Mathieu est une ancienne élève de l’École normale supérieure. En 1988, elle soutient une thèse en sciences : « Comparaison de modèles combinatoires et probabilistes : deux exemples en analyse d’algorithmes » sous la direction de Claude Puech, actuel directeur scientifique de la Fondation Inria.

En 1990, elle est Chargée de recherche au CNRS en informatique. Elle obtiendra le prix « IBM Jeune chercheur » en 1991.

À partir de 1997, elle occupe des fonctions de professeure d’informatique : à l’Université Paris-Sud (devenue Paris-Saclay en 2020), puis à l’École polytechnique (de 2002 à 2004) et à l’Université de Brown (en), USA (de 2004 à 2014). De retour en France, elle devient, en 2012, Directrice de recherche au CNRS en informatique, sera professeure associée au Département d’informatique de l’École normale supérieure de 2014 à 2018. Elle occupera la chaire annuelle d’Informatique et sciences numériques au Collège de France pour l’année 2017-2018.

En 2017 elle est chargée de mission « Parcoursup ».

En 2019, elle obtient la médaille d’argent du CNRS pour l’ensemble de son œuvre. Elle est élue la même année à l’Académie des sciences. Elle est actuellement directrice de recherche au CNRS en informatique au sein de l’Institut de recherche en informatique fondamentale (IRIF).

Qu’est-ce qu’un algorithme ?

Petit rappel de ce que sont les algorithmes, une notion devenue omniprésente. Dans sa leçon inaugurale au Collège de France, le 16 novembre 2017, Claire Mathieu constate d’ailleurs que :

ce mot a envahi les médias. Autrefois, lorsqu’on allait dans une administration et qu’on n’arrivait pas à obtenir ce que l’on souhaitait, la réponse était : « Ah, Madame, vous comprenez, c’est l’informatique ! » Maintenant on entend : « Ah, c’est l’algorithme. »

Au départ selon la notice étymologique du CNRTL, l’algorithme, vers 1220-30, s’appelait « augorisme » et c’était un « procédé de calcul utilisant les chiffres arabes ». Il deviendra « algorisme » puis, enfin « algorithme ». Le mot lui-même vient du surnom du mathématicien Abdallāh Muhammad ibn Mūsā : Al Ḫuwārizmī (qui est en fait son origine géographique). Et, si vous ne savez pas si on doit mettre ou pas un « y », retenez que ça n’a strictement rien à voir avec la musique ou la danse, donc, pas d’y.

Si une bonne part du lectorat de LinuxFr sait de quoi il s’agit, notamment parce que c’est leur métier d’en fabriquer, ce n’est pas forcément le cas de tout le monde, une petite explication s’impose. Un algorithme est ainsi une suite finie et non ambiguë d’opérations ou d’instructions permettant de résoudre un problème ou d’obtenir un résultat ou, pour reprendre la définition qu’en a donné Claire Mathieu dans sa leçon inaugurale : « un algorithme, c’est une méthode pour résoudre un problème de façon constructive en le décomposant en briques de base faciles à manipuler. » Elle donne l’exemple de l’apprentissage de la lecture par la méthode syllabique (découper les mots en lettres et syllabes) par rapport à la méthode globale (qui serait plus proche de l'apprentissage profond en informatique).

On peut avoir d’autres exemples simples, celui de la recette de cuisine ou encore, celui de modèles de tricot. Un algorithme reçoit des données à traiter (texte, nombres relations), les instructions peuvent être conditionnelles, passant les étapes suivies par l’algorithme vont varier, et, forcément, les résultats.

Trois sapins
Allégorie des résultats d’un algorithme avec des jeux de données différents.

Si vous voulez en savoir plus, je vous renvoie à la leçon inaugurale de Claire Mathieu au collège de France et à cet article de Jean Cardinal sur le site francophone The Conversation, vous apprendrez qu’il existe plusieurs « familles » d’algorithmes et comment cela fonctionne.

De l’importance des algorithmes

Pourquoi avoir choisi les algorithmes ?

Pourquoi avoir choisi les algorithmes ? À cette question qui lui a été posée à l’occasion de sa nomination au Conseil présidentiel de la science, en décembre 2023 par le site de l’Insmi (CNRS Mathématique), elle répond que cela date de sa formation à l’École normale supérieure de jeunes filles1.

Une question dans un projet de programmation « demandant un calcul par simulation de la profondeur moyenne des arbres 2-3 » l’avait «  plongée dans des abîmes de perplexité car la notion de “moyenne” dépendait de la distribution étudiée, qui n’était pas spécifiée : soit l’arbre est obtenu par une suite d’insertions aléatoires (facile à simuler), soit on considère la distribution uniforme sur tous les arbres 2-3 contenant n éléments » et « d’un cours montrant la borne inférieure n log n pour la complexité dans le pire cas pour tout algorithme de tri par comparaisons. L’idée qu’il était possible de montrer une borne inférieure sur tous les algorithmes imaginables de tri par comparaison, c’était magique. »

Dans la même interview, elle dira qu’elle aime l’aspect concret des algorithmes et « le fait que l’on puisse voir la solution en train de se construire. ».

Sur l’importance des algorithmes

Dans un entretien donné au magazine La Recherche en février 2020 elle explique que le rôle des algorithmes a toujours été important et ce, depuis le début de l’informatique. On se rappellera peut-être des regrets de Marion Créhange qui, dans un texte pour la revue Interstices déplorait le fait que les algorithmes conçus au départ pour économiser le temps et le volume d’informations à traiter par une machine étaient moins subtils.

Aujourd’hui, les algorithmes ne se concentrent plus seulement sur le fonctionnement des logiciels mais ce phénomène :

a pris une importance particulière en raison de la révolution numérique en cours, avec entre autres l’émergence d’algorithmes utilisant des réseaux de neurones profonds. […] Avec le passage au tout-numérique dans la société, l’utilisation des algorithmes partout et le succès des méthodes de l’intelligence artificielle, la proximité entre les algorithmes et les humains dans leur vie en société a changé.2

Et, évidemment, ce n’est pas sans conséquences, puisqu’à partir du moment où les algorithmes vont s’entremêler à la vie des êtres humains, des questions éthiques se font jour :

Cette omniprésence a fait apparaître de nouveaux critères, dont on ne se souciait pas auparavant, comme celui de vouloir que les algorithmes soient équitables et justes pour les humains. Jusqu’il y a deux ou trois ans, ce n’était pas vraiment une préoccupation des algorithmiciens. Cela a émergé d’un coup et pose de nouvelles questions : est-ce que ce sont les algorithmes qui décident et les humains qui suivent – ce qui n’est pas souhaitable – ou bien est-ce que les algorithmes sont au service de la société et des humains ? Que faire pour garantir que les humains gardent toujours le contrôle ?3

Claire Mathieu considère que les algorithmes peuvent contribuer au bien commun, pour peu qu’ils soient bien conçus et utilisés. Dans sa leçon inaugurale au Collège de France, par exemple, elle donne celui de la greffe de reins dont l’idée est d’apparier les reins des donneurs et donneuses aux malades ou encore celui du découpage électoral. Elle espère que « la perspective algorithmique fera partie de la culture des adultes de demain. »4.

Parcoursup : transcrire la loi dans le code

Parcoursup est un dispositif français concernant l’inscription dans les formations d’enseignement supérieur, notamment celles dont les capacités d’accueil sont inférieures au nombre de candidatures reçues, créé par la loi n° 2018-166 du 8 mars 2018 relative à l'orientation et à la réussite des étudiants.

Où la loi fait le code

En 2000, le juriste américain Lawrence Lessig écrit « Code is Law » pour Harvard Magazine, ce que l’on pourrait traduire par « le code est loi » ou le « code fait loi ». Il expliquait que, dans le cyberespace, c’est le code (informatique) qui fait la loi et que, dans l’exemple de l’identification, « l’architecture de certification qui se construit respecte ou non la vie privée dépend des choix de ceux qui codent. ». Il insistait sur le fait que quand l’État se retire, il laisse le champ aux intérêts privés.

Avec Parcoursup, c’est la loi qui fait le code. Laquelle loi fait partie du Code de l’éducation qu’elle a modifié, notamment dans son article D612-1.

Le principe : les lycéens, les lycéennes, les apprenti·e·s, et les étudiant·e·s en réorientation désireuses d’entrer dans l’enseignement supérieur formulent leurs vœux sur la plate-forme Parcoursup. Les capacités d’accueil des formations figurent sur le site de Parcoursup. Une commission d’examen des vœux pour chaque formation (chaque BTS, BUT, CPGE, chaque section d'école d'ingénieur, etc.) les examine et, au besoin met dans l’ordre les candidatures. Là, un algorithme va calculer l’ordre d’appel dans lequel les candidats et les candidates vont recevoir les propositions. Propositions qui évolueront à un rythme quotidien, du 30 mai au 12 juillet pour l'année 2024. Le temps de réponse accordé diminuant au cours du temps.

L’idée étant, idéalement, de faire correspondre les vœux et les capacités desdits candidats et candidates aux formations.

Quand la rédaction de la loi affaiblit les mariages stables

L’algorithme de Parcoursup fait partie de ceux qui servent d’exemple à sa leçon inaugurale au Collège de France. Elle y explique que le gouvernement voulait s’inspirer de l’algorithme des « mariages stables » de Gale et Shapley. Au départ, il n’était question que de classes péparatoires. Se sont ajoutées ensuite les formations non-sélectives avec plus de places que de candidats et candidates, puis les formations non-sélectives pour lesquelles l’offre est inférieure à la demande qui5 :

utilisent des critères géographiques (l’académie d’origine), ainsi que des critères dépendant des préférences des candidats.

Et, de facto, l’algorithme des mariages stables perd ses propriétés et la nécessité d’exprimer des choix stratégiques plutôt que des réelles préférences s’impose aux candidats et aux candidates ce qui « pénalise les candidats sincères » avec un autre effet secondaire :

malgré cela, les formations n’ont pas assez de critères pour départager les candidats et ne peuvent produire de liste ordonnée, d’où l’usage du tirage au sort. Cette extension de l’algorithme, du point de vue mathématique, était catastrophique.

Toujours, dans cette leçon inaugurale, Claire Mathieu en conclut :

C’est la loi elle-même qui dit que l’affectation peut se faire en fonction des préférences des candidats, et donc qui – indirectement – encourage la manipulation !
Ainsi, la loi a défini les contraintes. Du point de vue algorithmique, on peut dire qu’il y a eu une erreur de conception. Pour éviter ce genre d’impasse, la législation devrait peut-être être définie en concertation avec les algorithmiciens.

L’algorithme de Parcoursup est public ainsi que son explication (voir dans les liens) : « La transparence des algorithmes utilisée par le gouvernement est un moteur puissant pour une société plus démocratique. »6. Il a été primitivement publié sur un dépôt Framagit.

Quinze jours au Conseil présidentiel de la science

Le Conseil présidentiel de la science est un conseil national scientifique français créé le 7 décembre 2023 par le président de la République. Composé de douze membres, sa mission de tenir le président informé des évolutions scientifiques susceptibles d’être stratégiques. Les rapports de ce conseil ne seront pas rendus publics.

Claire Mathieu y est nommée ainsi qu’une brochette d’autres scientifiques de haut niveau. Elle en démissionne le 22 décembre en désaccord avec la loi sur l’immigration. Une loi considérée par ailleurs comme ni essentielle (les lois sur l’immigration ont été modifiées 133 fois en dix ans), ni vraiment souhaitée, dangereuse pour la politique de santé publique et votée dans des conditions démocratiques douteuses. Elle s’en explique ainsi dans un courrier adressé à Emmanuel Macron :

En effet, si au lieu de vous c’était l’extrême droite qui était au pouvoir, j’aurais refusé de participer à ce conseil. Or, la loi anti-immigration est une loi d’extrême droite, une loi xénophobe, d’exclusion et de repli sur soi.

Elle ajoutera sur X :

Maintenant déjà il est difficile à nos jeunes chercheurs étrangers de régler leurs problèmes de visas. Demain ce sera pire, et ils iront donc dans un pays plus accueillant. Cela accentuera le décrochage de la France en recherche.

Elle remarque au passage sur son compte Mastodon :

C’est drôle, il y a quinze jours j'ai reçu plein de messages de félicitations pour ma nomination au Conseil présidentiel de la science, et aujourd’hui je reçois plein de messages de félicitations pour ma démission du Conseil présidentiel de la science (y compris certains des mêmes personnes).
Je cherche le proverbe approprié pour décrire la séquence.

On suggérerait bien cette citation de Rabelais tirée de Pantagruel « Science sans conscience n’est que ruine de l’âme ».

Post-scriptum

Vous avez dans les « Liens » ceux qui m’ont servi à rédiger ce portrait. Je ne saurais que trop vous recommander d’aller y jeter un coup de souris, au moins la leçon inaugurale. Sur le site de Claire Mathieu, vous trouverez son CV ainsi que des liens vers certaines de ses publications et ses présentations. Les présentations sont d’un intérêt relativement mineur car elles sont, et c’est comme cela que ça doit être, des supports de sa parole et là uniquement pour agrémenter son discours, elles sont donc assez peu informatives pour qui ne connaît pas le domaine, tout au moins.

La leçon inaugurale a fait l’objet d’une publication papier, épuisée, et de versions epub et pdf. On doit pouvoir l’emprunter auprès d’une « institution partenaire ». Cela dit le texte intégral est en ligne.

Pour lire l’interview de Claire Mathieu dans la Recherche, il faut le payer, soit en achetant le numéro, soit en acceptant de voir une publicité (on peut se servir un café pendant qu’elle passe). Personnellement je n’avais pas le bouton sur mon Firefox, question de réglage ou d’extensions sans doute, il m’a fallu utiliser Chromium. À vous de voir.

Pourquoi un portrait, si on peut dire, à mi-chemin entre une biographie et une interview ? Parce qu’une biographie se doit d’être exhaustive, ce qui n’était pas trop l’idée ici. Et qu’une interview ça prend du temps à rédiger et que les personnes ne répondent finalement pas forcément. Quitte à travailler pour rien, autant travailler pour quelque chose. Il y en aura peut-être d’autres, ou peut-être pas (j’ai un autre nom en tête et dans Zotero). Mais j’espère que celui-ci fera au moins un heureux.

Pourquoi pas sa page Wikipédia ? D’abord parce que je ne l’ai pas lu, ce qui règle la question. Ensuite parce que, justement, j’ai privilégié les sources primaires pour avoir la parole de Claire Mathieu. Et enfin parce que je pense que le lectorat de LinuxFr est tout à fait capable de la trouver lui-même.

Et un grand merci à finss pour ses précisions.


  1. ENSJF, elle disparaît en 1986 suite à la fusion des deux ENS. 

  2. La Recherche, mensuel 556, février 2020. 

  3. La Recherche. 

  4. Leçon inaugurale, Collège de France. 

  5. Les citations qui suivent sont extraites de la leçon inaugurale 

  6. Claire Mathieu, Le Monde, blog binaire, La transparence à l’école de Parcoursup, 5 juin 2018. 

Commentaires : voir le flux Atom ouvrir dans le navigateur

On entend trop le mot « algorithme »

Dans les débats politiques au sujet du Web et du numérique en général, on parle souvent d’« algorithmes ». Il n’est peut-être pas inutile de revenir sur ce qu’est un algorithme et sur ce qu’il n’est pas. Si vous êtes informaticien·ne, vous savez déjà tout cela, mais, si ce n’est pas le cas, vous apprendrez peut-être ici une chose ou deux.

Par exemple, dans le numéro 3790 du magazine Télérama, en date du 3 septembre 2022, la directrice générale de YouTube, Susan Wojcicki, déclarait « Nous ne faisons pas d’éditorial au sens propre puisque tous nos contenus sont recommandés par des algorithmes ». Cette phrase est un condensé de mensonges, bien sûr. Wojcicki est bien placée pour savoir ce qu’est un algorithme mais elle essaie de faire croire qu’il s’agirait d’une sorte de processus magique et éthéré, flottant loin au-dessus des passions humaines, et n’agissant que pour notre bien.

Au contraire, un algorithme est une suite de décisions. Un algorithme, c’est un ensemble d’étapes qu’on va suivre pour un certain but. Choisir le but est déjà une décision. (Quel est le but des algorithmes de recommandation de YouTube ? Probablement de vous faire rester le plus longtemps possible, pour que vous avaliez davantage de publicité.) Mais choisir les étapes est aussi une décision. Rien dans le monde numérique ne se fait tout seul : des personnes ont décidé de l’algorithme. Que les recommandations de YouTube soient issues d’un humain qui vous observerait et déciderait, ou d’un programme automatique, dans les deux cas, c’est la décision de YouTube. Et il y a donc bien « éditorialisation ». YouTube n’est pas neutre. Même chose évidemment pour le moteur de recherche de la même entreprise, Google. Il classe les résultats en fonction de ce que Google a décidé, lors de l’écriture du programme. (Notez que c’est bien ce qu’on demande à un moteur de recherche : s’il trouvait 10 000 résultats et ne les classait pas, on serait bien ennuyé·e.)

On explique parfois l’algorithme en citant l’exemple d’une recette de cuisine : faites ceci, puis faites cela, ajouter ça, mettez le four à telle température. Mais les algorithmes ne sont pas juste une suite d’étapes, à effectuer quoiqu’il arrive. Ils incluent notamment ce qu’on nomme des tests, par exemple « si telle condition, alors faire ceci, sinon faire cela ». Un recette de cuisine qui contiendrait « si vous avez de la moutarde, ajoutez-en une cuillère » donne une meilleure idée de ce qu’est un algorithme.

Le mot d’algorithme vient d’Al-Khwârizmî (محمد بن موسى الخوارزمي), un mathématicien d’origine persane du 8e-9e siècle, qui travaillait à Bagdad (la Silicon Valley de l’époque, là où il fallait être pour travailler au plus haut niveau). Mais le concept d’algorithme existait bien avant lui. Vous avez peut-être appris à l’école l’algorithme d’Euclide pour trouver le PGCD (plus grand commun diviseur), algorithme conçu plus de dix siècles avant Al-Khwârizmî. Mais ce dernier a été le premier à décrire en détail l’idée d’algorithme et à proposer une classification des algorithmes.

 

Statue d'Al-Khwârizmî

Statue d’Al-Khwârizmî à Khiva, Ouzbékistan (portrait imaginaire, car on ne connait pas de portrait réel de l’époque).

 

Le principe de l’algorithme est donc très antérieur à l’ordinateur. Par exemple, une personne qui répond au téléphone pour une « hotline » a en général reçu des instructions extrêmement précises sur ce qu’il faut dire et pas dire, avec interdiction de s’en éloigner. Dans le monde des « hotlines », cela se nomme un script, mais c’est aussi un algorithme ; si le client dit ceci, répondre cela, etc. Remplacer les algorithmes par des humains pour les décisions, comme le préconisent certains, n’a donc pas de sens si ces humains appliquent strictement un script : ce sera toujours un algorithme.

 

Euclide

Euclide, vu par le peintre Justin de Gand. (Là encore, c’est une œuvre d’imagination, on ne sait pas à quoi ressemblait Euclide)

 

Et à propos d’humains qui suivent un algorithme, comment se faisaient les calculs longs et complexes avant l’invention de l’ordinateur ? Il y avait des aides mécaniques (boulier, règle à calcul…) mais le gros du travail était fait par des humains. En français, autrefois, une « calculatrice » n’était pas un ordinateur mais une humaine qui passait sa journée à mouliner des chiffres. On pouvait avoir comme métier « calculatrice dans une compagnie d’assurances ». Même chose pour « computer  » en anglais ; désignant aujourd’hui un ordinateur, il désignait autrefois un·e humain·e. Ce travail est bien montré dans le film « Les figures de l’ombre », de Theodore Melfi, qui se passe au moment où ces calculateurs humains sont peu à peu remplacés par des ordinateurs. (Le titre français du film fait perdre le double sens du mot « figures » en anglais, qui désigne un visage mais aussi un chiffre.)

Les programmes, eux, sont bien plus récents que les algorithmes. Ils sont également apparus avant l’invention de l’ordinateur, mais n’ont réellement décollé qu’une fois qu’on disposait d’une machine pour les exécuter automatiquement, et fidèlement. Un programme, c’est la forme concrète d’un algorithme. Écrit dans un langage de programmation, comme PHP, Java, Python ou Rust, le programme est plus précis que l’algorithme et ne laisse place à aucune ambiguïté : les ordinateurs ne prennent pas d’initiatives, tout doit être spécifié. La maternité de la programmation est souvent attribuée à Ada Lovelace au 19e siècle. Comme toujours dans l’histoire des sciences et des techniques, il n’y a évidement pas un·e inventeu·r·se unique, mais une longue chaîne de personnes qui ont petit à petit développé l’idée.

 

Un programme mettant en œuvre l'algorithme d'Euclide

Un programme écrit dans le langage Python, et mettant en œuvre l’algorithme d’Euclide de calcul du PGCD.

 

Le premier point important de cet article était qu’un algorithme, c’est une série de décisions (et la déclaration de Wojcicki au début, lorsqu’elle essaie de diminuer la responsabilité de YouTube, est donc ridicule). Un algorithme n’est pas un phénomène naturel mais la formalisation de décisions prises par des humains. Le fait qu’il soit programmé, puis exécuté par un ordinateur, n’exonère donc pas ces humains de leurs choix. (Et, je me répète, demander que les décisions soient prises « par des humains et pas par des algorithmes » n’a guère de sens : ce sont toujours des humains qui ont décidé, même quand leur décision passe via un algorithme.)

Le deuxième point qui me semble important est que tout système informatique (et je rappelle que l’engin plat qu’on met dans sa poche, et que le marketing nomme « smartphone  », est un ordinateur) fonctionne avec des algorithmes. Le ministre de l’Intérieur Gérald Darmanin avait déclaré, à propos de la surveillance automatisée des citoyens, « De plus, alors que toutes les sociétés commerciales peuvent utiliser les données fournies par des algorithmes, seul l’État n’aurait pas le droit de le faire […] ? » et avait appelé à « pérenniser l’utilisation des algorithmes ». Par delà la question politique de fond, ces déclarations sont bien sûr absurdes. L’État utilise des algorithmes depuis longtemps, depuis qu’il utilise des ordinateurs. Mais il ne s’agit pas seulement de l’ignorance (et du mépris pour la technique) d’un ministre. L’utilisation du terme « algorithme » vise à faire croire qu’il s’agit de quelque chose de nouveau, afin de brouiller le débat sur les usages de l’informatique, et d’empêcher les citoyen·nes d’y participer utilement. La réalité, je le redis, est que cela fait longtemps qu’il existe des algorithmes et qu’ils sont utilisés.

Il y a par contre une nouveauté qui a pris de l’importance ces dernières années, ce sont les systèmes à apprentissage (parfois désignés par l’acronyme marketing IA – Intelligence Artificielle, qui ne veut rien dire) ou machine learning en anglais. Il existe de nombreux systèmes de ce genre, très variés. Mais le point commun est l’utilisation d’algorithmes qui évoluent sous l’influence des données qu’on leur donne. Pour prendre un exemple simpliste, on donne au programme des photos de chiens et de chats, lui indiquant à chaque fois s’il s’agit d’un chien ou d’un chat, et, après un grand nombre de photos, le programme aura « appris » et pourra classer correctement une nouvelle photo. Il y a beaucoup à dire sur ces systèmes à apprentissage mais, ici, je vais me contenter de faire remarquer qu’ils ne remettent pas en cause le pouvoir de décision. Au lieu de règles explicites dans un algorithme (« s’il a des griffes rétractiles, c’est un chat »), le système de décision est composé de l’algorithme qui apprend et des données qu’on lui soumet.

Il n’y a donc pas de changement fondamental : le système informatique qui prend la décision a toujours été conçu et entraîné par des humains, et ce sont leurs choix qui se refléteront dans les décisions. Ainsi, si on utilise un tel système pour traiter les CV dans un service de ressources humaines, si l’entreprise avait l’habitude de recruter préférentiellement des hommes, et si on entraîne l’algorithme avec les choix passés, il se mettra à privilégier les CV des hommes, pas parce qu’il serait « sexiste » (les algorithmes n’ont pas d’opinion ou de préjugés) mais parce que c’est ce que ses maîtres humains lui ont demandé, via les données qu’ils ont choisies.

Bref, chaque fois que vous entendrez quelqu’un éluder sa responsabilité en se cachant derrière « c’est l’algorithme », rappelez-lui qu’un algorithme, c’est un ensemble de décisions prises par des humains, et que ces humains sont responsables de ces décisions.

❌