• @Rednax@lemmy.world
    link
    fedilink
    91 month ago

    I mean, at the end of the day, if you really understand your language of choice, you know that it is jusf a bunch of fancy libraries and compiler tricks of top of C. So in my mind, I’m a fully evolved programmer in a language, when I could write anything I can write in that language in C instead.

    • lime!
      link
      fedilink
      English
      191 month ago

      only true if your language compiles to c. fortran peeps are safe.

      • @ratel@mander.xyz
        link
        fedilink
        21 month ago

        I thought it compiles to LLVM intermediate representation and then to the machine code of the requested platform arch. Am I missing something?

        • lime!
          link
          fedilink
          English
          21 month ago

          only if you design it using llvm. llvm is pretty new.

        • JackbyDev
          link
          fedilink
          English
          11 month ago

          Fortran is from 1957, LLVM is from 2003. It’s probably like C where there is a compiler tool chain that goes through LLVM like you describe and others that go directly to executables.

    • @nialv7@lemmy.world
      link
      fedilink
      81 month ago

      It’s not what you can use that language to do - all general purpose languages are Turing Complete, so what you can do with them is exactly equal. It is about what the language will do for you. Rust compiler will stop you from writing memory unsafe code, C compiler cannot do that.

      • @qjkxbmwvz@startrek.website
        link
        fedilink
        61 month ago

        …are Turing Complete, so what you can do with them is exactly equal.

        But they’re only equal in the Turing complete sense, which (iirc) says nothing about performance or timing.

      • @Rednax@lemmy.world
        link
        fedilink
        51 month ago

        But how does the Rust compiler do that? What does it actually check? Could I write a compiler in C that does this check on a piece of Rust code?

        C is so simplictic, that if I can write a piece of functionality in C, I must understand its inner workings fully. Not just how to use the feature, but how the feature works under the hood.

        It is often pointless to actually implement the feature in C, since the feature already has a good implementation (see the Rust compiler for the memory safety). But understanding these features, and being able to mentally think about what it takes in C to implement them, is still helpfull for gaining an understanding of the feature.

        • @jj4211@lemmy.world
          link
          fedilink
          31 month ago

          Could I write a compiler in C that does this check on a piece of Rust code?

          Well yes, but that code has to be written in Rust. The human has to follow rules to give the compiler a chance to check things.

          C is so simplictic, that if I can write a piece of functionality in C, I must understand its inner workings fully. Not just how to use the feature, but how the feature works under the hood.

          I don’t think that’s particularly more true of C than Rust or even Golang. In C you are frequently making function calls anyway for the real fun stuff. If you ever compile a “simplistic” chunk of C code that you think is obvious how it would compile to assembly and you open up the assembly output, you are likely to be very surprised with what the compiler chose to do. I’ve seen some professional C developers that never actually had a reason to fully understand how the stack works, since C abstracts that away and the implications of the stack don’t matter until you exceed some limitations.

      • JackbyDev
        link
        fedilink
        English
        11 month ago

        Fun fact, some languages are not turing complete and I believe people would still consider them programming languages. They’re typically targeted at making mathematical proofs.

        • @nialv7@lemmy.world
          link
          fedilink
          21 month ago

          I did say “general purpose”. And many proof assistants are Turing Complete actually, such as Lean.

          • JackbyDev
            link
            fedilink
            English
            11 month ago

            I did say “general purpose”.

            I did say “fun fact”.

    • Rose
      link
      fedilink
      English
      61 month ago

      Or, rather, most compiled languages are just syntactic sugar on top of assembly, and that’s especially true with C. (Oh, you can use curly brances and stuff for blocks? That’s sure easier to read than the label mess you get with assembly.)

      • JackbyDev
        link
        fedilink
        English
        31 month ago

        Assembly is a little too high level for me. I prefer to directly write machine code.

        • Lv_InSaNe_vL
          link
          fedilink
          41 month ago

          You may as well be a script kiddie. I leverage my very steady hand and highly magnetized needle to write my code

    • JackbyDev
      link
      fedilink
      English
      31 month ago

      I mean, yeah, most languages are turing complete.