Program language doesn't make sense! Book to learn?

C/C++ was never designed as a teaching language. It is very close to the machine. Lots of things are for efficiency and not ease of use. Some languages, like Basic and Pascal were explicitly designed for this purpose, and can also be useful.

The Arduino (eg UNO here ) is also a strange beast even to seasoned programmers who have not worked at such a low level before. 2K of memory, no Operating System, Interrupts, the setup()/loop() paradigm etc. You can't (or shouldn't) use the object oriented features (except maybe creating one instance of class in a library) or recursion etc. because all that has an unpredictable runtime resource usage.

However, I'd say this, that once you have understood the Arduino graphical user interface of the development environment and are in a position to write a few line of code, load that onto an Arduino, and get a led to light, you can then, in simple steps, progress on to more complicated things. You should soon get a grasp of what a variable is, how program steps are sequenced, how to perform selection and how to repeat blocks of code. Important is to work with a few basic constructs, a very small but useful subset of the language, (say "if/the/else" or "for" ) and understand those instead of attempting to learn the huge number of features the language supports.