Menu

Expliquer du code avec l'IA : ligne par ligne

Demandez à l'IA d'expliquer du code ligne par ligne, à votre niveau, avec un tableau de l'évolution des valeurs pendant l'exécution. Dites ce que vous savez déjà pour que l'explication parte de là où vous en êtes.

Chaque prompt de cette page se modifie, puis s'ouvre dans ChatGPT, Claude ou une autre application d'IA.

Pour obtenir de l'IA une explication de code utile, dites ce que vous savez déjà, demandez l'explication ligne par ligne, et demandez un suivi d'exécution : un tableau des valeurs que prend chaque variable pendant que le code tourne. Un simple "explique ce code" obtient un résumé écrit pour un lecteur moyen imaginaire, en général trop basique ou trop rapide pour vous.

Ligne par ligne, avec un suivi des valeurs

Les deux onglets portent sur la même petite fonction. Comparez ce que chaque réponse vous permet de vérifier.

Explique ce code : def running_max(nums): result = [] best = None for n in nums: if best is None or n > best: best = n result.append(best) return result print(running_max([3, 1, 4, 1, 5]))
Try it
Example replyReplies vary between models and runs.

Cette fonction calcule le maximum glissant d'une liste. Elle parcourt les nombres, garde dans best la plus grande valeur vue jusque-là et ajoute cette valeur à result à chaque étape. Le test best is None gère le premier élément. L'appel affiche [3, 3, 4, 4, 5].

La fonction s'exécute en temps O(n), puisqu'elle visite chaque élément une fois.

La première réponse est exacte, mais elle n'aide que si vous savez déjà ce qu'est un maximum glissant. Elle ajoute aussi une remarque sur la complexité que personne n'a demandée, le genre d'ajout qu'on obtient quand le modèle ne sait pas qui lit. La seconde rattache chaque phrase à une ligne que vous pouvez désigner, et le tableau rend concret ce que le résumé ne fait qu'évoquer en passant : result.append(best) s'exécute à chaque tour, y compris ceux où best ne change pas. C'est pourquoi 3 apparaît deux fois, et vous le voyez à la ligne 2 au lieu de le déduire de "à chaque étape".

Un tableau de suivi sert aussi à vérifier l'explication elle-même. Vous pouvez contrôler chaque ligne en exécutant le code avec un print(n, best, result) dans la boucle. Si une ligne ne correspond pas à la vraie sortie, l'explication est fausse quelque part, et vous savez maintenant où.

Une explication à votre niveau

La ligne la plus utile d'un prompt d'explication est ce que vous savez déjà. Elle dit au modèle quelles lignes survoler et sur lesquelles ralentir. Une phrase de rôle peut aussi aider ("Tu es tuteur pour des personnes qui codent depuis un mois"), mais elle agit par le même mécanisme : elle dit au modèle qui est le lecteur. Prompting par rôle explique ce qu'un rôle change et ce qu'il ne change pas.

Ce bloc en est une version réutilisable. Changez le niveau, la partie qui vous pose problème ou le code, et l'explication change avec.

Expliquer à mon niveau
Fill in
Parts
Explique-moi le code ci-dessous.
Mon niveau : je connais les boucles, les listes et les dictionnaires, mais pas lambda ni sorted avec une clé. La partie qui me pose problème : les deux dernières lignes.
text = "the cat and the hat" counts = {} for word in text.split(): counts[word] = counts.get(word, 0) + 1 top = sorted(counts.items(), key=lambda kv: kv[1], reverse=True)[:2] print(top)
Explique les lignes que je comprends déjà en une seule phrase au total. Consacre le reste à la partie qui me pose problème, morceau par morceau, en montrant la valeur que produit chaque morceau pour cette entrée.
Moins de 180 mots. N'utilise que les notions de mon niveau, plus celles que tu expliques.
Try it
Example replyReplies vary between models and runs.

La boucle compte chaque mot : counts finit à {'the': 2, 'cat': 1, 'and': 1, 'hat': 1}.

Voyons maintenant les deux dernières lignes, de l'intérieur vers l'extérieur :

  • counts.items() donne les paires ('the', 2), ('cat', 1), ('and', 1), ('hat', 1).
  • lambda kv: kv[1] est une toute petite fonction sans nom. Elle prend une paire et renvoie son second élément, le compte. Pour ('the', 2), elle renvoie 2.
  • sorted(..., key=...) trie les paires selon ce que renvoie cette fonction, donc par compte. reverse=True met le plus grand en premier. Les mots de même compte gardent leur ordre d'origine.
  • [:2] garde les deux premières paires.

top vaut donc [('the', 2), ('cat', 1)], et c'est ce qui s'affiche.

"Les mots de même compte gardent leur ordre d'origine" est le détail qu'une explication rapide oublie, et c'est pourquoi cat prend la deuxième place et pas and ou hat. Le sorted de Python est stable, et reverse=True conserve cette stabilité. Vous n'auriez pas pensé à poser la question, et c'est la demande de "la valeur que produit chaque morceau pour cette entrée" qui a fait ressortir ce point.

