The worst programming language of all time



A little video about C++.

0:00 Introduction
1:39 Casting in C++.
2:47 Keywords
5:31 Types
7:02 Different Ways to Do the Same Thing
7:20 const
8:20 Formatting and Style
9:40 Naming Conventions
14:16 Header Files
20:28 Namespaces
24:50 Compile Times
26:51 Modern C++.
31:53 C/C++.
33:08 C++ Edge Cases
34:53 Compilers and Build Systems
40:35 Installing a Library in C++.
46:13 Package Managers
47:13 The Windows API
48:46 The Standard Library
55:56 New Features
57:10 Deprecated Features
57:37 The Fatigue of Starting a New Project
58:39 C++ GUIs
1:03:49 Errors in C++.
1:04:31 Templates
1:10:30 IDE Problems
1:14:58 Quality of Life Problems
1:16:50 Serialization in C++.
1:18:39 Bad Defaults
1:23:46 The Most Ironic Thing About C++.
1:25:31 Implicit Conversions
1:27:04 Invisible Behavior in C++.
1:27:39 The Real Reason Why C++ is Verbose
1:30:01 Operator Overloading
1:32:09 Ownership and Move Semantics
1:33:15 Quirks, Tips, Footguns
1:36:19 The Real Reason Why C++ Is Difficult
1:37:23 Idioms in C++.
1:37:48 Domain Difficulty
1:38:43 Memory Safety
1:41:11 Undefined Behavior
1:42:43 Error Handling in C++.
1:43:48 Writing Tests in C++.
1:47:04 The Broken Promise of Zero Cost Abstractions
1:47:52 The Lack of Performance Oriented Features in C++.
1:50:34 The Biggest Lie of C++.
1:53:48 The Harsh Reality of C++ Jobs
1:56:43 The Final Verdict
1:58:32 “There are only two kinds of languages…”
1:59:04 Who Should Learn C++?
1:59:51 How Long Does It Take To Learn C++?
2:00:40 Pick a Project You’re Passionate About
2:00:55 Why I Write C++.
2:01:46 Terrible Reasons To Learn C++.
2:02:18 How To Learn C++.
2:03:07 The Final Lesson of C++.
2:03:37 Rust
2:08:44 Is C++ Dying?

source

23 Comments

  1. There are those languages which people forget completely as no one uses them and there are those which people complain forever since its reliable and used everywhere.

  2. The description of header-only libraries around 45:35 is incorrect. They don't have to be a single header file, they just don't include *.cpp files. And you would `#include` them like any other header, not copy-paste them into your project. The point is to avoid issues with compiler/ABI/build system mismatches that you were talking about earlier by having your build system also control compilation of the library. (But ofc including more headers is also going to inflate compile time of your project…)

  3. 1:14:07 because .h is for C headers not C++!!! You should never ever use .h for C++

    And if you changed the extension to .java, I guess there would be even more "useless and irrelevant error messages", it's not the tool's fault, you're using the wrong file extension. In fact, the tool worked correctly.

    I that some IDEs think .h means C++ (since I'm a C developer). A good IDE should always treat .h as C, unconditionally. I don't care that people also use this extension for C++, that's their fault.

  4. As a C loyalist, I am happy to be vindicated in my belief that C++ is evil. However, I figured I'd mention that using C libraries isn't anywhere near as bad as you are implying. If you want to use only a certain function from a library, you just write its function prototype in your code to declare the symbol and function signature. Then, you give the linker the library path to link against. In no way are you forced to use header files, nor import everything from a library at once, possibly contaminating your code. You end up with a workflow very much like "from X import Y" in python. You can easily reference code even from other languages this way, for instance getting BLAS calls written in Fortran, without ever including a BLAS header. This is really quite elegant, imo.

    Header files are literally just a convention. Due to the fact that the include just copy-pastes a file, you can do things however you want. You don't have to user headers at all if you don't want to, just include your other C files, or don't, just define function prototypes when you want to import them and link your files together. Header files are just a convention, and a bad one, and the language is better without them.

    In C, dependencies are resolved at link time. So yes, it's quite different from python, but it's not substantially more unintuitive or less functional. Of course, it's still C, so there's more footgun surface than Python—if you write the function prototype incorrectly, you are going to have problems, and you may encounter quite evil errors if you try to use cross-language calls without fully understanding them. Fortran and C, for example, use opposite ordering for rows/columns in 2-dimensional arrays, which will ruin your life if you try to use the aforementioned direct BLAS call without knowing this. But the problem is not in the dependency or import system.

    Regardless, I'm not sure you should be using C at all for software with a lot of dependencies. In my mind C is like a "leaf" language—you write low-level functionality in it and use it as a component in some higher level script, most of the time. If you're importing a ton of libraries in C, you should consider whether you really need to be writing whatever you're writing entirely in a low level language with manual memory allocation, or whether the performance-critical C code can be abstracted into an algorithm library that can be called from Python or whatever else.

    No idea if any of this applies to C++ and I don't care to learn, fuck C++.

  5. If you are a beginner and want to ease into it, use js or python, which do what you want without you understanding how they do it.

    If the how matters, you need to learn a few things about computer architecture, and then c and c++ will make perfect sense.

    Js and python don't require you to know anything about computer architecture, they just work, magically and fool-proof like.

  6. “There are only two kinds of languages: the ones people complain about and the ones nobody uses.”

    ― Bjarne Stroustrup, The C++ Programming Language

  7. the cs department of university of copenhagen’s student show once mock interviewed bjarne, and asked “why is c++ so ugly?” he answered: “why is danish so ugly? it has been there for a long time and a lot of people have added stuff to it”. i think it is in the 2012 diku revy.

    but yes, danish and c++ are very much alike.

  8. I agree with your criticisms of the language but not the tooling.
    CLion fixes most of the issues concerning actually writing code that you complained about.
    If I was forced to use only Visual Studio and have my IDE not be able to autocomplete with tab or reorganize my headers alphabetically I'd hate writing it too.
    I also disagree with your point about AI tooling, the caveat is that the only time I find it "good" is when using vscode's copilot integration. It's okay outside of that but the jetbrains integration of copilot is definitely lacking.
    Keep in mind you're not forced to use ONLY one IDE, when I was doing Qt development I was using both QtCreator and Clion. Now that I'm doing stricly backend stuff, I'm using CLion and VSCode (strictly for the copilot integration).

Leave a Reply

Your email address will not be published. Required fields are marked *

You might like

© 2026 Cantinho do Vídeo - WordPress Video Theme by WPEnjoy