I don't agree with most people in some point, you should learn c++. The basics are all the same and can be used in the same way then most other programing language. The only difference with c++ is the object oriented part, stay away from it until you know the basics.
Basics you should consider learning fast : Learn all the types (int, bool etc...), learn what a procedure is and where it become relevent to use them, what a if is, a while and a case will pretty much let you do anything you want to do.
After that try learning how libraries work and then you should be able to do pretty much what you want with your programm. A huge tip that you should listen too, stay away from any online manner until you know what you are doing otherwise you will never find you bugs if you try to work everything at the same time.
Start by getting familiar with the basic codes and then try a small project like making a basic worm game etc ...
Stay away from 3D if you didn't study other then secondary school, you won't understand anything since it use vectors and matrix a lot.
Sorry for my bad english my primary language is french. Hope it help you a little. If you really want to do it as a full time job, you should consider going to school, as most things you will learn on internet are not based on the efficiency of the code but only the fact that it work.
Take in consideration that you may not get the result you expect the first time you complete your code, it may take a lot of time to get a result that satisfy your criteria.
PS : Dont think that you will become an experimented programmer in a year or two and that you may encounter more difficulty improving compared to others, dont compare yourself with anyone you know, everyone is coding with his own way and it is normal.
PS : Keep in mind that theire is a really huge difference between a working code and a effective code. As a code may work in both case, one may let you have 100 more fps then the other working code that has 5 fps. Keep in mind that you should always use the most effective method even if the previous method was working, it's how you know if a programmer is doing a good job or not.
PS : If ever you start learning the object oriented part, you should try doing your own containers and not to use those created by c++, in that manner you will know if you really know how an object work and how to jungle with pointers. Also learn what inheritance is and what a static class is.
With everything I mentionned, you would have really strong bases.