2 points par GN⁺ 5 시간 전 | 1 commentaires | Partager sur WhatsApp
  • 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

1 commentaires

 
GN⁺ 5 시간 전
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

    • C’est probablement intentionnel
      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é ?

    • Le Dragon Book est un peu particulier
      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
    • Rien qu’en lisant la préface de l’édition 2006, on voit que les auteurs considèrent ce livre comme un manuel de niveau master
      « 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

    • Pas forcément
      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
    • La génération d’assembleur elle-même est en réalité assez simple ; ce qui est difficile, c’est d’optimiser l’ensemble
      É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
    • Quand j’apprends un nouveau langage, ce que je préfère, c’est créer rapidement un analyseur lexical/syntaxique et un REPL
      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

    • Cela semble conçu pour suivre, au niveau licence, les thèmes essentiels de la façon dont un langage fonctionne
      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
    • Quel livre recommandez-vous pour apprendre la conception de langages ? Je suis curieux de savoir quels sujets manquent
  • Ça fait plaisir de voir ce type d’article sur les compilateurs au milieu des sujets IA et du bruit ambiant

    • Ce qu’il y a d’étrange dans la haine aveugle de l’IA, c’est que certains collent l’étiquette déchet IA sur n’importe quel article sans preuve, et le camp anti-IA le déteste ensuite sans aucune base
      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