• Vlyn@lemmy.zip
      link
      fedilink
      English
      arrow-up
      34
      ·
      5 months ago

      Well, there’s modern C++ and it looks reasonable, so you start to think: This isn’t so bad, I can work with that.

      Then you join a company and you find out: They do have modern C++ code, but also half a million lines of older code that’s not in the same style. So there’s 5 different ways to do things and just getting a simple string suddenly has you casting classes and calling functions you have no clue about. And there’s a ton of different ways to shoot your foot off without warning.

      After going to C# I haven’t looked back.

      • 5C5C5C@programming.dev
        link
        fedilink
        arrow-up
        16
        ·
        edit-2
        5 months ago

        And even if you do get to use pure modern C++ you’ll still get burned by subtle cases of undefined behavior (e.g. you probably haven’t memorized every iterator invalidation rule for every container type) that force you to spend weeks debugging an inexplicable crash that happened in production but can only be recreated in 1/10000 runs of your test suite, but vanishes entirely if you compile in debug mode and try to use gdb.

        And don’t even get me started on multi-threading and concurrency.

    • rambling_lunatic
      link
      fedilink
      arrow-up
      9
      ·
      5 months ago

      It’s C with feeping creaturism. Some of the features are good. Others not so much. Personally I agree with Torvalds overall.

    • RoyaltyInTraining@lemmy.world
      link
      fedilink
      arrow-up
      7
      arrow-down
      2
      ·
      5 months ago

      It’s a decent language I guess. My main criticism is that the constructor paradigm just isn’t well suited for RAII. I always find myself retrofitting Rust’s style of object creation into my C++ code.

      • hector
        link
        fedilink
        arrow-up
        4
        arrow-down
        1
        ·
        5 months ago

        Yeah exactly what I experienced. You just end up rewriting Rust constructs!