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

I've been writing C++ for a long time and I've always wondered why there was no comprehensive video on YouTube that describes the issues with C++ in detail. So I decided to make that video. Hope you enjoyed it.
If you're interested in Neverclick (2:00:55) come join me on discord: https://discord.gg/mJQ3KpsqP9
Also, it'll be up on my github soon: https://github.com/LazoVelko
codingjesus should see this….lol
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.
womp womp
Can't stand the ai slop
Humanity keeps its fruitless search for perfection.
I know it sounds crazy but I have watched this video at least 6-7 times. It's just so enjoyable for some reason.
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…)
Ahh, C++. No one's favourite loose grouping of incompatible features and paradigms, masquerading as one language.
C++ is my dopamine detox😊
yeah what you expect from javascript programmer
Why are you using visual studio ide over CLion? CLion fixes almost all of the ide specific issues you have with C++
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.
oh my god… 2h??
its just a tool, a means to an end.
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++.
you should make a video like this but in reverse speaking abt what you actually like about C++
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.
What's harder assembly or C++? It seems like atleast assembly is consistant
“There are only two kinds of languages: the ones people complain about and the ones nobody uses.”
― Bjarne Stroustrup, The C++ Programming Language
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.
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).
Now this is what I call a rant++!
Only AI can reliably code in C++, is what this destruction of C++ makes clear. Only few humen are able and willing to keep all these details within fingers length.