What was the saying... genius is one percent inspiration, ninety-nine percent perspiration. As long as you are willing to learn and work you can butt heads with the best of them, but the primary part is putting in the effort and keeping it going.
I advise you start your learning experience with languages that are easy (Python/Ruby). On top of that software that will make the experience smooth, I prefer Eclipse for that as it is open, free, always concerned with compatibility and most importantly it can fix 99% of your minor software problems on the fly as you type, long before you need to actually run something.
Also keep a written guide(digital obviously) of your languages close because everything has it's own oddities and that is the quickest way to find out how particular functions work, memorizing the entire function sets is not very practical at this point as you will switch languages several times over and the important part is understanding the general concepts that go on in every language.
Same goes for the math, you need to know the basics but don't try to recreate complex stuff from memory as you will most likely get it wrong. The vast majority of programming demands little math knowledge, you only need to know the high end stuff with very specialized computing where you need to optimize on a mathematical level (large scale accounting, simulations, graphics, compression, encryption,...).
In short persistence and the right tools are your primary friends, internet also helps a whole lot.
I advise you start your learning experience with languages that are easy (Python/Ruby). On top of that software that will make the experience smooth, I prefer Eclipse for that as it is open, free, always concerned with compatibility and most importantly it can fix 99% of your minor software problems on the fly as you type, long before you need to actually run something.
Also keep a written guide(digital obviously) of your languages close because everything has it's own oddities and that is the quickest way to find out how particular functions work, memorizing the entire function sets is not very practical at this point as you will switch languages several times over and the important part is understanding the general concepts that go on in every language.
Same goes for the math, you need to know the basics but don't try to recreate complex stuff from memory as you will most likely get it wrong. The vast majority of programming demands little math knowledge, you only need to know the high end stuff with very specialized computing where you need to optimize on a mathematical level (large scale accounting, simulations, graphics, compression, encryption,...).
In short persistence and the right tools are your primary friends, internet also helps a whole lot.