C++: The Documentary

(herbsutter.com)

118 points | by ingve 4 hours ago ago

41 comments

  • jdw64 an hour ago

    It's surprising that C++'s development trend continues.

    When a game or program is made with C++, it's usually nice because performance is mostly guaranteed. But if someone told me to write C++ myself, I'd cry. There's too much to memorize, and the standards are too varied. When I go to a project site for maintenance and it's a C++ project, I instantly lose energy — because it's just too difficult.

    I'd be happy if someone else wrote it, but it's not a language I want to write myself

    • bayindirh an hour ago

      Personally I don't find programming with C++ that hard. The downside is it needs a brain warm-up, and this is per project, but once that flywheel is spinning, I find it almost effortless to write code.

      I have to go through the same warm-up more or less for any language I work with, so it's not that different than writing Python, Go or Java for me.

      • lelanthran 4 minutes ago

        > The downside is it needs a brain warm-up, and this is per project, but once that flywheel is spinning, I find it almost effortless to write code.

        How is that different from other languages, which don't need the brain warm-up?

      • jdw64 an hour ago

        There are so many standards and idioms that it gets confusing. There are still legacy codebases out there — some codebase still use C++98 as their standard, others use C++11... And with Unreal Engine, the modern C++ standard is C++14, right? There are things like smart pointers, but some places don't even use them. I feel like there are just too many features. When I saw template metaprogramming — that new feature — I realized I have no talent for C++.

        • bayindirh an hour ago

          I have developed things with C++98, C++11 and C++14. Every of these standards are so vast, so remembering everything (even in a single standard) is not possible. Instead of knowing everything, I first fix the standard I want or need to work with.

          Then I design the thing I want to build. I always design what I want to build beforehand. This takes a couple of iterations from high level to low-ish level. That last design becomes a bit language dependent. Then I select some of the core tools that I'm going to use (which kind of pointers, classes or structs, etc.)

          With that design in mind, I go "library shopping" both for file formats (if any) or other stuff like vectors, etc.

          Armed with the reference docs of these, I write my code with the toolbelt I have built for the project.

          Some things are hard, but they are not impossible. I find thinking like compiler helps a lot.

        • maccard 10 minutes ago

          This is true of any language. Python with flask vs django, with/without type hints. JavaScript with anhular and vue.

          The varying standards are no different to major python versions or go versions - arguably there’s even less between most versions than there is in your average go release.

          The differences in apps and frameworks don’t matter for day to day - std::string, Unreal’s FString and QT’s QString all are similar enough that 99.9% of the time.

          Metaprogramming is one of those things; you either write it or you don’t. Knowing some basics is required but the vast majority of people use a handful of pre existing things without understanding the nuances of how it works under the hood.

        • flohofwoe 14 minutes ago

          > When I saw template metaprogramming — that new feature — I realized I have no talent for C++.

          It's not a new feature. And tbh, compared to Typescript, C++ templates are tame ;)

          (but yeah, deciding when to stop digging into the template metaprogramming rabbit hole requires some common sense and sanity, too much template complexity is almost never worth the hassle)

    • samiv 9 minutes ago

      You're right that C++ has a lot of features. But like mentioned elsewhere most projects define their own conventions and the subset of features that they use.

      Also the nice thing about having a large set of features is that C,++ allows you to write very nice abstractions (or not) at both very low or at very high level. In other words you can be very low level with online ASM and bit operations and bit and direct memory manipulation or very high level almost like a script language. Whatever the problem domain needs C++ has got you covered.

    • flohofwoe 25 minutes ago

      For games, C++ becomes a much simpler language since game code bases usually ignore the C++ stdlib (at least mostly, and for good reasons, e.g. see [0]). And without the stdlib C++ is actually kinda-sorta okay-ish.

      Related, the main problem with the C++ ecosystem is that everybody carves out their own language subset, so it's not one ecosystem but many ecosystems with contradicting styles and language/stdlib subsets. This makes code reuse via libraries much harder than it should be.

      [0] https://hftuniversity.com/post/the-c-standard-library-has-be...

      • samiv 15 minutes ago

        If you don't use the STL you end up re-implementing it yourself. Usually poorly.

        • leonidasrup 3 minutes ago

          C+ Standard Template Library is the best designed part of C++ library. It was designed by Alexander Stepanov.

          https://en.wikipedia.org/wiki/Alexander_Stepanov

        • flohofwoe 9 minutes ago

          > Usually poorly.

          On the contrary. You can focus exactly on the features the higher level game code needs. The C++ stdlib is (for the most part) poorly designed, usually poorly implemented, the main reason for slow build times, and its complexity explodes because it needs to consider all edge cases that most code bases don't ever trigger.

          A specialized dynamic array class in a few hundred lines (at most!) and with just the required features is much more useful than the 20kloc monster that's pulled in with `#include <vector>` and which doesn't even do bounds checking in the 'idiomatic' usage.

          • samiv 2 minutes ago

            Yes I don't disagree that sometimes a specific container or a data structure is great for the problem. Problem is that most of the game code and related code (so tooling,editor, auxiliary engine code) does need a typical STL type functionality and then when the org has "omg no STL" blanket rule someone ends up implementing STL and that's almost always worse than the STL that ships with the tool chain. Even worse..it'll be missing features and data structures and then people have to write sub-optimal code to work around it's limitations.

      • Chaosvex 18 minutes ago

        That article probably isn't the best source to cite. You can look at the discussions on it elsewhere, although I'd just dismiss it as slop.

        The standard library is mostly fine to use unless you have specific needs.

        The bit about libraries is nonsense, sorry.

        • flohofwoe 16 minutes ago

          The article might be slop, but the problems described in it are definitely real ;)

          • Chaosvex 13 minutes ago

            Grossly exaggerated or misunderstood in many cases. Some of their arguments are just flat-out wrong.

            I mean, why are they blaming the standard library for inherent properties of linked lists? Yeah, you don't want to use them without good reason. That's just called picking the right data structure for the job, not a flaw with the standard library.

            Some of the other choices were tradeoffs between performance and usability. The standard maps have stable iterators, whereas third-party implementations almost never do because you can write faster implementations if you're willing to live without those guarantees. Was it the right choice in hindsight? Maybe, maybe not.

            I'd personally like to see a namespaced versioned standard library but like that's ever going to happen

            • flohofwoe 8 minutes ago

              As I understood the article, the main critique is that the stdlib has no concept of deprecation and breaking backward compatibility. E.g. the C++ committee is quick to add badly designed features to the stdlib but then can't roll them back when people actually realize that those new features are useless for most real-world code.

    • tenderfault 2 minutes ago

      funny, I think the same about rust.

    • zerr 27 minutes ago

      You can be pretty productive even with 70% of the language :) It is a common misconception that C++ is suitable only for game engines and similar domains. It is perfectly fine for applications domain as well.

      As a side note, regarding your profile info, unless you are based in North Korea, please at least add one 0 to your rate. You'll get more long-term and high-quality clientele.

      • jdw64 21 minutes ago

        Honestly, I don't expect to find clients here. Fundamentally, you have to trust me to give me work. The amount of money doesn't really matter much to me.

        • zerr 9 minutes ago

          I mean, the lower rates arouse suspicions. The higher you value your work, the more trustworthy you appear to clients.

    • logicchains 30 minutes ago

      >There's too much to memorize, and the standards are too varied. When I go to a project site for maintenance and it's a C++ project, I instantly lose energy — because it's just too difficult.

      If you'd already been using it for 10+ years you wouldn't feel that way, because you'd already have memorized a lot of it.

      • Davidbrcz 2 minutes ago

        Except the language keeps growing, with

        - new features overlapping old features previous standards without replacing them or deprecating them. - new features not usable by the layman - ...

        See function::copyable_function vs std::function, modules, coroutines, Reflection syntax is cryptic at best, ...

    • nnevatie an hour ago

      The language is fine, mostly, nowadays.

      The ecosystem isn't fine - just to get a project going requires picking a non-trivial set of tools and approaches, none of which the C++ standard enforces or guides to.

      For example, will you manage dependencies via packages? If so, with what? What will you use for building your project? The list goes on and on.

      • bayindirh an hour ago

        I personally find the lack of native package management in C++ as a blessing. Go, Python, Rust has it, and this always causes pulling in infinite number of packages for any trivial operation.

        sudo-rs was pulling in 1M+ LOC as its dependency chain at one point. I believe they removed the biggest offenders, but I didn't check it recently.

  • bdamm an hour ago

    Since I've been working in C++ a lot recently I decided to watch the video as I waited for a build to complete. So the length is about right. And fortunately, the video is a delight!

    • zeafoamrun an hour ago

      I have read as much as I can on the history of C++ and I'm looking forward to watch this. I find the process of it's evolution deeply fascinating.

  • i_am_a_peasant 8 minutes ago

    My only problem with C++ is that it’s too verbose. my eyes need to parse huuge chunks of things when I just want some convenient syntax for it. otherwise the idioms are pretty universal for most programming languages nowadays.

  • Tomte an hour ago

    I‘m out of the loop: we‘ve had Python, Clojure and possibly something else recently. Is that a series by the same people working through several languages? Is it happenstance? Is it a trend, and every programming language is now scrambling to get their own video documentary?

  • ChrisSD 11 minutes ago

    "Documentary". Seems more like a marketing piece. There doesn't appear to be much on the way of journalism involved.

  • grugdev42 14 minutes ago

    Thank you for releasing this for free! :)

  • claiir an hour ago

    > currently (as of Q3 2025) the fastest-growing of the top four languages in the world… +90% users in the past 3.5 years.

    Because of AI, right?

    • raincole 25 minutes ago

      If this is a rhetorical question I genuinely don't know what's the implied answer. Why would AI specifically make C++ grow?

      • DesaiAshu 14 minutes ago

        A few reasons: 1. Header files make C++ verbose. Header files are well within LLM's ability 2. LLMs can handle setting up cmake for you 3. C++ is very well documented relative to (most) newer languages 4. LLMs can port modern features like websockets and build API wrappers easily, reducing the disadvantage against web (since most documentation is for JS/python/go)

        Coding languages have been developing for speed of (manual) writing - akin to how human languages did with modern alphabets. Now that writing is a lot easier, languages will likely evolve towards a focus on execution (or in the case of human languages, speed of reading and precision of understanding)

    • bayindirh an hour ago

      Let's assume that it's because of AI for this case.

      Is this good or bad?

    • visha1v an hour ago

      but do vibe coders even use c++? won't they use js or python?

  • gizajob an hour ago

    Is it better than the Erlang documentary?

    • zerr 39 minutes ago

      Hello Mike.

      (if you mean that film, most likely no.)

      • gizajob 34 minutes ago

        Hello Joe. Is the system working?

  • keyle an hour ago

             +90% users in the past 3.5 years
    
    huh? That is incredible growth. How is it even measured?