To say something about the language itself, I actually feel that I could be hardly recognised as a C++ programmer nowadays. I actually learned just C++03 with a touch of C++11 and I haven’t catched up with it ever since. Modern features introduced in C++14, C++17 or C++20 are alien to me. So read me with that on mind. Specifically about the syntax I have not much to say. Given that C-like languages are everywhere, its syntax is like water to most of us so I can’t really point out significant strenghts or weaknesses. I will, however, comment on some semantic aspects. Currently, C++ is considered a memory insecure language (and it is) and other more recent languages, especially Rust, are presented as alternatives. In my opinion (already established as biased), I think security is an important layer desirable in most contexts, but not something unachievable in C++ and certainly not something required while learning. Being familiar with an unsafe tool is also a (good?) way to adopt better practices and to get used to consider side effects even before writing code. Another thing I’d like to say it’s about it’s OOP approach. I worked for years with Java for university subjects and professionally with Kotlin for some time now, but I have never liked the differentiation between interfaces and abstract classes these languages make. I feel like it’s only purpose is to allow multiple interface implementation while preventing multiple class inheritance. Of course, I’m aware of the diamond problem, but C++ allows you to call a function from a specific parent, allowing as a result to solve the problem with a single one-line function override. Anyway, that might be the only advantage I personally find in C++ OOP. Polymorphy only working naturally on pointers forces you to work with them in contexts where otherwise wouldn’t be necessary and that alone sets a very, very low bar for a language to be more suited for every day OOP.
WIP
WIP
WIP
WIP
WIP
WIP
WIP
WIP
WIP