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.
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]))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.
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)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 renvoie2.sorted(..., key=...)trie les paires selon ce que renvoie cette fonction, donc par compte.reverse=Truemet 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.
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.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.