Stop comparing programming languages

  • Python is versatile
  • JavaScript is powerful
  • Ruby is elegant
  • C is essential
  • C++
  • Java is robust
  • SirDimples@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    4 months ago

    Stop comparing tools

    • Hammer is heavy
    • Wrench is elegant
    • Saw is versatile
    • Screwdriver
    • Drill is exciting

    such pointless

  • umbraroze@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    4 months ago

    JavaScript is powerful

    Old joke (yes, you can tell):

    “JavaScript: You shoot yourself in the foot. If using Netscape, your arm falls off. If using Internet Explorer, your head explodes.”

    • sparkle@lemm.ee
      link
      fedilink
      Cymraeg
      arrow-up
      0
      ·
      4 months 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
    ·
    4 months 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
        ·
        4 months 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
      ·
      4 months 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.

    • BatmanAoD@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      4 months ago

      I was a professional C++ developer for several years, and came to the conclusion that any professional C++ developers who don’t acknowledge its flaws have a form of Stockholm Syndrome.

      • eco@lemm.ee
        link
        fedilink
        arrow-up
        0
        ·
        4 months ago

        This is true of every language. If you can’t think of things you don’t like about the language you’re working in (and/or its tooling) you just don’t know the language very well or are in denial.

        • BatmanAoD@programming.dev
          link
          fedilink
          arrow-up
          0
          ·
          4 months ago

          Ehhh, I mean this more strongly. I’ve never met people more in denial about language design problems than C++ adherents. (Though admittedly I haven’t spent much time talking to Lisp fans about language design.)

          • pelya@lemmy.world
            link
            fedilink
            arrow-up
            0
            ·
            4 months ago

            It’s made worse by the fact C++11 made a lot of solutions for the deep problems in the language. As the C++ tradition dictates, the problems themselves are carefully preserved for backward compatibility, the solutions are like a whole different language.

            And Lisp is small - the first Google result provides a Lisp interpreter in 117 lines of Python code.

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

              C++11 also introduced new problems, such as the strange interaction between brace-initialization and initializer-lists (though that was partially fixed several years later), and the fairly arcane rules around move semantics with minimal compiler support (for example, it would be great if the standard required compilers to emit an error if a moved-from object were accessed).

              I know Lisp is minimal, I’m just saying that I expect there are Lisp fans who won’t acknowledge (or would excuse) any shortcomings in the language, just as there are C++ fans who do the same for C++.

  • DarkCloud@lemmy.world
    link
    fedilink
    arrow-up
    0
    ·
    edit-2
    4 months ago

    C++ is focused on getting a strong degree of root control over the hardware of lots of systems. Which is part of why it’s difficult.

    • BatmanAoD@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      4 months ago

      I mean, if you’re talking about CVEs permitting attackers to get control of the hardware of lots of systems, then yes, I agree

    • marcos@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      4 months ago

      Sorry, Undefined Behavior Everywhere was yelling way too loud to hear you clearly.

      Were you talking about strong controlling anything with C++?

  • OpenStars@discuss.online
    link
    fedilink
    English
    arrow-up
    0
    ·
    4 months 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:-).

    • whotookkarl@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      4 months 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
        ·
        4 months 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
      ·
      4 months 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.

      • OpenStars@discuss.online
        link
        fedilink
        English
        arrow-up
        0
        ·
        4 months 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
          ·
          4 months 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.

    • MiltownClowns@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      4 months 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
        ·
        4 months ago

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

  • Xylight@lemdro.id
    link
    fedilink
    English
    arrow-up
    0
    ·
    edit-2
    4 months ago
    • Python is NameError: name 'term\_to\_describe\_python' is not defined

    • JavaScript is [object Object]

    • Ruby is TypeError: Int can't be coerced into String

    • C is segmentation fault

    • C++

    • Java is

    Exception in thread "main" java.lang.NullPointerException: Cannot read the term_to_describe_java because is null at ThrowNullExcep.main(ThrowNullExcep.java:7)
    Exec.main(ThrowNullExcep.java:7) 
    
    • sus@programming.dev
      link
      fedilink
      arrow-up
      0
      ·
      edit-2
      4 months ago

      C++ is std::__cxx11::list<std::__shared_ptr<table, (__gnu_cxx::_Lock_policy)0>, std::allocator<std::__shared_ptr<table, (__gnu_cxx::_Lock_policy)0> > >::erase(std::_List_const_iterator<std::__shared_ptr<table, (__gnu_cxx::_Lock_policy)0> >) /usr/include/c++/12/bits/list.tcc:158

      • LANIK2000@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        4 months ago

        I once forgot to put curly braces around the thing I was adding into a hashmap. If I remember correctly it was like ~300 lines of error code, non of which said “Wrong shit inside the function call ma dude”.

      • lastweakness@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        4 months ago

        Crates aren’t exactly runtime dependencies, so i think that’s fine as long as the 1500+ dependencies actually help prevent reinventing the wheel 1500+ times

      • LordKitsuna@lemmy.world
        link
        fedilink
        arrow-up
        0
        ·
        4 months ago

        I’ll happily download 63928 depends so long as it continues to work. And it does, unlike python projects that also download 2352 depends but in the process brick every other python program on your system

  • SatouKazuma@programming.dev
    link
    fedilink
    arrow-up
    0
    ·
    4 months 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…

    • marcos@lemmy.world
      link
      fedilink
      arrow-up
      0
      ·
      4 months 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
      ·
      4 months 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
      ·
      4 months 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.

    • magic_lobster_party@kbin.run
      link
      fedilink
      arrow-up
      0
      ·
      4 months 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
        ·
        4 months 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
          ·
          4 months 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.