Articles

Publié le 04 octobre 2023 Mis à jour le 04 octobre 2023

Comprendre la programmation avec des métaphores

Voir le code différemment

Lignes de code

Qu'est-ce que la programmation? Comment la visualiseriez-vous? Probablement un peu comme dans le film The Matrix (2000) des sœurs Wachowski : des lignes de différents codes formant un monde ou simplement un programme. Cette image n'est pas ce qui se rapproche le plus du codage. Non, il existe des métaphores bien plus fortes pour parler de cette activité, dont celle de pâtes alimentaires.

La métaphore en informatique

La question de la métaphore en informatique n'est pas une nouvelle approche. Pour mieux aborder, entre autres, les notions d'interface, il a fallu réfléchir à des concepts. "Windows" n'est pas innocent dans sa réflexion de différentes fenêtres menant sur le navigateur Internet, le traitement de texte, le logiciel de vidéoconférence, etc. Le système d'exploitation a été pensé comme une maison qui donnerait sur différents points de vue et outils de l'ordinateur.

Par conséquent, bien des applications aujourd'hui essaient d'offrir des métaphores qui vont plaire aux utilisateurs. "Paper", une application de dessin sur iPad, joue sur l'impression de travailler avec une véritable feuille. Des logiciels permettant de voir les résultats financiers d'une entreprise seront décrits comme communiquant le pouls de cette dernière. Bien sûr, une compagnie n'est pas un être vivant mais jouer sur cette image illustre à quel point l'usager pourra suivre presque en temps réel les données. Certains essaient de comparer leur création à une ville, à une usine ou un jardin.

Il faut toutefois faire attention aux métaphores de ce genre comme le rappelle le spécialiste en logiciels David B. Black. Une mauvaise vision d'un programme mènera à des erreurs importantes. Il se méfie entre autres des analogies faites aux maisons. Beaucoup se disent "architectes" de leur application. Certes, ce spécialiste conçoit des plans mais pour un objet tangible qui finit, un jour ou l'autre, par ne plus être retouché. Ce qui est tout le contraire d'un logiciel qui est au départ invisible et qui doit évoluer constamment.

Ceux qui voient leur création comme une usine prennent des risques. Si les fabriques sont capables de sortir en boucle la même chose, un bon programme doit pouvoir se plier aux exigences différentes des utilisateurs.

Programmer, c'est comme...

Par conséquent, si l'informatique en général se sert de métaphores, il n'est pas étonnant de voir la programmation adopter également des analogies. Ainsi, ce site spécialisé dans la programmation agile (dite Scrum) va comparer, entre autres, la démarche à un boulon qui va retenir des éléments ensemble, une fondation qui sur laquelle bâtir du long terme et une direction dans laquelle l'équipe de programmeurs peut se lancer.

L'enseignement du code peut puiser dans différentes comparaisons pour réfléchir avec les apprenants :

  • Comme de la mécanique : apprendre les rouages d'un langage de programmation et sa logique

  • Comme un organisme : comprendre les subtilités de la structure d'un code complexe

  • Comme un cerveau : saisir l'intelligence dans la programmation

  • Comme un flux qui transforme : comment le code peut aider à résoudre des problèmes

  • Comme une culture : la programmation s'inscrit dans quel contexte culturel

Sur ce dernier point, le professeur Jon Corbett de l'université Simon Fraser a littéralement pensé le code en utilisant le nêhiyawêwin, un des dialectes des Cris. L'idée pour lui était de décoloniser la programmation, pratiquement qu'en anglais, afin de la proposer à des peuples des Premières Nations. Lui-même métis, il a réalisé que programmer était un peu une façon de raconter une histoire qu'une machine informatique peut comprendre. Ainsi, son langage de programmation prend en compte le concept de narrateur et de certains rites ancestraux. Il existe dans sa version du code un équivalent de "brûler des herbes afin de purifier le corps" ce qui correspond à une fonction pour vider les mémoires caches et physiques.

