De zéro à λ en C

Du bit à la λ — 7 cours qui construisent un langage. Sans magie noire. (Presque.)

Le C, c'est comme un couteau suisse : efficace, polyvalent, et vous pouvez vous couper si vous ne faites pas attention.

Avertissement : Ce cours contient des blagues plus ou moins drôles, des parenthèses en excès, et des pointeurs sauvages. L'auteur décline toute responsabilité en cas de segmentation fault en plein partiel.
🧠

De zéro à λ en C

Qu'est-ce que l'informatique ? Pourquoi apprendre le C ? Et qu'est-ce que le LISP vient faire là-dedans ? Les réponses à toutes les questions que vous n'osez pas poser.

informatique C LISP algorithme
📘

Cours 1 — Introduction

Binaires, algorithmes, variables, boucles, fonctions — les bases pour ne plus écrire Hello World comme un touriste.

bits algorithmes factorielle compilation
📗

Cours 2 — Du tableau à la VM

Tableaux, enum, pile, bytecode — on fabrique une machine virtuelle à pile en 300 lignes de C. Parce qu'un processeur logiciel, c'est plus facile à débuguer.

tableaux enum VM bytecode
🧠

Cours 3 — S-expressions

Pointeurs, structures, récursivité — on parse du LISP en C pur, on interprète et on compile vers la VM. Les parenthèses, enfin expliquées.

pointeurs struct récursivité AST
🤖

Cours 4 — Templates & chatbot

Des listes aux tables, des tables aux templates, et du template au chatbot. Parce que le publipostage en C, c'est la classe.

template s-expressions tables chatbot
🦄

Cours 5 — S-expressions : envs, closures & objets

Environnements chaînés, let, set!, fermetures lexicales, cellules mutables, objets par messages, listes, transpileur.

closures objets lambda transpileur
💾

Cours 6 — Persistance, lib & FFI

Sauvegarder/charger l'environnement, prolog.lisp (bibliothèque standard), fonctions natives C, embedding LISP dans le C.

persistance bibliothèque FFI embedding
🚀

Cours 7 — Au-delà du C : langages, paradigmes & applications

Une ouverture sur d'autres langages, paradigmes de programmation, et ce que le C vous a appris pour la suite. Et après ? Rust, Haskell, Python, shell, compilation croisée.

paradigmes Rust Haskell Python

🛠️ Travaux dirigés — 3 séances de 2h

🛠️

TD 1 — Hello World → parseur

De printf("Hello World") à un évaluateur arithmétique S-expression. 7 exercices progressifs.

compilation factorielle parseur
🛠️

TD 2 — Parseur → environnements & closures

Variables, let, set!, fermetures lexicales, listes — votre langage prend vie.

environnement lambda closures
🛠️

TD 3 — Closures → let.c complet

Cellules, objets, natives, bibliothèque standard, persistance, transpileur — on fait le tour complet.

objets FFI persistance

📝 Examens — parce que tout le monde aime les partiels

📄

Sujet A

5 parties, 14 questions, 20 points, 1h30. De int vs long long au comptage de références. Les closures vous rappellent-elles un bon souvenir ? On parie que mystere vous a manqué.

examen 20pts 1h30

Correction A

Barème détaillé, solutions commentées, et un petit mot pour chaque question. « Comment ça, j'ai oublié le cas NULL ? » — tout est dedans.

correction barème
⚖️

Justificatif

« On dirait un examen de LISP, pas de C. » — 3 pages d'arguments pour prouver que non. Tableau, décompte, bonne foi. À glisser sous le nez des sceptiques.

C LISP défense

« Un programme C qui compile a de bonnes chances d'être correct.
Un programme Python qui tourne a de bonnes chances d'être faux jusqu'à 3h du matin. »

— Sagesse populaire du CHAT
(Cercle des Hackeurs Ayant Toujoursraison)