2 points par GN⁺ 2026-01-17 | 1 commentaires | Partager sur WhatsApp
  • Un livre qui permet d’apprendre directement la conception et l’implémentation de langages de programmation, en suivant le processus de création d’un langage de script complet
  • Explication pas à pas, des concepts de haut niveau comme le parsing, la sémantique, le bytecode et le garbage collection jusqu’à l’implémentation de bas niveau
  • À partir de la fonction main(), le lecteur écrit lui-même un langage incluant le typage dynamique, la portée lexicale, les fonctions de première classe, les classes et l’héritage
  • Proposé en quatre formats — imprimé, eBook, PDF et web —, avec la lecture gratuite de l’intégralité du contenu sur le web
  • Écrit par Robert Nystrom, développeur du langage Dart chez Google, c’est une ressource d’apprentissage pratique de premier plan pour les développeurs intéressés par la création de langages

Présentation du livre

  • Crafting Interpreters est un livre consacré à la mise en œuvre directe d’un langage de script efficace et complet
    • Il couvre à la fois des concepts de haut niveau comme le parsing et la sémantique, et des détails d’implémentation de bas niveau comme la représentation en bytecode et le garbage collection
    • Le livre est conçu pour que le lecteur écrive lui-même le code et comprenne entièrement la structure d’un langage
  • Le langage obtenu prend en charge une syntaxe riche, le typage dynamique, le garbage collection, la portée lexicale, les fonctions de première classe, les closures, les classes et l’héritage
    • Il se compose de quelques milliers de lignes de code concis et rapides, entièrement écrites par le lecteur

Formats disponibles

  • Le livre est proposé en quatre formats : Print, eBook, PDF et Web
    • Print : 640 pages, avec des illustrations dessinées à la main en haute résolution et une typographie soignée
    • eBook : le CSS s’adapte à la taille de l’écran de l’appareil, avec coloration syntaxique et hyperliens
    • PDF : reprend fidèlement la mise en page et les illustrations de l’édition imprimée tout en offrant une meilleure portabilité
    • Web : design responsive incluant tous les chapitres et illustrations, avec accès gratuit à l’intégralité du contenu
    Publicité

À propos de l’auteur

  • L’auteur, Robert Nystrom, participe au développement du langage Dart chez Google
    • Il a auparavant travaillé pendant 8 ans dans le développement de jeux chez Electronic Arts
    • Il est aussi l’auteur du best-seller Game Programming Patterns, également disponible gratuitement
  • Passionné par la création de langages, il a développé plusieurs projets de langages personnels (Wren, Magpie, Finch, Vigil)
  • Il est actif via son blog personnel et Twitter (@munificentbob), et anime une mailing list liée à son livre

Accès et achat

  • L’édition imprimée peut être achetée dans de grandes librairies comme Amazon, Barnes & Noble et Book Depository
  • L’eBook est disponible sur Kindle, Apple Books, Google Play Books et Smashwords
  • La version PDF peut être achetée sur Payhip, avec téléchargement d’un extrait PDF gratuit
  • La version web est consultable gratuitement dans son intégralité sur le site officiel

1 commentaires

 
GN⁺ 2026-01-17
Avis Hacker News
  • En lisant ce livre, j’ai mieux compris le expression problem et le pattern Visitor comme solution
    Grâce à cela, j’ai aussi pleinement saisi le concept de Class Hierarchy Inheritance, qui n’a pas besoin de visitor
    Dans le langage Newspeak, on peut placer des classes imbriquées à l’intérieur d’une classe, et lors de l’héritage, ces classes imbriquées sont elles aussi héritées
    Cet article de blog traite du fait que cette fonctionnalité rend possibles les Free Object Algebras : ce billet
    Références : article sur l’Expression Problem, site officiel de Newspeak
  • Il y a déjà eu deux discussions très populaires sur cet excellent livre
    En 2020, il a atteint 777 points, et en 2024 607 points
  • Ce livre a été une ressource vraiment précieuse pour apprendre un nouveau langage
    On apprend en implémentant soi-même différentes fonctionnalités et patterns de langage
    Dans les langages qui ont des fonctionnalités absentes de Java, il est difficile d’appliquer des patterns similaires, mais le défi en lui-même était amusant
  • J’ai terminé ce livre pendant les vacances d’hiver
    J’ai beaucoup aimé le style décontracté de l’auteur et l’humour disséminé un peu partout
    J’aimerais voir une suite du genre « ajouter un vérificateur de types à Lox »
  • C’est vraiment un excellent livre
    Au début, j’ai acheté la version papier, mais elle était trop grande et trop lourde, donc j’ai fini par racheter la version numérique
    C’est bien plus pratique pour prendre des notes et faire des recherches
    Cela dit, en le lisant, on a parfois l’impression de se perdre dans la montagne :)
    Je recommande aussi un autre livre de l’auteur, Game Programming Patterns
    • J’ai même fait remplacer la reliure par une spirale
      Un imprimeur peut le faire facilement, et c’est bien plus pratique à utiliser sur un bureau
      Mais Crafting Interpreters est un livre que je ne pourrai jamais jeter, donc je l’ai laissé tel quel
  • J’ai acheté l’édition imprimée trois fois pour l’offrir
    C’est dire à quel point ce livre est excellent
    • Merci d’avoir acheté un exemplaire :)
  • C’est l’une des meilleures ressources pour apprendre la conception de compilateurs
    Et le fait que la version web soit gratuite est vraiment généreux
    • Cela dit, le mot « compiler » n’apparaît pas explicitement dans le titre du livre
  • J’adore vraiment ce livre
    Je regrette simplement que la version Java soit ancienne
    J’aimerais une édition révisée prenant en compte des fonctionnalités récentes comme les sealed classes ou le exhaustive switch
    • Le mettre soi-même à niveau vers une version récente de Java est aussi un très bon exercice pratique
      Cela évite d’avoir besoin de l’outil temporaire de génération de code créé par l’auteur
  • Je me demandais comment parser une syntaxe dépendante du contexte comme les typedef en C++
    Il existe des approches un peu bricolées consistant à ajouter une pile de contexte dans un parseur basé sur PEG, mais les problèmes de bascule syntaxique restent difficiles
    Les persistent data structures ou les transactional data structures pourraient peut-être aider, mais je n’ai pas encore trouvé de formalisation claire
    • Il suffit de regarder le Lexer hack
      L’idée est de faire passer un état du parseur au lexer, afin que le lexer connaisse l’ensemble des noms de types
    • Une autre méthode consiste à utiliser un functional parser
      Par exemple, dans des bibliothèques comme Parsec, la notation do permet aux parseurs suivants de partager le résultat de chaque étape
    • La grammaire du C/C++ est catastrophique, d’où ce genre de problèmes
      Heureusement, Rust et Go ont évité cela, et une conception soigneuse permet tout à fait de s’en prémunir
  • Pour ceux qui veulent se lancer dans les interpréteurs, je partage quelques ressources
    Vous pouvez consulter le projet shi et, si le C vous intéresse davantage, hacktical-c