To your comment "Solve a specific real-world problem" I would say +1, but add that you should start by trying to solve the smallest possible specific real-world problem that will create some sort of value for your customers.
And before you start, describe that problem using a testing tool like Cucumber (cukes.info). This will ensure that all your early coding and learning is completely focused on solving that one small problem.
Keeping reading, Googling and experimenting until you find you can write enough code to solve that small customer problem. Then set your sights on a slightly larger customer problem.
As for tools, I like and recommend Ruby on the Mac but there are a number of options that seem to have lots of community support and free tutorials, including Python and Perl, whether on the Mac or Linux.