Journal Crafting Interpreters

Posté par  . Licence CC By‑SA.
Étiquettes : aucune
41
28
avr.
2020

Cher journal,

Je viens t'annoncer une excellente nouvelle. Le livre Crafting Interpreters écrit par Bob Nystrom est enfin achevé !

Ce livre, comme son nom l'indique est une aventure permettant de construire pas à pas un interpréteur pour un langage assez simple appelé Lox. Lox est un langage objet traditionnel, avec des bouts de fonctionnel (comme les closures) et avec une syntaxe familière pour toute personne qui a déjà un peu programmé. Le livre nous emmène tout d'abord dans le monde de l'interprétation directe, en constuisant un interpréteur en Java d'un arbre de syntaxe abstrait, comme beaucoup d'entre nous l'ont déjà fait pendant leurs études. Puis, on entre dans un territoire moins connu, avec la construction d'une machine virtuelle et d'un compilateur de bytecode pour cette machine virtuelle, le tout en C. Au final, on balaie tout un tas de concepts et on se rend compte que tout ça est à la fois simple et compliqué. Il est à noter que tout le code des deux interpréteurs est dans le livre et expliqué quasiment ligne par ligne. De plus, à la fin de chaque chapitre, on a un bout de code fonctionnel avec lequel on peut jouer. Le style de l'auteur est très bon, il agrémente son discours de petites blagues, ou de références geek, ou d'anecdotes. C'est un vrai plaisir, ça se laisse lire tout seul, on ne s'ennuie pas une seule page. Il y a même de petits exercices à chaque fin de chapitre pour essayer des variantes sur les choix fait pour Lox.

Dans un long post sur son blog, il explique le chemin qu'il a traversé pour en arriver à un bouquin de 200000 mots au bout de quatre ans. Il explique notamment sa méthode de travail. Il a d'abord écrit tout le code, en partant d'un autre langage de sa conception qui s'appelle Wren et en enlevant quelques trucs inutiles pour un bouquin pédagogique sur la construction d'un interpréteur. Puis il a découpé le tout pour en faire des chapitres à l'aide d'un script qui est capable de construire le code tel qu'il doit être à la fin de chaque chapitre. Il montre également comment il a dessiné à la main les 181 illustrations de son bouquin, en faisant notamment attention à ce que les parties manuscrites ait les mêmes proportions que la fonte utilisée sur le site web. Il n'en est pas à son coup d'essai puisqu'il avait déjà commis Game Programming Patterns et que professionnellement, il travaile à Google sur le langage Dart.

Et il dévoile son secret pour en arriver jusque là : il écrit tous les jours, sans exception. Il raconte notamment comment il s'est forcé à écrire même pendant les moments douloureux qu'il a traversé pendant cette longue période de quatre ans. Par exemple, il explique qu'il a écrit même le jour où il a enterré une de ses meilleures amies morte d'un AVC. Idem le jour où il a dû faire euthanasier son chien (qu'on voit sur sa photo de blog). Idem le jour où il a appris que sa mère avait un cancer. Sa pugnacité laisse admiratif. Il explique d'ailleurs qu'écrire l'aidait à garder le contrôle sur quelque chose alors qu'il se passait plein de choses sur lesquels il n'avait aucun pouvoir.

Bref, je ne peux que te conseiller la lecture de ce magnifique ouvrage. Même si tu penses en savoir suffisamment sur la manière dont on constuit un interpréteur, tu apprendras sans doute plein de choses. Le code du livre est disponible sur github et l'auteur accepte les patches très régulièrement, notamment concernant toutes les erreurs typographiques qui se trouvent dans le livre.

  • # Excellent bouquin

    Posté par  . Évalué à 3 (+2/-0).

    Je l'ai parcouru et j'ai pu directement résoudre un problème que j'avais depuis pas mal de temps dans un bout de code pour un jeu. Merci :)

    J'ai vu l'info nulle part, une version "solide" (epub ou pdf) est prévue ?

    • [^] # Re: Excellent bouquin

      Posté par  . Évalué à 4 (+1/-0).

      Oui, Bob Nystrom veut en sortir une version papier. Il va attendre un peu que les derniers bugs soient corrigés et ensuite, il va s'atteler à mettre en page tout ça.

      • [^] # Re: Excellent bouquin

        Posté par  . Évalué à 2 (+1/-0).

        Papier ça m'interesse moyen. Ou alors pour soutenir l'auteur et décorer ma bibliothèque éventuellement.
        Je me ferais bien une version epub à partir des sources, mais j'ai pas le temps d'apprendre à la faire pour le moment. Je vais me contenter de la version www, mais c'est moins pratique à lire.

        • [^] # Re: Excellent bouquin

          Posté par  . Évalué à 4 (+1/-0).

          Sur son précédent bouquin, il y avait toutes les versions possibles : imprimée, ebook, PDF et web. Je pense que ça sera pareil pour cette fois.

Envoyer un commentaire

Suivre le flux des commentaires

Note : les commentaires appartiennent à ceux qui les ont postés. Nous n’en sommes pas responsables.