Intermédiaire·2 min·11 mai 2026

Apprendre à coder un langage en 7 lignes : le hack qui change tout

🎧 Résumé audio0:00 / 0:00
Tu peux écrire un vrai langage de programmation en 3 minutes. Voici comment (et pourquoi c'est malin).
Apprendre à coder un langage en 7 lignes : le hack qui change tout

Pourquoi ça compte pour toi

Comprendre comment un langage fonctionne, c'est débloquer une vision nouvelle de la programmation. Cet article te montre que la magie n'est pas où tu le crois : un interpréteur fonctionnel complet tient en 7 lignes. Ça change ta façon de penser le code.

Ce qu'il faut retenir

  • 1.Le lambda calcul (créé en 1929) est équivalent à n'importe quel ordinateur
  • 2.Un interpréteur minimal = 2 fonctions : eval et apply (le patron utilisé partout)
  • 3.L'architecture passe à l'échelle : tu passes de 7 lignes à un vrai Scheme en ~100 lignes

Tu galères avec le jargon ?

Lis la version réécrite en mode débutant — toutes les idées, sans le jargon.

Pourquoi 7 lignes suffisent

La plupart des langages (Python, JavaScript, Haskell) cachent en réalité le même moteur : le lambda calcul. Créé par le mathématicien Alonzo Church, ce système repose sur trois idées seulement :

  1. Les variables : x
  2. Les fonctions anonymes : (λ x . x) — l'identité
  3. L'appel de fonction : ((λ x . x) valeur)

C'est tout. Pas de boucles, pas de nombres, pas de conditions. Et pourtant, c'est Turing-complet — tu peux calculer n'importe quoi.

L'interpréteur : eval et apply

Tout repose sur deux fonctions :

eval prend une expression et un environnement (un dictionnaire de variables), et retourne une valeur.

apply prend une fonction et un argument, et les assemble.

En Scheme :

(define (eval e env)
  (cond
    ((symbol? e) (cadr (assq e env)))
    ((eq? (car e) 'λ) (cons e env))
    (else (apply (eval (car e) env) (eval (cadr e) env))))))

(define (apply f x)
  (eval (cddr (car f)) (cons (list (cadr (car f)) x) (cdr f))))

Li première branche reconnaît une variable et la cherche dans l'environnement. La deuxième enveloppe une fonction lambda avec son environnement (une closure). La troisième évalue une application : d'abord la fonction, puis l'argument.

Pourquoi c'est une architecture puissante

Cette séparation eval/apply n'est pas accidentelle. C'est le patron du livre de référence Structure and Interpretation of Computer Programs. Elle passe à l'échelle :

  • 7 lignes : lambda calcul pur (Turing-complet mais minimaliste).
  • 100 lignes : un vrai sous-ensemble de Scheme avec conditions, boucles, mutations, variables globales.

Chaque ajout (if, let, letrec, set!) suit la même logique : une branche de correspondance de plus dans eval.

L'exercice concret

Si tu veux vraiment comprendre, essaie ceci :

  1. Copie le code Racket dans try.racket-lang.org.
  2. Teste ((λ x . x) 5) — retourne 5.
  3. Teste (((λ f . (λ x . (f x))) (λ a . a)) (λ b . b)) — un « composeur » de fonctions.

Ce qui paraît magique devient transparent quand tu vois eval traverser l'arbre d'expressions.

À retenir

Les langages que tu utilises tous les jours reposent sur ces fondations. Coder un interpréteur, c'est passer du statut de programmeur à celui de créateur de langages. Et ça prend 3 minutes.

Et concrètement pour toi ?

Choisis ton profil — la lecture de l'article change selon qui tu es.

🔭 Curieux

Pour toi, cet article montre que la programmation n'est pas magique mais mécanique et élégante. L'idée clé : avec juste deux opérations (évaluer et appliquer), on peut faire tourner n'importe quel programme. C'est beau, et ça explique pourquoi l'IA peut apprendre tant de trucs différents.

Newsletters Noésis

3 minutes d'IA dans ta boîte mail, chaque matin.

Rejoins les francophones qui comprennent, essaient et progressent avec l'IA. Choisis ce que tu veux recevoir. Désabonnement en 1 clic.

Explorer les thèmes de cet article :