It feels like anything is mowed down on the internet. I’ve been a dev for a long time too, and I never feel sure when I chose a stack for a new toy project (in my day job I rarely get to chose, so that’s a non issue there)

  • Matthew
    link
    fedilink
    arrow-up
    21
    ·
    1 year ago

    C# doesn’t have a big spotlight on it like Rust or Python, but it is a popular and very unhated language. It’s a good language that is regularly improving and has phenomenal documentation. Seriously, I’ve not gone to Stack Overflow for anything C# (outside of third-party libraries) for years; Microsoft’s documentation gives me everything I need.

    • Kogasa
      link
      fedilink
      arrow-up
      23
      arrow-down
      1
      ·
      1 year ago

      As a Linux user / human, obligatory fuck Microsoft. As a .NET dev, what they’ve done with C# is really great and it’s a very pleasant language and ecosystem to work with.

    • Elderos@lemmings.world
      link
      fedilink
      arrow-up
      6
      ·
      1 year ago

      It is incredible really, I worked with C# for so long, and I tend to be very critical of the stuff I’ve used for a long time. For C#, I am struggling to figure how I would improve it, because all the stuff that suck in C# is usually the lesser of two evils.

      Of course if you hate classes, types, managed memory or anything invented in the last 20 years you will hate it, and I’ve met people like this. That is why you gotta keep learning as a dev, you don’t want to be one of those.

      • Kogasa
        link
        fedilink
        arrow-up
        6
        ·
        edit-2
        1 year ago

        The 2 that I struggle with on a daily basis:

        • missing discriminated unions. Third party libraries kind of sort of fill the gap, but it’s a pain point.

        • a flawed async programming model. Namely, there are multiple models (for historical reasons / backwards compatibility), and the more current one (task-based) throws a wrench in your ability to effectively design interfaces, functions, delegates etc. that can be shared between synchronous and asynchronous code. Green threads would have fixed this, at the cost of some other potential issues, but it looks we’re stuck with tasks for now. Also, there is the awkwardness of needing to constantly use .ConfigureAwait(false) after every await, unless you shouldn’t (e.g. in the UI thread), and if you get it wrong you might cause a deadlock in your app but not in a console app… A bit confusing and easy to mess up.

        • mavnn@lemmy.sdf.org
          link
          fedilink
          arrow-up
          1
          ·
          1 year ago

          F# will give you discriminated unions and do-notation (it calls it ‘computational expressions’) while retaining full access to the .net ecosystem.

        • Elderos@lemmings.world
          link
          fedilink
          arrow-up
          1
          ·
          1 year ago

          I really like ReactiveX for async programming, though having to go through a library is definitely a pain. It also does not make it less awkward to design your public API unless you’re okay exposing Rx types. Fair points!