• Jeena@jemmy.jeena.net
    link
    fedilink
    English
    arrow-up
    27
    ·
    1 年前

    At university the by far coolest and most fun course was compiler construction. We had to write something which would compile a small subset of Java (Javalette) into the Java Virtual Machine instruction set.

    I wrote my compiler in Haskell because it seemed that it’d be much less hassle compared to do it in a object oriented or procedual language.

    It ain’t pretty but it’s honest work: https://github.com/jeena/CC/blob/master/Compiler.hs

    • cashews_win@lemmy.world
      link
      fedilink
      English
      arrow-up
      7
      arrow-down
      1
      ·
      1 年前

      I wrote my compiler in Haskell because it seemed that it’d be much less hassle compared to do it in a object oriented or procedual language.

      That is not a feeling I’d associate with Haskell!!

      • Jeena@jemmy.jeena.net
        link
        fedilink
        English
        arrow-up
        6
        ·
        1 年前

        But it definitely was, oh and when you compared the results, I don’t remember the exact number anymore but compared to especially the solutions in Java and C++ the haskell ones used around 1/10 of the lines of code to solve this particular problem. Because in the end this problem really has a recursive nature.

    • CanadaPlus@lemmy.sdf.org
      link
      fedilink
      English
      arrow-up
      4
      ·
      1 年前

      I have an idea for a Rust-like language with total functional methods bouncing around in my head. Lord knows when I’ll get around to building it.

    • nychtelios@rlyeh.icu
      link
      fedilink
      English
      arrow-up
      21
      arrow-down
      1
      ·
      1 年前

      Actually compilers are more complex than operative systems, and incredibly they are built using compilers.

        • phorq
          link
          fedilink
          English
          arrow-up
          14
          ·
          1 年前

          Yup, C is written in C. You bootstrap using a compiler written in another language until your language is complete enough to write its own compiler.

      • pewpew@feddit.it
        link
        fedilink
        English
        arrow-up
        4
        ·
        1 年前

        I belive you. I made a basic OS in around a month and now i’m starting a C compiler, I think I underestimated it a bit

  • joyjoy@lemmy.world
    link
    fedilink
    English
    arrow-up
    8
    arrow-down
    1
    ·
    1 年前

    When you write a compiler, you eventually have to write it twice. Once in a pre-existing language, then again in the language it compiles.

    Just say no to bootstrapping.