De zéro à λ en C
Justificatif : pourquoi ce n'est pas un examen de LISP

Ce document répond à la critique : « On dirait un examen de LISP plus que de C. »

1. Argument central

Ce cours construit un interpréteur LISP en C — chaque question qui évoque du LISP teste en réalité une compétence C précise, déguisée.

Question Apparence Sous le capot, c'est du C
Q2 Fermeture lexicale Structures chaînées, malloc/copie de listes chaînées, gestion mémoire, pointeurs de fonctions
Q3 let vs set! Manipulation de listes chaînées, -> pointeur, shadowing = ajout en tête, mutation = parcours et modification
Q8 Arbre S-expression Union discriminée (SEXPR_INT/SYM/CONS), pointeurs récursifs, représentation mémoire d'un AST
Q9 Profondeur d'arbre Parcours récursif d'arbre binaire en C — exactement comme un AST de compilateur
Q13 apply_closure Reconstruction d'une chaîne de struct Env à partir d'un snapshot linéarisé
Q14 Refcounting malloc/free manuel, comptage de références, double free, use-after-free, pointeurs partagés

2. Questions explicitement C (7,5 pts / 20)

Personne ne contestera que ces 7,5 points sont du C pur.

3. Questions « LISP » = questions C déguisées

Même les questions qui semblent parler de LISP demandent des compétences C fondamentales :

4. La spécificité de cette UV

Si l'examen ne contenait que du C classique (factorielle, chaînes, tableaux), que resterait-il du cours ? La spécificité de cette UV, c'est précisément d'utiliser le C comme outil pour construire quelque chose de plus grand — un langage.

Enlever le LISP, ce serait enlever la moitié de la matière enseignée. Les structures de données (listes chaînées, arbres, environnements), la gestion mémoire (malloc/free, refcounting), et l'architecture logicielle (REPL, VM, évaluateur) sont enseignées à travers le LISP, pas à la place du C.

Conclusion

L'examen teste bien des compétences C sur 20 points :

— soit 20/20 de C, dont le LISP est simplement le support pédagogique.

— Juin 2026
Enseignant responsable du cours « De zéro à λ en C », ENSISA 1A