1. 8
  1.  

  2. 10

    It’s kinda sad watching C++ evolve and the communication around it. It feels like a car accident on an icy road where cars (new features) keep rushing in to help, but then can’t stop and end up making the wreck even worse.

    They keep adding all these complicated features to solve problems with the existing language, and then they find a bunch of gotchas and problems with the new features, so they add even more and more features to solve those problems, and the cycle just keeps repeating. Yet all the bad old crap from the old days is still hanging around, being used in new software just as much as ever, so it just gets more and more complicated and confusing.

    1. 7

      Yes, this is the reason I have never put a ton of effort into the language: it feels like most of the constructs in C++ result from repeated attempts to fix previous bad decisions. I like this talk because, though targeted at people who are trying to work sensibly with C++, it really demonstrates how insane it is. In particular, the attitude of “Doctor, it hurts when I do X! – So don’t do X.” is a peculiarly user-blaming approach to real problems.

      1. 8

        I like this talk because, though targeted at people who are trying to work sensibly with C++, it really demonstrates how insane it is.

        I was a part of the C++ community for years, and from the inside it is very much boiling the frog. It simply doesn’t feel insane when you are steeped in it. Now, years later when I look back, it seems insane… but from the inside, it all felt reasonable.

      2. 5

        It bugs me too that each release we could get a cleaner language by cutting some more of the backwards compatibility with C and even the worser parts of C++, but we usually don’t “because legacy!”.

        1. 2

          i think that never breaking backward compatibility is one of the core features of C++, though. if all you want is a better language that is free not to be backward compatible, you could always just use D. if your objection to that is that D has no ecosystem of libraries, then note that getting rid of cruft from C++ would also break a bunch of existing libraries.