I suspect that at least two aptitudes are involved, and different programming languages/platforms place different demands on those two aptitudes.
One aptitude is essentially the math/engineering ability. The other is linguistic.
One aptitude is essentially the math/engineering ability. The other is linguistic.