• witx@lemmy.sdf.org
    link
    fedilink
    arrow-up
    0
    ·
    4 days ago

    To run perhaps. But what about the same metrics for debugging? How many hours do we spend debugging c/c++ issues?

    • lustyargonian@lemm.ee
      link
      fedilink
      arrow-up
      0
      ·
      4 days ago

      What if we make a new language that extends it and makes it fun to write? What if we call it c+=1?

      • FizzyOrange@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        4 days ago

        Private or obscure ones I guess.

        Real-world (macro) benchmarks are at least harder to game, e.g. how long does it take to launch chrome and open Gmail? That’s actually a useful task so if you speed it up, great!

        Also these benchmarks are particularly easy to game because it’s the actual benchmark itself that gets gamed (i.e. the code for each language); not the thing you are trying to measure with the benchmark (the compilers). Usually the benchmark is fixed and it’s the targets that contort themselves to it, which is at least a little harder.

        For example some of the benchmarks for language X literally just call into C libraries to do the work.

    • Dumhuvud@programming.dev
      link
      fedilink
      English
      arrow-up
      0
      ·
      5 days ago

      Typescript and JavaScript get different results!

      It does make sense, if you skim through the research paper (page 11). They aren’t using performance.now() or whatever the state-of-the-art in JS currently is. Their measurements include invocation of the interpreter. And parsing TS involves bigger overhead than parsing JS.

      I assume (didn’t read the whole paper, honestly DGAF) they don’t do that with compiled languages, because there’s no way the gap between compiling C and Rust or C++ is that small.

  • QuazarOmega@lemy.lol
    link
    fedilink
    arrow-up
    0
    ·
    5 days ago

    This doesn’t account for all the comfort food the programmer will have to consume in order to keep themselves sane

  • kersplomp@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    5 days ago

    I just learned about Zig, an effort to make a better C compatible language. It’s been really good so far, I definitely recommend checking it out! It’s early stages for the community, but the core language is pretty developed and is a breath of fresh air compared to C.

  • frezik@midwest.social
    link
    fedilink
    arrow-up
    0
    ·
    5 days ago

    For raw computation, yes. Most programs aren’t raw computation. They run in and out of memory a lot, or are tapping their feet while waiting 2ms for the SSD to get back to them. When we do have raw computation, it tends to be passed off to a C library, anyway, or else something that runs on a GPU.

    We’re not going to significantly reduce datacenter energy use just by rewriting everything in C.

    • BlackLaZoR@fedia.io
      link
      fedilink
      arrow-up
      0
      ·
      5 days ago

      We’re not going to significantly reduce datacenter energy use just by rewriting everything in C.

      We would however introduce a lot of bugs in the critical systems

    • arendjr@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      5 days ago

      I would argue that because C is so hard to program in, even the claim to machine efficiency is arguable. Yes, if you have infinite time for implementation, then C is among the most efficient, but then the same applies to C++, Rust and Zig too, because with infinite time any artificial hurdle can be cleared by the programmer.

      In practice however, programmers have limited time. That means they need to use the tools of the language to save themselves time. Languages with higher levels of abstraction make it easier, not harder, to reach high performance, assuming the abstractions don’t provide too much overhead. C++, Rust and Zig all apply in this domain.

      An example is the situation where you need a hash map or B-Tree map to implement efficient lookups. The languages with higher abstraction give you reusable, high performance options. The C programmer will need to either roll his own, which may not be an option if time Is limited, or choose a lower-performance alternative.

        • witx@lemmy.sdf.org
          link
          fedilink
          arrow-up
          0
          ·
          4 days ago

          And how testable is that solution? Sure macros are helpful but testing and debugging them is a mess

          • RheumatoidArthritis@mander.xyz
            link
            fedilink
            arrow-up
            0
            ·
            3 days ago

            You mean whether the library itself is testable? I have no idea, I didn’t write it, it’s stable and out there for years.

            Whether the program is testable? Why wouldn’t it be. I could debug it just fine. Of course it’s not as easy as Go or Python but let’s not pretend it’s some arcane dark art

        • arendjr@programming.dev
          link
          fedilink
          arrow-up
          0
          ·
          5 days ago

          I’m not saying you can’t, but it’s a lot more work to use such solutions, to say nothing about their quality compared to std solutions in other languages.

          And it’s also just one example. If we bring multi-threading into it, we’re opening another can of worms where C doesn’t particularly shine.

          • KRAW@linux.community
            link
            fedilink
            English
            arrow-up
            0
            ·
            5 days ago

            Not sure I understand your comment on multithreading. pthreads are not very hard to use, and you have stuff like OpenMP if you want some abstraction. What about C is not ideal for multithreading?

            • arendjr@programming.dev
              link
              fedilink
              arrow-up
              0
              ·
              5 days ago

              It’s that the compiler doesn’t help you with preventing race conditions. This makes some problems so hard to solve in C that C programmers simply stay away from attempting it, because they fear the complexity involved.

              It’s a variation of the same theme: Maybe a C programmer could do it too, given infinite time and skill. But in practice it’s often not feasible.

        • arendjr@programming.dev
          link
          fedilink
          arrow-up
          0
          ·
          5 days ago

          Well, let’s be real: many C programs don’t want to rely on Glib, and licensing (as the other reply mentioned) is only one reason. Glib is not exactly known for high performance, and is significantly slower than the alternatives supported by the other languages I mentioned.

            • arendjr@programming.dev
              link
              fedilink
              arrow-up
              0
              ·
              5 days ago

              Which one should I pick then, that is both as fast as the std solutions in the other languages and as reusable for arbitrary use cases?

              Because it sounds like your initial pick made you loose the machine efficiency argument and you can’t have it both ways.

        • calcopiritus@lemmy.world
          link
          fedilink
          arrow-up
          0
          ·
          5 days ago

          Glib us licensed under LGPL. So unless your project is happy with that, it’s as if it didn’t exist. That’s one of the problems of having a small standard library.

          • aubeynarf@lemmynsfw.com
            link
            fedilink
            arrow-up
            0
            ·
            5 days ago

            It’s a single counterexample. there are many, many such libraries for C and the programmer does not have to roll their own.

          • atzanteol@sh.itjust.works
            link
            fedilink
            English
            arrow-up
            0
            ·
            5 days ago

            It’s one of the more permissive licenses - who the hell is going to have a problem with lgpl? You can ship it with proprietary applications.

    • mbirth@lemmy.ml
      link
      fedilink
      arrow-up
      0
      ·
      5 days ago

      Does the paper take into account the energy required to compile the code, the complexity of debugging and thus the required re-compilations after making small changes? Because IMHO that should all be part of the equation.

      • atzanteol@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        0
        ·
        5 days ago

        It’s a good question, but I think the amount of time spent compiling a language is going to be pretty tiny compared to the amount of time the application is running.

        Still - “energy efficiency” may be the worst metric to use when choosing a language.

          • esa@discuss.tchncs.de
            link
            fedilink
            arrow-up
            0
            ·
            5 days ago

            And battery costs, including charging time, for a lot of devices. Users generally aren’t happy with devices that run out of juice all the time.

      • HelloRoot@lemy.lol
        link
        fedilink
        English
        arrow-up
        0
        ·
        5 days ago

        They compile each benchmark solution as needed, following the CLBG guidelines, but they do not measure or report the energy consumed during the compilation step.

        Time to write our own paper with regex and compiler flags.

      • TwistyLex@discuss.tchncs.de
        link
        fedilink
        arrow-up
        0
        ·
        3 days ago

        For Haskell to land that low on the list tells me they either couldn’t find a good Haskell programmer and/or weren’t using GHC.

      • GiorgioPerlasca@lemmy.ml
        link
        fedilink
        arrow-up
        0
        ·
        5 days ago

        Every time I get surprised by the efficiency of Lisp! I guess they mean Common Lisp there, not Clojure or any modern dialect.

      • I Cast Fist@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        5 days ago

        Looking at the Energy/Time ratios (lower is better) on page 15 is also interesting, it gives an idea of how “power hungry per CPU cycle” each language might be. Python’s very high

      • Matriks404@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        edit-2
        5 days ago

        For Lua I think it’s just for the interpreted version, I’ve heard that LuaJIT is amazingly fast (comparable to C++ code), and that’s what for example Löve (game engine) uses, and probably many other projects as well.

      • TCB13@lemmy.world
        cake
        link
        fedilink
        English
        arrow-up
        0
        ·
        5 days ago

        I guess we can take the overhead of rust considering all the advantages. Go however… can’t even.

      • Mihies@programming.dev
        cake
        link
        fedilink
        arrow-up
        0
        ·
        5 days ago

        Also the difference between TS and JS doesn’t make sense at first glance. 🤷‍♂️ I guess I need to read the research.

        • Feyd@programming.dev
          link
          fedilink
          arrow-up
          0
          ·
          5 days ago

          My first thought is perhaps the TS is not targeting ESNext so they’re getting hit with polyfills or something

        • TCB13@lemmy.world
          cake
          link
          fedilink
          English
          arrow-up
          0
          ·
          edit-2
          5 days ago

          It does, the “compiler” adds a bunch of extra garbage for extra safety that really does have an impact.

      • HelloRoot@lemy.lol
        link
        fedilink
        English
        arrow-up
        0
        ·
        5 days ago

        WASM would be interesting as well, because lots of stuff can be compiled to it to run on the web

        • Ben Matthews@sopuli.xyz
          link
          fedilink
          arrow-up
          0
          ·
          5 days ago

          Indeed, here’s an example - my climate-system model web-app, written in scala running (mainly) in wasm
          (note: that was compiled with scala-js 1.17, they say latest 1.19 does wasm faster, I didn’t yet compare).

            • Ben Matthews@sopuli.xyz
              link
              fedilink
              English
              arrow-up
              0
              ·
              5 days ago

              Oh, it’s designed for a big desktop screen, although it just happens to work on mobile devices too - their compute power is enough, but to understand the interactions of complex systems, we need space.

          • Mihies@programming.dev
            cake
            link
            fedilink
            arrow-up
            0
            ·
            5 days ago

            In theory Java is very similar to C#, an IL based JIT runtime with a GC, of course. So where is the difference coming from between the two? How is it better than pascal, a complied language? These are the questions I’m wondering about.

          • esa@discuss.tchncs.de
            link
            fedilink
            arrow-up
            0
            ·
            5 days ago

            And it powers a lot of phones. People generally don’t like it when their phone needs to charge all the freaking time.

            • HelloRoot@lemy.lol
              link
              fedilink
              English
              arrow-up
              0
              ·
              edit-2
              5 days ago

              I ran Linux with KDE on my phone for a while and it for sure needed EVEN MORE charging all the time even though most of the system is C, with a sprinkle of C++ and QT.

              But that is probably due to other inefficiencies and lack of optimization (which is fine, make it work first, optimize later)

              • esa@discuss.tchncs.de
                link
                fedilink
                arrow-up
                0
                ·
                5 days ago

                Yeah, and Android has had some 16 years of “optimize later”. I have some very very limited experience with writing mobile apps and while I found it to be a PITA, there is clearly a lot of thought given to how to not eat all the battery and die in the ecosystem there. I would expect that kind of work to also be done at the JVM level.

                If Windows Mobile had succeeded, C# likely would’ve been lower as well, just because there’d be more incentive to make a battery charge last longer.

                • Mihies@programming.dev
                  cake
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  5 days ago

                  C# has been very optimized since .NET Core (now .NET). Also jit compiler and everything around it.

            • HelloRoot@lemy.lol
              link
              fedilink
              English
              arrow-up
              0
              ·
              edit-2
              5 days ago

              I’m using the fattest of java (Kotlin) on the fattest of frameworks (Spring boot) and it is still decently fast on a 5 year old raspberry pi. I can hit precise 50 μs timings with it.

              Imagine doing it in fat python (as opposed to micropython) instead like all the hip kids.

          • ulterno@programming.dev
            link
            fedilink
            English
            arrow-up
            0
            ·
            5 days ago

            etalon
            /ˈɛtəlɒn/
            noun Physics
            noun: etalon; plural noun: etalons

            a device consisting of two reflecting glass plates, employed for measuring small differences in the wavelength of light using the interference it produces.

            I don’t see how that word makes sense in that phrase

      • JustEnoughDucks@feddit.nl
        link
        fedilink
        arrow-up
        0
        ·
        5 days ago

        I would be interested in how things like MATLAB and octave compare to R and python. But I guess it doesn’t matter as much because the relative time of those being run in a data analysis or research context is probably relatively low compared to production code.

        • esa@discuss.tchncs.de
          link
          fedilink
          arrow-up
          0
          ·
          5 days ago

          Is there a lot of computation-intensive code being written in pure Python? My impression was that the numpy/pandas/polars etc kind of stuff was powered by languages like fortran, rust and c++.