Poser une question sur une partie, pas sur tout le fichier

Coller un fichier de 500 lignes et demander "qu'est-ce que ça fait" vous vaut une visite guidée de la structure du fichier. Quand vous bloquez sur une fonction, collez cette fonction et les lignes qui l'appellent, et posez une question directe : "Pourquoi cette fonction retourne-t-elle tout de suite quand la liste est vide ?" ou "Que fait yield à la ligne 12, et qu'est-ce qui changerait avec return ?" Une question précise obtient une réponse sur votre code ; une question large obtient une réponse sur du code qui ressemble au vôtre.

Pour une grosse base de code inconnue, inversez l'approche : demandez d'abord une carte ("liste les modules principaux et la responsabilité de chacun, en une ligne chacun"), puis posez des questions sur le module qui vous intéresse. C'est une petite chaîne de prompts, et chaque étape garde la réponse du modèle assez courte pour être vérifiée.

Passer par un langage que vous connaissez

Du code dans un langage inconnu se lit plus facilement quand l'explication s'ancre dans un langage que vous connaissez. Dites-le dans le prompt : "Je connais Python. Explique cette fonction Go et signale chaque endroit où elle se comporte différemment de ce qu'attendrait un programmeur Python." Les différences sont là où naissent les malentendus : la division entière, les valeurs zéro au lieu de None, une slice qui partage sa mémoire avec le tableau dont elle vient. Une explication simple du code Go décrirait correctement ces lignes sans jamais vous dire que vos réflexes à leur sujet sont faux.

Vérifier que vous avez compris

Une explication que vous lisez et approuvez peut quand même vous laisser incapable d'écrire le code vous-même. Deux prompts comblent cet écart :

  • Prédire d'abord. Avant d'exécuter le code ou de demander une explication, notez ce que vous pensez qu'il affiche. Demandez ensuite au modèle d'expliquer uniquement les lignes où votre prédiction était fausse.
  • Réexpliquer. Écrivez votre propre explication et demandez au modèle de signaler ce qui est faux ou manquant, sans la réécrire.
Interroge-moi sur ce code
Fill in
Je viens de lire une explication de ce code Python : def running_max(nums): result = [] best = None for n in nums: if best is None or n > best: best = n result.append(best) return result Pose-moi 3 questions qui vérifient si je le comprends vraiment, une à la fois. Inclus une question où je dois prédire la sortie pour une nouvelle entrée. Attends ma réponse avant de poser la question suivante, et dis-moi si ma réponse est juste et pourquoi.
Try it
Example replyReplies vary between models and runs.

Question 1 sur 3 : que renvoie running_max([2, 7, 5, 9]) ? Trouve-le avant de l'exécuter.

La même approche marche quand un programme se comporte mal, mais il vous faut alors la cause, pas une leçon : voir prompts pour déboguer. Quand le code devant vous a été écrit par une IA, une explication ligne par ligne est un moyen rapide de le relire avant de le garder ; prompts pour coder liste les autres vérifications à faire.

Questions fréquentes

Comment demander à ChatGPT ou Claude d'expliquer du code ?

Collez le code et précisez trois choses : ce que vous savez déjà, la partie qui vous pose problème et la forme d'explication voulue. "Explique chaque ligne en une phrase, puis montre un tableau des variables après chaque tour de boucle" obtient une réponse bien plus utile que "explique ce code".

Qu'est-ce qu'un tableau de suivi ?

Un tableau de suivi (trace table) suit un programme pendant son exécution : une ligne par étape (souvent un tour de boucle), une colonne par variable, et la valeur de chaque variable à ce moment-là. En demander un transforme une description abstraite en valeurs concrètes que vous pouvez comparer au code. C'est la trace écrite de ce qu'un débogueur vous montre quand vous avancez pas à pas dans un programme.

L'IA peut-elle expliquer du code dans un langage que je ne connais pas ?

Oui, et c'est l'une des demandes les plus utiles. Nommez un langage que vous connaissez et demandez au modèle de comparer : "Je connais Python ; explique ce code Rust et signale où il se comporte différemment de Python." Vérifiez les affirmations sur le comportement du langage en exécutant de petits exemples, car les explications peuvent se tromper avec assurance sur les détails.

Utiliser l'IA pour expliquer du code nuit-il à l'apprentissage ?

Tout dépend de ce que vous faites ensuite. Lire une explication et passer à autre chose apprend peu. Prédire la sortie avant d'exécuter le code, demander au modèle de vous interroger, ou réexpliquer le code et demander ce que vous avez mal compris vous oblige à réfléchir, et c'est là que l'apprentissage se fait.

Coddy programming languages illustration

Apprendre à coder avec Coddy

COMMENCER