Stop comparing programming languages

  • Python is versatile
  • JavaScript is powerful
  • Ruby is elegant
  • C is essential
  • C++
  • Java is robust
  • tiredofsametab@kbin.run
    link
    fedilink
    arrow-up
    0
    ·
    16 days ago
    • Rust has safety and efficiency close to C
    • Perl is processing most of your healthcare records
    • Ada is doing space stuff
    • Go is going places
  • mindbleach@sh.itjust.works
    link
    fedilink
    arrow-up
    0
    ·
    16 days ago

    C++ is all of those, provided you pick any 10% of it.

    You’re not supposed to cast every spell in the evil grimoire.

    • BatmanAoD@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      16 days ago

      Well, except “robust”, unless you have very strict code standards, review processes, and static analysis.

      (And arguably it’s never elegant, though that’s almost purely a matter of taste.)

        • BatmanAoD@programming.dev
          link
          fedilink
          arrow-up
          0
          ·
          16 days ago

          I see where you’re coming from, but no matter how many null pointer exceptions there are in Java code, you’re almost always protected from actually wrecking your system in an unrecoverable way; usually the program will just crash, and even provide a relatively helpful error message. The JVM is effectively a safety net, albeit an imperfect one. Whereas in C++, the closest thing you have to a safety net, i.e. something to guarantee that invalid memory usage crashes your program rather than corrupting its own or another process’s memory, is segfaults, which are merely a nicety provided by common hardware, not required by the language or provided by the compiler. Even the, with modern compiler implementations, undefined behavior can cause an effectively unlimited amount of “bad stuff” even on hardware that supports segfaults.

          Additionally, most languages with managed runtimes that existed when Java was introduced didn’t actually have a static type system. In particular, Perl was very popular, and its type system is…uh…well, let’s just say it gives JavaScript some serious competition.

          That said, despite this grain of truth in the statement, I think the perception that Java is comparatively robust is primarily due to Java’s intense marketing (particularly in its early years), which strongly pushed the idea that Java is an “enterprise” language, whatever that means.

  • SatouKazuma@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    17 days ago

    Mfw Rustaceans don’t exist :(

    Also, JavaScript…why are you the way you are? Does anyone have advice for learning it so it makes sense? I can’t even get tutorial projects to run properly…

    • magic_lobster_party@kbin.run
      link
      fedilink
      arrow-up
      0
      ·
      16 days ago

      I like Douglas Crockford’s talks about the “good parts” of JavaScript. They’re old and probably a bit outdated, but he explain quite well the history and why JavaScript is the way like it is.

      It clicked for me when I saw them the first time. Still hate JavaScript though.

      • wreel@lemmy.sdf.org
        link
        fedilink
        English
        arrow-up
        0
        ·
        16 days ago

        What Crockford did was enable a lot of devs to realize there was a viable development platform built into the most prolific and open network client in the world. For that he should be commended but it should have never been taken as “this is a viable general purpose language”.

        • magic_lobster_party@kbin.run
          link
          fedilink
          arrow-up
          0
          ·
          16 days ago

          He also showed that JavaScript has more resemblance to functional programming languages rather than object oriented ones. If you try to treat it as an object oriented language like Java (like the seem to imply), you will have a bad time.

          This has changed with TypeScript though.

    • marcos@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      16 days ago

      Start simple.

      And that probably requires not going with a tutorial. Because the JS ecosystem scorns at “simple”. Just make some HTML scaffold and use MDN to understand the DOM.

    • MajorHavoc@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      17 days ago

      The mantra that got me through JavaScript was “almost nothing we do here is able to be synchronous”.

      Everything about the language makes more sense, with that context.

    • repungnant_canary@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      16 days ago

      Can it even make sense tho? To me JS is an example of a not too good thing that people started too eagerly so now they’re trying to make it make sense.

  • luciole@beehaw.org
    link
    fedilink
    arrow-up
    0
    ·
    17 days ago
    • C++ is fine
    • Python is fine
    • C# is fine
    • PHP is fine
    • JavaScript is fine
    • C is fine
    • Java is fine

    I could go on

      • CanadaPlus@lemmy.sdf.org
        link
        fedilink
        arrow-up
        0
        ·
        16 days ago

        JavaScript is also not fine.

        C++ apparently has a lot of footguns if you use too many parts of it. C and orthodox C++ are fine.

        • polonius-rex@kbin.run
          link
          fedilink
          arrow-up
          0
          ·
          16 days ago

          people say this but C is significantly more batshit than javascript

          oh you used scanf? one of the basic functions of our language? sorry that’s got a buffer overflow vulnerability so now your application is compromised

          • CanadaPlus@lemmy.sdf.org
            link
            fedilink
            arrow-up
            0
            ·
            16 days ago

            Yeah, but as far as I understand that’s not a C vulnerability. It wasn’t added. C just exposes how the underlying CPU works.

            If you could avoid exposing dangerous memory quirks but still retain the same power… well, you’d have invented Rust. Rust is a better language than C, I agree with that.

            • polonius-rex@kbin.run
              link
              fedilink
              arrow-up
              0
              ·
              16 days ago

              exposing the machinations of the underlying CPU with no regard for safety is like, the definition of a footgun

              • CanadaPlus@lemmy.sdf.org
                link
                fedilink
                arrow-up
                0
                ·
                edit-2
                16 days ago

                Okay, but how do you code on a CPU without directly interfacing the CPU at some point? Python and JavaScript both rely on things written in mid-level languages. There’s a difference between a bad tool and one that just has limitations inherent to the technology.

                Like, to echo the meme a bit, it’s not a totally straight comparison. They have different roles.

                • polonius-rex@kbin.run
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  16 days ago

                  a footgun isn’t inherently bad, it just implies a significant amount of risk

                  yes, if you need the ability to code on a low level, maybe C is necessary, but the times where that is actually necessary is smol

                  also rust

            • xigoi@lemmy.sdf.org
              link
              fedilink
              English
              arrow-up
              0
              ·
              16 days ago

              What’s the point of having a function in the standard library if the universal recommendation is to never use it?

              • CanadaPlus@lemmy.sdf.org
                link
                fedilink
                arrow-up
                0
                ·
                edit-2
                15 days ago

                Is that the recommendation? This is the first time I’ve actually seen it discussed.

                I’m wondering at this point if a new, different stdlib would be better. Or just use Rust.

      • polonius-rex@kbin.run
        link
        fedilink
        arrow-up
        0
        ·
        17 days ago

        good luck doing frontend development without it, but it can also do backend development

        it can do everything

            • wreel@lemmy.sdf.org
              link
              fedilink
              English
              arrow-up
              0
              ·
              16 days ago

              I would argue that ASM isn’t “powerful”. It’s direct. You can access advanced features of a CPUs architecture with the trade off limited portability. Sometimes it’s necessary but power comes from being able to express complex control and data structures in a concise and readable amount of text.

              The subjective topic of what “concise and readable” means is where the language wars come in.

        • odium@programming.dev
          link
          fedilink
          arrow-up
          0
          ·
          edit-2
          17 days ago

          That makes it versatile, not powerful.

          When I hear powerful language, I think of languages that are good at intensive tasks like assembly, c, rust, Python (because of numpy, pandas, pyspark, cuda, etc.).

          • echindod@programming.dev
            link
            fedilink
            arrow-up
            0
            ·
            17 days ago

            Python is powerful because it easily wraps C libraries that do real work! Just kidding mostly.

            But yeah, js isn’t a language I would describe as powerful. Ubiquitous? More capable than you would expect given it’s history? Bloated?

            • CanadaPlus@lemmy.sdf.org
              link
              fedilink
              arrow-up
              0
              ·
              16 days ago

              Python is powerful because it easily wraps C libraries that do real work! Just kidding mostly.

              Not kidding. There’s no rule against it though. It’s good at it’s niche.

              • 9point6@lemmy.world
                link
                fedilink
                arrow-up
                0
                ·
                16 days ago

                Does that not put JS (node) back on the table?

                I’d say it’s the low level language doing the heavy lifting, python or JS in this scenario are just front-ends.

                Hell, I think FORTH has C bindings, that’s not power, that’s mental illness

                • CanadaPlus@lemmy.sdf.org
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  16 days ago

                  Sure, but there are good and bad frontends. JavaScript has a tendency to silently fly off the handle in mysterious ways due to the crazy type system. Python will typically fail more predictably, and is famously easy to write. I know nothing about FORTH, honestly.

        • lseif@sopuli.xyz
          link
          fedilink
          arrow-up
          0
          ·
          16 days ago

          if its acceptable to force javascript onto the backend and everywhere else, then why not write the frontend in rust, or anything else than can compile to wasm ?

          • BatmanAoD@programming.dev
            link
            fedilink
            arrow-up
            0
            ·
            16 days ago

            WASM has no native ability to access most web APIs, including the DOM. JavaScript is literally unavoidable on the front end.

            • lseif@sopuli.xyz
              link
              fedilink
              arrow-up
              0
              ·
              edit-2
              16 days ago

              javascript cannot be compiled natively for the backend or desktop either…

              also libraries like wasm bindgen allow a developer to write almost no javascript. and i wouldnt could a few lines of bootstrapping.

              im dont advocate for wasm when its not necessary. nor do i advocate for backend js when its not necessary.

              • BatmanAoD@programming.dev
                link
                fedilink
                arrow-up
                0
                ·
                16 days ago

                Sorry, I’m not sure what your point is. I realize that you can almost completely avoid JavaScript, but the point I’m making is merely that there is a real technical limitation that limits the choices developers can make for front-end code, and although WASM is making great strides in breaking down that barrier (something I’ve been thrilled to see happen, but which is going much more slowly than I had hoped), the limitation is still there. Conversely, such a barrier has never existed on the backend, except in the sense that C limits what all other languages can do.

                • lseif@sopuli.xyz
                  link
                  fedilink
                  arrow-up
                  0
                  ·
                  16 days ago

                  my point is that languages have their places.

                  javascript is great for the frontend. not just because it’s the only choice, but it’s also a lot easier to write code for ui than say, C or rust.

                  however i do not see a reason why it needs to run on servers or desktop apps, bar a few cases. i know node is popular, but i think fullstack devs just like to have everything in the same language, even if it makes it harder to use and slower to run.

                  likewise C, rust, go, whatever, are great for backends, embedded etc, but they shouldnt be ran on in the browser, unless there is a specific reason like heavy computation with little dom interaction.

                  just because a barrier does not exist doesnt mean that we should write programs in a language not designed for the domain.

      • 9point6@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        17 days ago

        IIRC JavaScript + TypeScript is the biggest demographic of engineers in the industry if you go by GitHub stats

        I suppose you could call that power in a way

      • douglasg14b@programming.dev
        cake
        link
        fedilink
        arrow-up
        0
        ·
        edit-2
        16 days ago

        The ecosystem is really it, C# as a language isn’t the best, objectively Typescript is a much more developer friendly and globally type safe (at design time) language. It’s far more versatile than C# in that regard, to the point where there is almost no comparison.

        But holy hell the .Net ecosystem is light-years ahead, it’s so incredibly consistent across major versions, is extremely high quality, has consistent and well considered design advancements, and is absolutely bloody fast. Tie that in with first party frameworks that cover most of all major needs, and it all works together so smoothly, at least for web dev.

    • sparkle@lemm.ee
      link
      fedilink
      Cymraeg
      arrow-up
      0
      ·
      16 days ago

      C++ is inferior to Rust and should be used in no new projects unless it is absolutely necessary

  • reillypascal@lemmy.world
    link
    fedilink
    English
    arrow-up
    0
    ·
    16 days ago

    The only reason I use C++ is because that’s what all the main audio plugin tools use. It’s warty and annoying, although I’m confused why Java would rank higher

      • John Richard@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        16 days ago

        I shit on JavaScript for years… but Deno (built around Rust) is honestly one of the most pleasant tools I’ve used for development, and you get all the completion in VS Code.

    • ChickenLadyLovesLife@lemmy.world
      link
      fedilink
      English
      arrow-up
      0
      ·
      16 days ago

      My main experience using C++ was because I got stuck modifying an app written with Qt Creator, an utterly insane cross-platform framework that used (still uses? I dunno, only people in Finland ever used it in the first place) C++ for the under-the-hood processing and Javascript for the UI. For good measure, the application developers had modified all the C++ stuff with macros to the point where it was barely even recognizable as C++. Fortunately, it mattered not at all because the app’s customers were ISPs who just wanted a Skype clone so they could say they had one even though none of their customers ever used the damn thing.

  • OpenStars@discuss.online
    link
    fedilink
    English
    arrow-up
    0
    ·
    16 days ago

    What is C essential for anymore these days? Genuine question btw.

    I thought C++ was essential for microprocessor control, but that it depends and sometimes I gather people use C instead, but not always.

    Use the language that the company hires you to know:-).

    • MiltownClowns@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      16 days ago

      Used to be embedded systems mostly. Microwaves and the like. Although with the advance of the smart home I don’t know I’d that’s still true.

      • odium@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        16 days ago

        The majority of microwaves, fridges, etc. Still don’t connect to WiFi. It’s mostly the high end ones which do.

      • OpenStars@discuss.online
        link
        fedilink
        English
        arrow-up
        0
        ·
        16 days ago

        It isn’t just a language, but it is a language - as it eventually gets around to saying, but it starts off by saying that it isn’t, then later corrects itself to say that it is, etc. I feel like the focus of this ignores the historical context of what C was written to be for - at the time there was like Assembly, BASIC, Fortran (?), other long-dead languages like was it A and/or A* or whatever, there was a B language too! (developed by Bell Labs, if Google can be trusted these days), etc. - and C was developed to be better than those. So saying that like it lacks type conversions is very much missing the point - those were not invented yet. A lawn mower also lacks those, but it’s okay bc it doesn’t need them:-) I am probably nit-picking far too many points, I suppose to illustrate that the style of the article became a hindrance to me to read it b/c of those reasons. But thank you for sharing regardless.

        • BatmanAoD@programming.dev
          link
          fedilink
          arrow-up
          0
          ·
          15 days ago

          I don’t really like the title either, but the article does demonstrate how unfortunate it is that we’re effectively locked in to using the ABI at some level of nearly every piece of software.

          That said, there definitely were languages with better type systems prior to the invention of C. Pascal is a frequently-cited example.

    • whotookkarl@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      16 days ago

      Pretty much all of the command line coreutils programs I use daily are in C; cd, ls, pwd, touch, rm, etc. If I want to write some small utility I’ll usually reach for a scripting language first like bash python ruby etc, but if it needs to be small and fast I’ll use C instead.

      • BatmanAoD@programming.dev
        link
        fedilink
        arrow-up
        0
        ·
        16 days ago

        Genuine question: if you’re writing a new CLI utility, why not Rust? This is arguably where Rust has most excelled, most famously with ripgrep.

    • psycho_driver@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      16 days ago

      The thing with C is that it’s almost always going to be the fastest high-ish level language and it has an extremely stable ABI. Self contained code written 30 years ago will likely compile with only minor (and sometimes no) tweaks today. You’re lucky to go 3 years on C++ without something fairly big breaking due to changes in the underlying language and ABI.