With practice you'll learn the basic language structure & syntax and some functions/keywords but you'll probably never learn/memorize the entire Arduino language. And if get that good, you'll be using additional libraries to do more advanced stuff and you'll need to check the references for them.
I'm not an expert programmer but I've done a lot of programming in different programming-languages and I'm always checking the language reference.
The basic/core Arduino language is reasonable and you can learn what most of the functions are, but you might have to check the details (or the spelling). i.e. You can learn and remember that there's an analogRead() function but if you don't use it everyday, you might have to check the reference.
The "real" C++ language is huge and there's not even a book that covers the whole language (except for the ANSI/ISO language standard itself). And, things like Windows programming or graphics, or the mouse, or audio are all additional, libraries on top of the C++ language. (Most of the Arduino stuff is additional to standard C++.)
I don't want to imply that programming is easy... It's hard and it's "different" that any other field. But, the Arduino is a pretty-easy introduction to programming and an easy way to learn. The hard thing about the Arduino is that you also have to know/learn some electronics too.
But the best way to learn almost anything is to take a class, and of course most professional programmers have gone to school. Sometimes it's hard to learn from the Internet or from a book because they usually teach you the programming language without teaching you about programming.
P.S.
The two most important concepts in programming are conditional execution (if statements, etc.) and loops (doing something over-and-over, usually until some condition is reached).
There's a LOT more to programming, but once you understand those concepts you can start to develop programs.