• CarrotsHaveEars@lemmy.ml
    link
    fedilink
    arrow-up
    1
    ·
    3 days ago

    What you mentioned is compatibility across platforms. A program written in C is also guaranteed to run on all the systems you mentioned, given that the system has a C compiler and libc that stick to the standard. You, the programmer, does not have to anything to “make sure” your program works.

    See this insane list of platforms GCC supports.
    https://en.wikipedia.org/wiki/GNU_Compiler_Collection#Architectures

    We’ve invented high-level programming languages like C 53 years ago, just to get away from assembly, and to avoid dealing with the “cross-platform” problem you mentioned, remember?

    • Azzu@lemmy.dbzer0.com
      link
      fedilink
      arrow-up
      1
      ·
      edit-2
      1 day ago

      What if the system does not have libc? What if your program needs obscure library X?

      Why do you think anyone even came up with the idea of virtual machines? Don’t you think they had a problem they wanted to solve, that was not solved adequately before?

        • Azzu@lemmy.dbzer0.com
          link
          fedilink
          arrow-up
          1
          ·
          edit-2
          9 hours ago

          Maybe you should. Android for example does not use glibc and instead uses “Bionic” by default, which only implements a subset of libc.

          It is possible to write a C program that runs on one system but not on another. You can’t do that with node, if it runs on the VM and the VM runs in another place, your program will also run there.