Aller au contenu principal

Programmation C · L2 · Section 12/12

Ressources

Progression

Points d’expérience : XPSérie de jours consécutifs : · —Progression du module : — / —compris

#Ressources C

Une sélection courte, vérifiée, chaque entrée avec son usage précis. Mieux vaut deux références maîtrisées que dix ouvertes en parallèle.

#Références

  • Modern C (Jens Gustedt, téléchargeable légalement sur gustedt.gitlabpages.inria.fr) : la référence du cours, couvre C17 puis C23 (titre « Modern C, 2e édition »), les idiomes et les pièges. Pour chaque notion du module, c’est ici que la définition exacte se trouve.
  • The C Programming Language (Kernighan & Ritchie, 2e édition) : le texte historique, remarquablement dense. À lire en parallèle pour la culture ; le C décrit est pré-C89 sur quelques points (déclarations, prototypes) : vérifiez toujours dans Modern C.
  • Crafting Interpreters (Robert Nystrom, craftinginterpreters.com, en ligne gratuitement) : la référence pour Vaλisp. Les chapitres sur le parsing, l’évaluation et le GC complètent les étapes 3 à 5 du projet.
  • C Programming: A Modern Approach (K.N. King) : alternative pédagogique, exercices progressifs.

#Pages de manuel

Les sections 2 (appels système) et 3 (fonctions de bibliothèque) sont numérotées : le préfixe dans man 3 printf indique la section.

  • man 3 printf, man 3 malloc, man 3 strncpy : fonctions de la bibliothèque, avec leur contrat exact et la section RETURN VALUE à lire systématiquement.
  • man 2 open, man 2 read, man 2 sigaction : appels système, avec la liste exhaustive des errno possibles.
  • man 3 errno : le mécanisme de signalement d’erreur, à connaître avant le chapitre Unix.
  • gcc --help puis man gcc (sections sur les options -W, -O, -fsanitize) : l’outillage du chapitre introduction.
  • man readline, man dlopen : pour les étapes Unix et Vaλisp 5.

Astuce : installer le paquet manpages-dev fournit les sections 2 et 3 complètes sur la plupart des distributions.

#Outils

  • gcc ou clang : le compilateur ; l’un ou l’autre suffit, comparer les diagnostics des deux est un exercice instructif.
  • valgrind : valgrind -q --leak-check=full --show-leak-kinds=all ./prog pour auditer les fuites d’un test de bout en bout.
  • clang-format : uniformise la mise en page ; un fichier .clang-format à la racine du projet évite tout débat.
  • cmocka : framework de tests unitaires en C, pour la cible test du Makefile du chapitre modularité ; l’alternative minimaliste (une macro ASSERT et un compteur) suffit au projet Vaλisp.

#Pour prolonger

  • Le code source de Git, de SQLite ou du noyau Linux : des bases C massives, lisibles, documentées, pour voir les idiomes du module à l’échelle réelle.
  • Beej’s Guide to Network Programming : si le chapitre Unix vous a donné le goût des appels système orientés réseau.
  • Le dépôt de votre Vaλisp, relu six mois plus tard : le meilleur exercice de révision qui existe.