

Of C? No
Of C++? Yes
If anyone is starting to learn C++, make sure to use books or training materials based on C++11 or later.
Even C++11 is pretty old. I would recommend at least C++17
As someone who last touched any C++ books when C++11 was very new and has only written like 20-30 lines of non-tutorial C++ since then, what are some significant changes to the language that I should be aware of if I wanted to give it a try now?
A few examples:
- CTAD: Instead of
std::pair<int, int> myPair{ 1, 2 }, you just writestd::pair myPair{ 1, 2 } - std::optional, std::variant and std::any
- Guaranteed copy elision in some cases, making it more feasible to apply the rule of 5 everywhere
- Attributes like [[nodiscard]] (compiler warning if an object or return value is discarded) and [[fallthrough]] (suppress a switch fallthrough warning)
- Generic lambdas (
[](auto it){ /* do something */ }) - std::string_view, which is much safer as a function parameter than
const char*
- CTAD: Instead of
Modules
Less fucked-up than Javascript.

This diagram is nonsense. JavaScript programmers know to simply never use
==but to use===instead. Half of JavaScript is like this. Oh, there’s a feature, but it behaves in a super weird way so we don’t use it to avoid the weirdness.When I had to use JS I wrote JS 1.2 because why not. Fun how I had strings of numbers instead of actual numbers in some
forloops, yet it all sort of functioned until something didn’t. I then decided to add Number() to random values just in case.As someone trying to learn Javascript, it just makes me mad that at this garbage heap of a language is so widely used.
Where’s the
==operator? Because they also have the exact same problem.The recommended ESLint rules catch most of the bad stuff, and these days this is all you need in your ESLint config to enable them:
import {defineConfig} from 'eslint/config'; import js from '@eslint/js' export default defineConfig([ js.configs.recommended, ];There’s one use case where
==is still commonly used:== nullmatches bothnullandundefined. Lint rules that block==usually allows thenullcase as an exception.So you’re saying the jank has become structural?
I wonder how much bandwidth is wasted on the extra
=, since it survives minification 😅But if every single comparison used in a file is a triple =, then any compression algo worth its weight in salt will compress that bloat away during transmission
The real issue is all the precious precious RAM those extra = use on the client device once received and unpacked!
Gzip (any properly configured static server will serve compressed assets) probably compresses them down so probably a single extra byte per file
IIRC modern linter rulesets generally just outright error if you do anything remotely like this.
Your example is just brainfuck but somehow even worse
No, the C++ should fear you!
For those needing help the code is:
using namespace std; int main() { while (true) { cout << 'e'; cerr << 'e'; } return 'e'; }Anyway, my opinion: c is the best thing to ever exist, and c++ is evil
Yeah. I kept reducing my sane “C with classes” subset until I just ended up back writing C99 too, and just about the only difference that made for my use case was better compilation times. If I ever need more than that, I’ll likely reach for Zig or C3 before C++.
No. I don’t find it a particularly nice language to work with, but there’s no reason to fear it. Just make sure you know what you’re doing if/when you use it.
So yes
No
Superposition is for quantum computing, C++ does not apply.