Le code peut donc s'expliquer sous bien des aspects. On voit des exemples sur cette page de dessins précisant une API (interface de programmation d'application) ou le code JavaScript. Pour spécifier la difficulté de modifier son code, la métaphore de la lasagne est souvent utilisée. Comme dans ce plat de pâtes, chaque étage semble en ordre mais y ajouter ou enlever des choses sans faire attention pourrait mener à l'écrasement du repas. Les tortellinis expliquent bien comment l'architecture d'un programme se crée en petits paquets de sauce (code source) pour concevoir un logiciel. Le tout doit, au fond, être régi selon l'acronyme SOLID créé par l'ingénieur logiciel Robert C. Martin.

Et si la métaphore de pâtes alimentaires paraît tirée par les cheveux, sachez qu'il est même possible de se servir de la culture populaire comme analogie. L'univers de Star Wars peut être utilisé afin de parler de variables (avec les différentes couleurs des sabres dans la saga), du principe des boucles pour faire rouler un droïde tel BB-8, etc.

Il n'y a pas beaucoup de comparaisons qui sont interdites quand vient le moment d'introduire la programmation. Il suffit de trouver l'approche qui sera gagnante selon les objectifs choisis et les apprenants pourront alors discuter, réfléchir et agir autour de cette image donnée par leur professeur.

Photo : Maik Jonietz / Unsplash

Références :

Black, David B. "Summary: bad software metaphors lead to bad results." Blackliszt. Dernière mise à jour : 5 juin 2023. https://www.blackliszt.com/2023/06/summary-bad-software-metaphors-lead-to-bad-results.html.

Corbett, Jon. "Cree coding." Pinnguaq. Dernière mise à jour : 28 avril 2023. https://pinnguaq.com/fr/stories/cree-coding/.

Craig, William. "5 reasons why metaphors can improve the user experience." WebFX. Consulté le 29 septembre 2023. https://www.webfx.com/blog/web-design/5-reasons-why-metaphors-can-improve-the-user-experience/.

"Cree coding decolonizes computer programming." SFU Research. Consulté le 29 septembre 2023. https://www.sfu.ca/research/scholarly-impacts/cree-coding-decolonizes-computer-programming.

"How do you use metaphors to communicate your software design to non-technical stakeholders?" LinkedIn. Dernière mise à jour : 1er septembre 2023. https://www.linkedin.com/advice/0/how-do-you-use-metaphors-communicate-your-software.

"May the code be with you: teaching code with Star Wars." Code Week. Dernière mise à jour : 4 mai 2023. https://blog.codeweek.eu/may-the-code-be-with-you-teaching-code-with-star-wars/.

"A picture worth a thousand programmes." Maggie Appleton. Dernière mise à jour en 2021. https://maggieappleton.com/programming-pictures.

"Programming with pasta." Patrick Corbett. Consulté le 29 septembre 2023. https://www.pmcorbett.tech/work/strained-pasta-programming/.

Slotte Dufva, Tomi, et Mikko Dufva. "Metaphors of code—Structuring and broadening the discussion on teaching children to code." ResearchGate. Dernière mise à jour en septembre 2016. https://www.researchgate.net/publication/308276346_Metaphors_of_code-Structuring_and_broadening_the_discussion_on_teaching_children_to_code.

"System metahors can be powerful." PremierAgile. Consulté le 29 septembre 2023. https://premieragile.com/system-metaphors-can-be-powerful/.


Voir plus d'articles de cet auteur

Dossiers

  • Nouvelles métaphores


Le fil RSS de Thot Cursus - Besoin d'un lecteur RSS ? FeedBinFeedly , NewsBlur


Les messages de Thot sur BlueSky



Superprof : la plateforme pour trouver les meilleurs professeurs particuliers en France (mais aussi en Belgique et en Suisse)


Réviser le Code de la route



Recevez notre Dossier de la semaine par courriel

Restez informé sur l’apprentissage numérique sous toutes ses formes. Des idées et des ressources intéressantes. Profitez-en, c’est gratuit !