in reply to programming language
The best way to learn has been for me to find a language that solves a (not too big) problem that niggles you. My problem was reconciling files with different formats and complicate mappings. Hence Perl.
Now if your problem is to create a GUI front end for a MacOs app, then there might be better choices....
A tip: choose a language looks like it can solve your next 2/3 niggling issues or else it get frustrating....