Introduction to Compilers and Language Design

(dthain.github.io)

134 points | by AlexeyBrin 4 hours ago

5 comments

  • madrajib 2 hours ago
    Love such topics and articles in midst of AI topics/noise.
    • giancarlostoro 54 minutes ago
      The best part of the blind AI hatred is you can call literally anything AI slop without presenting evidence and the anti-slop loyalists will hate it without any evidence.

      I do value both correct high quality AI usage and non-AI works, would be nice if we could have a bar for the AI stuff that makes sense instead of dismissing peoples work blindly.

      • solumunus 52 minutes ago
        I guarantee half the folk commenting “ai slop” on people’s projects are folk who never read people’s code even before AI. Now they get to dismiss it without providing any specifics and feel superior.
  • shuyang 2 hours ago
    Took Dr. Thain's compilers class in college! It was the best. He's an excellent instructor, and the course project made me build a working C-style compiler step by step. I think the sample project here is pretty much the project we did; highly recommend following through the entire thing!
  • attila-lendvai 1 hour ago
    it wanders within a tight circle around C and its idiosyncrasies.
    • mike_hock 39 minutes ago
      Probably by design.

      > This book offers a one semester introduction [...] enabling the reader to build a simple compiler that accepts a *C-like language*

  • jdw64 2 hours ago
    Sometimes I see people who design languages and build compilers, and I find them truly amazing. I once tried making a language myself because I was curious, but it was so difficult that I just settled for a simple C backend. The people contributing to LLVM probably know everything down to assembly generation. they're truly incredible.
    • sethhochberg 12 minutes ago
      Honestly whipping up a lexer/parser and a REPL is one of my favorite ways to learn a new language. You can cover a lot of ground in a "real" language by just doing the frontend implementation of your own made-up language grammar and a little eval loop and its great for learning/teaching because you don't get bogged down in trying to solve some actual problem.

      Which is to say: no shame in just settling for that simple C backend!

    • t-3 2 hours ago
      Assembly generation is actually pretty simple, it's optimizing everything that's difficult. Writing an assembler is a great way to get acquainted with compiler construction, because you don't need to think about optimization and types and the other features that make high level languages complicated aren't needed.
      • jdw64 2 hours ago
        I keep saying 'someday...' and never actually doing it because of making a living, but this time I think I should try a few small examples
        • dixtel 51 minutes ago
          I fell you, My dream is to build my own compiler for WASM to use it later for my own pet projects. But after 9-5 job I'm exhusted and only able to work for max 1 hour.

          But I still have hope that I will make it. Maybe coding agent will help me but I dont like the idea that I need help from AI to build this. I want to create compilers through my own hands.

          Anyway, I hope you will make it anyway. :)

  • swordlucky666 2 hours ago
    Compilers teaching materials often skip practical concerns. This resource covers the fundamentals well — would be helpful to see more on optimization passes and code generation trade-offs.
    • Jtsummers 31 minutes ago
      https://news.ycombinator.com/threads?id=swordlucky666 - Sort of embarrassing that anyone vouched for this comment. Reading their history, they copy/paste the same comment or use an autogenerator (probably not an LLM, that'd produce better results) to generate comments like this one.

      Here's a comical one:

      https://news.ycombinator.com/item?id=48445529

      > The discussion on Spanish traders set the standa raises interesting points. In practical applications, the key challenge is balancing performance with maintainability. Would be valuable to see more concrete examples of trade-offs. [emphasis added]

      They glob out part of the submission title (and took too much and cut off in the middle of a word) generating a delightful nonsense descriptor (the italicized bit). The title being:

      > Spanish traders set the standard for GnuCash database design

      • klez 20 minutes ago
        > Sort of embarrassing that anyone vouched for this comment

        I'm the one who vouched it. I don't check commenters' history before doing it. Maybe I should. My LLM-detector is apparently broken (especially on short posts). At face value I saw nothing wrong with it, so I vouched it.

        • Jtsummers 9 minutes ago
          I often check the history for comments that start off [dead] because I like to see if:

          1. There's a problem with the account (and then inform them and maybe notify the mods myself). Sometimes people get shadowbanned without good reason (usually the result of automoderation, not an explicit human moderator action) or for something that happened years ago, but their history is pretty clean since.

          2. To see if the person is just a spammer (as is the case here).

          Though I only do this if the comment seems like something that oughtn't be dead (as this one does on a first glance). The comment is shallow, but not necessarily wrong or bad. It just adds little to the discussion since it boils down to "The book is an introductory text." which we also get from reading the submission title.

    • klez 42 minutes ago
      Hence why it's an "introduction" :)