• silasmariner@programming.dev
    link
    fedilink
    English
    arrow-up
    13
    arrow-down
    31
    ·
    edit-2
    2 days ago

    Ironically Go is such a shite verbose language that basically everyone I know who has to work with it will use an llm code-assistant tool to avoid having to write all the boilerplate themselves.

    I know of no other language that comes close to prompting the level of LLM-dependency that Go inspires.

    Edit: well, seems like this goes against the popular consensus but I stand by my guns if the down votes are from average Go enjoyers. If, on the other hand, the down votes stem from the sentiment that even Go should not be vibe coded, I can at least agree with that, but who knows what jimmies I’ve rustled

    • ABetterTomorrow@sh.itjust.works
      link
      fedilink
      English
      arrow-up
      9
      arrow-down
      1
      ·
      2 days ago

      Dude, weird ass comment. You can share your opinions but you don’t have to be negative about it. Remember your opinions is truth (if is) not fact. Like more languages, GO is a tool and it has its purposes. There is no one tool fits all…… except duct tape.

      • silasmariner@programming.dev
        link
        fedilink
        English
        arrow-up
        1
        arrow-down
        3
        ·
        21 hours ago

        Dude, weird ass-comment. I can share my opinions and they don’t have to be positive ones. Go is a tool and its purpose is to be an aesthetic stain on the realm of software.

        Thank you for your attention

    • cub Gucci@lemmy.today
      link
      fedilink
      English
      arrow-up
      8
      ·
      2 days ago

      Hey, here’s my downvote.

      I placed it not because I’m angry or disagree with your original statement, but because you have already acquired several downvotes and I just feel peer pressure to downvote you to hell

        • jim3692@discuss.online
          link
          fedilink
          English
          arrow-up
          2
          ·
          edit-2
          2 days ago

          Can you elaborate? To me, Go seems to have less boilerplate.

          • Go does not have access modifiers
          • Go does not force you to put everything in classes
          • Go does not force you to put every exception, that may be thrown, at the function declaration
          • Go can directly map complex JSONs to structs
          • silasmariner@programming.dev
            link
            fedilink
            English
            arrow-up
            1
            arrow-down
            1
            ·
            21 hours ago

            In reverse order:

            • Directly mapping structs to JSON is a solved problem in userland for every major language
            • yes it does, and worse it’s part of the return signature and null is super-prevalent of necessity as a result
            • even java doesn’t do that any more, but fine I guess
            • cool, but access modifiers actually make a lot of sense. Go’s solution to this is to use capitalisation as a marker, which has no ‘inferential readability’ – public/private is obvious. Foo/foo? Considerably less so

            Further, meta programming in go sucks donkey balls. Sure, it finally got generics but also they suck. Last I checked it still didn’t even support covariance.

          • cub Gucci@lemmy.today
            link
            fedilink
            English
            arrow-up
            2
            ·
            2 days ago

            Yeah, Go is nice sometimes. It shines in codebases that are not quite large and not very small. Also it’s great to write a cli tool in it, though I prefer Rust because I hate myself. What I personally missed in Go (maybe skill issue, idk):

            1. Metaprogramming. For big projects it’s inevitable. You need to have SPOT which generates documentation and headers (e.g. xml document, openapi spec). Otherwise you die. The fact that the source should be a git repo is cancer, as in this case artifacts are added in git, which results in merge conflicts.

            2. DI. In JVM world it is a must. If you don’t have it, you fucking should have a reason for that! If your logic spans across multiple layers of factories, onboarding of a new developer creates friction.

            3. For small web services that are not constrained by memory I would choose spring + openapi, as it really requires only model description and the endpoint, yielding you a client in any language you want.

            4. If err != nill. Don’t let me started on importance of result and either monads.

            5. Aspects and (usable) reflection. I want a codebase that has actual decoupling. I want a security code to be in a completely different place, away from the business logic, just as I want traces with serialization to be pluggable I don’t want to have a single place in code that has a sequence auth -> validate inputs -> trace -> business logic -> validate output. I strongly believe that it’s faulty, untestable and prone to errors.

    • melfie@lemy.lol
      link
      fedilink
      English
      arrow-up
      6
      arrow-down
      3
      ·
      2 days ago

      I upvoted you because I’m annoyed that downvotes often turn into a pack of chickens ganging up on a wounded chicken and pecking it to death. I usually upvote in this situation unless the downvotes are clearly deserved. Otherwise, I use downvotes sparingly and instead withhold my upvote if I don’t agree. I’m happy to get pecked myself to fight back against dickheads who overuse the downvote button in the same manner certain people overuse their car’s horn.

      That being said, I don’t particularly enjoy programming in Go because of weird semantics and because of its missing language features like string interpolation and enums, as well as its use of pointers, which I find to be a lot of busy work with little benefit most of the time. I do actually agree with Go’s oft criticized error handling because it forces you to explicitly consider how to deal with every possible error, which I think is a good thing, though to your point, LLMs can reduce the workload here. Go’s concurrency and speed make it a good choice in many cases, though I’ll usually stick with something else if I don’t absolutely need Go’s benefits.

      • poopkins@lemmy.world
        link
        fedilink
        English
        arrow-up
        4
        ·
        2 days ago

        Ironic how your comment is downvoted as well. It’s funny to me to observe through platforms like this that most humans are thoughtless pack animals and will just do whatever all the other humans are doing and how discourse goes against our nature. There was a study on Reddit some years ago that found that generally speaking, the first vote determines whether a comment will get up- or downvoted.

        • melfie@lemy.lol
          link
          fedilink
          English
          arrow-up
          3
          ·
          edit-2
          2 days ago

          I knew it would be downvoted. I guess humans are evolutionarily hard-wired for conformity, because being ostracized from your tribe usually meant death. Considering all of the humans throughout history who were punished for going against the mob, only to later be celebrated, this is a maladaptive trait in many respects.

          Edit:

          I will say that there are more open-minded, independent thinkers on Lemmy than there are in a lot of other communities.