• observantTrapezium@lemmy.ca
    link
    fedilink
    arrow-up
    29
    ·
    2 年前

    I’ve heard this trope before but I’m skeptic. I’m not a C expert but I can’t believe memory bugs in that language are so much more benign than in C++.

    • DarkenLM@kbin.social
      link
      fedilink
      arrow-up
      34
      arrow-down
      1
      ·
      edit-2
      2 年前

      With C, you need to carefully craft your own gun with just iron ingots and a hammer. You will shoot yourself in the foot, but at least you’ll have the knowledge that it was your craftsmanship that led to it.

      With C++, there are already prebuilt guns and tons of modifications that you can combine at will. If you shove it in the right way, you can make a flintlock shoot a 50 cal, but don’t complain when your whole leg gets obliterated.

    • xmunk@sh.itjust.works
      link
      fedilink
      arrow-up
      17
      ·
      2 年前

      It is indeed a trope and a mostly false one - C++ introduces more dramatic ways to footgun yourself but a plethora of tools to make it easier to avoid them - in particular the built in library functions actually encourage good C++ programming practices…

      Well, let’s just ignore gets().

      • MajorHavoc@lemmy.world
        link
        fedilink
        arrow-up
        7
        ·
        2 年前

        Yep. Incredibly powerful, and it will not hesitate to help you blow your own legs off.

        The big difference is that git will save your legs in reflog for a couple of weeks.

        • magic_lobster_party@kbin.social
          link
          fedilink
          arrow-up
          2
          ·
          2 年前

          Learning about reflog was a game changer. Now I’m never afraid of breaking my branch. If I mess up, I can always git reset —hard to a previous state.

          Another game changer was learning that a perfectly valid way of doing squash is to do git reset to an earlier commit and then do git commit -a. Saves a lot of rebasing headache.