Manuel d’introduction aux compilateurs et à la conception de langages (2021)
(dthain.github.io)- Manuel en ligne gratuit développé pour le cours de compilateurs CSE 40243 de Notre Dame, avec PDF complet et PDF par chapitre téléchargeables directement pour l’étude
- Conçu pour un semestre, il suit le flux de création d’un compilateur et traite du processus de traduction de programmes en langage de haut niveau vers des programmes en langage de bas niveau
- L’objectif pour l’apprenant est d’implémenter un compilateur simple qui prend en entrée un langage proche du C et le convertit en assembleur X86 ou ARM
- Il convient particulièrement à un niveau licence ayant de l’expérience en programmation C et ayant étudié les structures de données et l’architecture des ordinateurs
- Les PDF peuvent être utilisés à des fins personnelles et académiques, mais l’impression et la distribution commerciales sont interdites ; les documents les plus récents doivent être consultés sur compilerbook.org
Manuel basé sur le cours de compilateurs de Notre Dame
- Introduction to Compilers and Language Design est un manuel en ligne gratuit développé par Douglas Thain pour le cours de compilateurs CSE 40243 de l’University of Notre Dame
- La 2e édition date de 2020, avec une date de révision indiquée au 15 janvier 2021
- Les lecteurs qui souhaitent un livre physique peuvent acheter une édition reliée ou brochée
- Le manuel aborde à la fois les aspects théoriques et pratiques de l’informatique à travers la création d’un compilateur depuis zéro
- L’objectif pédagogique final est d’implémenter un compilateur simple traduisant un langage proche du C en assembleur X86 ou ARM
PDF, exemples de code et conditions d’utilisation
- Un PDF complet du manuel et des PDF par chapitre sont proposés
- Les annexes comprennent Sample Course Project, The B-Minor Language et Coding Conventions
- Le dépôt GitHub compilerbook-examples contient des supports pratiques correspondant au livre
- Plusieurs scanners et parseurs
- Une structure de code de démarrage pour le compilateur du projet
- Des cas de test d’exemple pour chaque étape : scanner, parseur, vérificateur de types et générateur de code
- Le PDF peut être téléchargé, imprimé et utilisé à des fins personnelles et académiques
- L’impression ou la distribution commerciale est interdite, et au lieu de copier les PDF en local pour les redistribuer, il faut orienter les étudiants vers la page compilerbook.org
- Les coquilles ou erreurs peuvent être signalées par e-mail à
dthain@nd.eduavec pour objetCompiler Book Errata
1 commentaires
Commentaires sur Hacker News
J’ai suivi le cours de compilation du Dr Thain à l’université, et c’était vraiment excellent
C’était un formidable enseignant, et le projet du cours nous permettait de construire pas à pas notre propre compilateur de style C. Les projets d’exemple ici ressemblent presque exactement à celui que j’avais fait à l’époque, et je recommande vivement d’aller jusqu’au bout
Je ne sais pas encore dans quels cours cela a été couvert, mais C4(https://news.ycombinator.com/item?id=8558822) et C4x86(https://news.ycombinator.com/item?id=8746054) me semblent être de très bons sujets d’étude sur un semestre
Ce sont de très petits compilateurs d’un sous-ensemble de C capables de se compiler eux-mêmes, donc cela paraît aussi être une bonne base pour des devoirs supplémentaires visant à étendre les fonctionnalités
Article lié : Introduction to Compilers and Language Design (2021) - https://news.ycombinator.com/item?id=31388741 - mai 2022, 68 commentaires
Introduction to Compilers and Language Design - https://news.ycombinator.com/item?id=19728749 - avril 2019, 1 commentaire
J’ai l’impression que cela reste cantonné à un périmètre étroit autour du C et de ses conventions particulières
La description du livre dit aussi que c’est « un manuel d’introduction sur un semestre permettant au lecteur de construire un compilateur simple acceptant un langage proche du C »
Selon la préface, le Dragon Book serait donc de niveau master avancé ?
C’est un classique, mais il ne couvre qu’assez légèrement les bases de la théorie de la calculabilité, puis survole rapidement le reste du contenu sur les compilateurs
Il ne traite pas vraiment des sujets modernes de niveau master sur les compilateurs, et ce n’est pas non plus un livre très pratique. Le Tiger Book est une bien meilleure introduction en termes d’équilibre entre pratique et théorie
Les sujets vraiment avancés en compilation sont, à mon avis, difficiles à bien couvrir dans un seul livre
« Il faut au minimum deux trimestres ou deux semestres pour couvrir tout ou la majeure partie de ce livre. En général, la première moitié est étudiée en licence, tandis que la seconde moitié, qui met l’accent sur l’optimisation du code, est traitée en master ou dans un second cours de niveau intermédiaire »
Quand je vois les gens qui conçoivent des langages et construisent des compilateurs, je me dis parfois qu’ils sont vraiment impressionnants
Par curiosité, j’ai essayé de créer moi-même un langage, mais c’était trop difficile, alors je me suis rabattu sur un simple backend C. Les gens qui contribuent à LLVM ont l’air de tout maîtriser, jusqu’à la génération d’assembleur, et c’est assez fascinant
J’étais développeur web avant de passer à un travail sur des compilateurs basés sur LLVM, et LLVM lui-même est tellement vaste qu’il n’est pas facile d’en apprendre tous les domaines et mécanismes
Cela dit, écrire des passes pas trop complexes, corriger des bugs et des régressions ne demande pas forcément un savoir extraordinaire
Écrire un assembleur est une bonne manière de se familiariser avec la structure d’un compilateur, parce qu’on n’a pas à se soucier de l’optimisation, des types ou des nombreuses fonctionnalités qui compliquent les langages de haut niveau
Le simple fait d’implémenter un frontend pour la grammaire du langage que j’ai conçu et une petite boucle d’évaluation permet déjà d’explorer une grande partie d’un vrai langage. Comme on n’est pas bloqué par la résolution de problèmes concrets, c’est aussi très bien pour apprendre et enseigner
Donc il n’y a vraiment aucune raison d’avoir honte de s’être contenté d’un simple backend C
Rien qu’en parcourant la table des matières, on ne voit presque aucun des grands thèmes de la conception de langages
Cela ressemble davantage à une « introduction aux compilateurs » qu’à ce que suggère le titre
C’est d’un niveau adapté pour comprendre des compilateurs Python ou Ruby, ou un compilateur Pascal plus simple
Les compilateurs et la conception de langages sont des domaines aussi anciens que cette industrie, et il y a bien trop de connaissances pour tout faire tenir dans un seul cours. Malgré cela, ce cours est bien, et à mon avis meilleur que des cours similaires basés sur le Dragon Book
Ça fait plaisir de voir ce type d’article sur les compilateurs au milieu des sujets IA et du bruit ambiant
Un usage correct et de qualité de l’IA a de la valeur, et le travail non lié à l’IA en a aussi. Ce serait bien d’avoir des critères raisonnables pour juger les productions liées à l’IA, plutôt que de rabaisser automatiquement le travail des gens
Bon article
J’ai été impressionné par la façon dont il rafraîchit clairement des connaissances que j’avais apprises autrefois grâce à d’excellents exemples