• nothacking@discuss.tchncs.de
    link
    fedilink
    arrow-up
    7
    arrow-down
    2
    ·
    8 months ago

    Hot take, C is better then C++. It really just has one unique footgun, pointers, which can be avoided most of the time. C++ has lots of (smart)pointer related footguns, each with their own rules.

    • Valmond@lemmy.world
      link
      fedilink
      arrow-up
      12
      ·
      8 months ago

      If you do C, and avoid pointers, do tell me what the point is using the language at all?

      I mean if memory management is “the only way to shoot yourself in the foot” in C, then thats a quite big part of the language!

      • uis@lemm.ee
        link
        fedilink
        arrow-up
        3
        ·
        edit-2
        8 months ago

        If you do C, and avoid pointers, do tell me what the point is using the language at all?

        Person is saying that C has one big footgun, while C++ has armory of them

    • MajorHavoc@programming.dev
      link
      fedilink
      arrow-up
      5
      ·
      8 months ago

      Yeah. My journey of love, loathing, hatred, adoration, and mild appreciation for C++, ended with the realization that 90% of the time I can get the job done in C with little hassle, and a consistent, predictable, trustworthy set of unholy abominations.

    • jas0n@lemmy.world
      link
      fedilink
      arrow-up
      3
      ·
      edit-2
      8 months ago

      Preach brother, I don’t think that’s a hot take at all. I’ve become almost twice as productive since moving from c++ to c. I think I made the change when I was looking into virtual destructors and I was thinking, “at what point am I solving a problem the language is creating?” Another good example of this is move semantics. It’s only a solution to a problem the language invented.

      My hot take: The general fear of pointers needs to die.

      • porgamrer@programming.dev
        link
        fedilink
        arrow-up
        1
        ·
        edit-2
        8 months ago

        I’m not a fan of C++, but move semantics seem very clearly like a solution to a problem that C invented.

        Though to be honest I could live with manual memory management. What I really don’t understand is how anyone can bear to use C after rewriting the same monomorphic collection type for the 20th time.

        • jas0n@lemmy.world
          link
          fedilink
          arrow-up
          1
          ·
          8 months ago

          Maybe I’m wrong, but aren’t move semantics mostly to aid with smart pointers and move constructors an optimization to avoid copy constructors? Neither of which exist in c.

          I’m not sure what collection type you’re referring to, but most c programmers would probably agree that polymorphism isn’t a good thing.

    • porgamrer@programming.dev
      link
      fedilink
      arrow-up
      1
      ·
      8 months ago

      The only conceivable way to avoid pointers in C is by using indices into arrays, which have the exact same set of problems that pointers do because array indexing and pointer dereferencing are the same thing. If anything array indexing is slightly worse, because the index doesn’t carry a type.

      Also you’re ignoring a whole host of other problems in C. Most notably unions.

      People say that “you only need to learn pointers”, but that’s not a real thing you can do. It’s like saying it’s easy to write correct brainfuck because the language spec is so small. The exact opposite is true.