C++ offers unparalleled control and flexibility, which often means unparalleled performance. However, this level of control and flexibility can also often mean increased complexity. For example, C++ gives the responsibility of memory management to the programmer while many other modern languages like Java abstract it away. On one hand, this can mean increased performance because it gives the programmer more control over the lifecycle of allocated memory and removes the overhead of things like a garbage collector. But on the other hand, it adds increased complexity because the programmer must remember to deallocate memory when it is no longer used or face issues like memory leaks.
The additional complexity that C++ introduces over other modern languages is generally the reason why people new to programming are encouraged to learn something simpler first -- like Java or Python -- and then make their way to C++ once they've learned the programming fundamentals.
C++ Overview
C++ Versions
There are several major versions of the C++ programming language as defined by the C++ ISO spanning C++98 (version released in 1998) to C++23 (version to be released in 2023). With each new version comes new best practices. Practices seen as commonplace in older versions of C++ might now be frowned upon, so when learning C++, be cognizant of what version the resource is referencing. For example, the book "A Tour of C++" mentioned below gives an overview of C++17, the version of C++ released in 2017.
Recommended Resources
For Programmers
Opinions
Richie Goulazian - 9/16/2021
C++ is hard, but it is also very interesting. With all of the low-level control that it offers it feels like a gateway into what the computer is really doing under the hood. Even if you don't use it professionally, it is really cool to learn about C++ and use it casually, as it introduces you to a lot of concepts related to the low-level operation of computers.
I would personally recommend that you learn a simpler language first -- like Java or Python -- and then come to C++. I'm an experienced programmer and the learning curve of C++ was sometimes almost too much, so I imagine learning C++ as a first language could be pretty brutal. Once you know the fundamentals of programming, come back to C++ and use a book oriented at programmers learning C++ rather than beginners learning C++. The "A Tour of C++" book mentioned above is a great resource for programmers making the jump to C++ -- it avoids most of the things you would already know coming from Java or Python and just focuses on what makes C++ different.