>>6
If a person's curiosity is great enough it will result in those actions being taken, or something of that sort, however maybe some minds may be less suitable for programming than others.
Thus the requirements would be along these lines:
1)Curious enough
2)Having a strong desire to learn
3)Being able to absorb new concepts and paradigms quickly/being smart enough and being able to understand basic logic/math.
There's likely other preferable qualities such as the amount of detail one can actively keep in mind, but I don't know if it's necessary. Advanced knowledge of math/physics is just domain specific knowledge required for making 3D games, if you were to work on an application to aid in bioinformatics research or do EDA design, you'd need knoweldge in those domains too.
The programmer should be able to acquire domain-specific knowledge as required so he can model his problem better.