Are you sure those are beginner books? Animation is a complex topic, and Hands On C++ Game Animation Programming definitely seems to assume you have some prior skill as a developer, if not necessarily in C++:
|This book is for professional, independent, and hobbyist developers interested in building a robust animation system from the ground up. Some knowledge of the C++ programming language will be helpful.|
|There are close to 50 languages that are really watered down c++ --- from java to ruby to pascal. Pick the one that removes the features you do not like, and use that one instead. It is why they exist; they were invented by people who do not care about performance or rich capability at the cost of having to learn something.|
This is a common assertion that I regularly hear from C++ enthusiasts, and that I myself have probably been guilty of repeating a few times.
Sure, learning C++ is definitely valuable, as it teaches a skillset that's often neglected by other languages. However, the implication here seems to be that after learning C++, most of what you'll have to learn for almost any other language is the ecosystem, its syntax differences, and its limitations relative to C++, and that's simply not true (even if we count lack of direct memory management as a limitation). For some languages, the transition is fairly close to what you described, but for others (examples: Ruby
, Rust, Haskell, Scala, any Lisp-family language, Prolog, Elixir, Ada, maybe Zig), that's not the case, because they make use of paradigms that are foreign to C++, especially idiomatic C++.
Also, it's false to state that most of those languages were created to be watered-down C++es that are easier to learn. To focus solely on your three examples, you might have an argument for Java, but Pascal predates C++, and Ruby has a gargantuan feature set, including a few that C++ definitely doesn't have (everything being an expression, metaclasses, first-class continuations, and a centralized package manager).
If anything, a number of languages were created not just to take some subset of C++'s features to make it easier to learn, but also to specifically avoid design defects in C++ (and yes, for all that C++ gets right, it does have some flaws — NOT features — that are now virtually impossible to remove without major backward compatibility breakages).