Learn programming by being a programmer
()
This is a small amount of unsolicited advice.
If you want to start learning programming, your purpose for learning determines how much time you have, what programming topics you want to learn about, the language you want to learn, and how well to learn (certain parts of) that language. In the end however, your success depends on your ability finally to finish and ship the project you want to program. Programming is yet another thing learned by doing, and experienced by creating many projects (even/especially small ones). Some useful skills you will want to pick up before or along the way are touch typing, computer file management, basic understanding of computer some parts, and some math.
Math
Math is good to know because it allows you do less programming. It's a useful tool and sometimes a shortcut that avoids a need to write more code. The math you want to know about are algebra, functions, sets, and boolean logic. Each of these is useful to know at least for avoiding over-complicating your code's math and flow control. It's useful to know algebra because you need to get very comfortable with variables. It's useful to know about function domain and range, and about total and partial functions. It's useful to know about set terms such as membership, union, intersection, and complement. It's useful to know some boolean logic because that is foundational to understanding conditions and flow control in most programs.
Language recommendations
The type of project could predetermine the programming language. The language depends on personal preference and what you want to do. Languages are meant to be general purpose, but the other people who are using it and the language's paradigm makes it easier or harder to accomplish certain things. What language to learn if that decision is not already made? I recommend Python, C, Lua, or Common Lisp. But, if you want to learn C++, learn C first. C++ is so large and multi-paradigm, that the common reference point of fundamental C really helps.
Baby steps
Start with learning a simpler language such as C or Lua rather than C++ or Java. And start learning with super small projects such as: print out the numbers 1 through 1000.