• Ananace@lemmy.ananace.dev
    link
    fedilink
    arrow-up
    46
    ·
    2 months ago

    Go really does do well in the zero-to-hero case, that’s for certain. Unfortunately it doesn’t fare nearly as well in terms of ease when it comes to continued development.

    • andrew@lemmy.stuart.fun
      link
      fedilink
      English
      arrow-up
      8
      ·
      2 months ago

      Is there a language that anyone would say really does fare well for continued development or is it just that few people enjoy maintaining code? I’ve maintained some pretty old Go programs I wrote and didn’t mind it at all. I’ve inherited some brand new ones and wanted to rage quit immediately. I’ve also hated my own code too, so it’s not just whether or not I wrote it.

      I have found maintainability is vastly more about the abstractions and architecture (modules and cohesive design etc) chosen than it is about the language.

      • BatmanAoD@programming.dev
        link
        fedilink
        arrow-up
        17
        ·
        2 months ago

        Rust is extremely geared toward maintainability at the cost of other values such as learnability and iteration speed. Whether it’s successful is of course somewhat a matter of opinion (at least until we figure out how to do good quantitative studies on software maintainability), and it is of course possible to write brittle Rust code. But it does make a lot of common errors (including ones Go facilitates) hard or impossible to replicate.

        It also strongly pushes toward specific types of abstractions and architectural decisions, which is pretty unique among mainstream languages, and is of course a large part of what critics dislike about it (since that’s extremely limiting compared to the freedom most languages give you). But the ability for the compiler to influence the high-level design and code organization is a large part of what makes Rust uniquely maintainability-focused, at least in theory.

      • kaffiene@lemmy.world
        link
        fedilink
        English
        arrow-up
        6
        ·
        2 months ago

        If I’m going to inherit a large code base to maintain, I’d like Java, C# the most, Python, the least. Go isnt too bad IMO. I’ve not worked with enough Rust code to really judge it. BTW I like Python but lack of types makes refactoring and discoverability harder

  • Fal@yiffit.net
    link
    fedilink
    English
    arrow-up
    19
    arrow-down
    45
    ·
    2 months ago

    Terrible meme. Go is bad and you should feel bad

    • TheEntity@lemmy.world
      link
      fedilink
      arrow-up
      53
      arrow-down
      3
      ·
      edit-2
      2 months ago

      Go is like that abusive partner that gives you flowers and the next day makes you feel like shit. Then another day you go to an expensive restaurant and you tell yourself that maybe it’s not so bad and they still care. And the cycle continues.

      Rust is an autistic partner that sometimes struggles with telling you how much they care, is often overly pedantic about technical correctness and easily gets sidetracked by details, but with some genuine effort from both sides it’s very much a workable relationship.

      • Technus@lemmy.zip
        link
        fedilink
        arrow-up
        31
        arrow-down
        3
        ·
        2 months ago

        Yeah but Go has the best error handling paradigm of any programming language ever created:

        ret, err := do_thing()
        
        if err != nil {
            return nil, err
        }
        

        Don’t you just love doing that every 5 lines of code?

        • kaffiene@lemmy.world
          link
          fedilink
          English
          arrow-up
          5
          ·
          2 months ago

          I actually reasonably like Go. It’s simple and pragmatic but I fucking loathe its error handling. To me it just replicates one of the worst features of C

          • TheEntity@lemmy.world
            link
            fedilink
            arrow-up
            20
            arrow-down
            1
            ·
            2 months ago

            With some sprinkle of libraries such as anyhow and thiserror the Rust errors become actually pleasant to use. The vanilla way is indeed painful when you start handling more than one type of error at a time.

            • Fal@yiffit.net
              link
              fedilink
              English
              arrow-up
              6
              ·
              2 months ago

              Exactly this. Anyhow makes error handling in rust actually a joy. It’s only something you need to consider if you’re writing a library for others to use, and in that case, it’s good that rust forces you to be very very explicit

        • sunbeam60@lemmy.one
          link
          fedilink
          arrow-up
          2
          ·
          edit-2
          2 months ago

          I do think Zig is better for this kind of thing.

          const ret = try do_thing();
          
          if( ret ) | result | {
             do_something_with_result(result);
          }
          

          The try keyword returns any error up; the if-unwrap works with what came out of a successful call. Normally you wouldn’t have both, of course.

          do_thing would be defined as a union of an error (a distinct kind of type, so it can be reasoned about with try, catch and unwrapping) and the wrapped return value.

        • Shareni@programming.dev
          link
          fedilink
          arrow-up
          12
          arrow-down
          11
          ·
          2 months ago

          It’s not pretty, but it’s uniform, obvious, and easy to understand.

          go is good grug friend who chase away complexity demon by limit damage of big brain developer

    • kaffiene@lemmy.world
      link
      fedilink
      English
      arrow-up
      2
      ·
      2 months ago

      I think I’d rather code in Go than Rust. But I’m not a great Rust programmer so my opinion may not count. I can code effectively in C, C++, Go, Java, C#, Python, and a few others, but Rust is the only language that I find hard to use. I’m probably just dumb

      • Fal@yiffit.net
        link
        fedilink
        English
        arrow-up
        1
        arrow-down
        3
        ·
        2 months ago

        Are you using an IDE like rustrover? Rust is by far the easiest language I’ve worked with. It makes it so the only way to write code is the right way

        • kaffiene@lemmy.world
          link
          fedilink
          English
          arrow-up
          1
          ·
          2 months ago

          Yes, I was using Rustrover the last time I used Rust. VSCode previously. I’ve tried to get into Rust a few times and really just failed repeatedly. Ill probably try again at some point but my experience thus far hasn’t been great