What's the way to go for hobbyist programming these days?

I used to code when I was a teenager - little games and useful utility apps and the like. I coded in C and eventually C++ for dos stuff, and VB for windows apps. So I understand the concepts and I have an aptitude for it, but I’ve been pretty much out of the loop for, 15ish years.

I want to re-learn what I’m doing with modern languages, development enviornments, etc. I don’t ultimately know what my end goal is - I may want to end up making a game for tablets, but I also want to be capable of writing code for windows. How portable is the code between iOS/Android/PC? Are there some languages that are particularly suitable for portability?

So what advice can you give me? What languages should I learn? What development environments should I look into? (Free is nice, but if there are nicer paid alternatives I’ll consider them). What are the educational resources for those? Books, websites, whatever. I’m going to need a refresher course. More along the lines of “here’s how you do this in iOS” more than “here’s how you write a for loop”, but if there are any great educational sources from the ground up, those are fine recommendations.

The only thing I have to add is that compared to 15 years ago, there is a ton of free software development tools out there. The days of paying tribute to Microsoft are over. Others will fill in the specifics.

Welcome back.

The modern development landscape has balkanized in recent years and different major platforms have different mandatory languages (iOS: Objective C, Android: Java, Web: Javascript) so most people end up having to pick up multiple languages as a matter of course and it’s more important to be adaptable than to dive deep into any particular stack.

That being said, IMHO, Python is the best way to go as a popular, general purpose language that’s also the most fun to program in. It’s powerful, clean, well documented and used everywhere and it’s become the “duct tape” language of the web.

Best Windows tool for hobbyists is MS Visual Studio Express, which is free, very slick, and includes several languages. If you used C++ and VB before, they are included in VS, as well as C#, which is kind of a combination of C++ and VB, and which seems to be the language MS is putting the most effort into.

Can’t speak for the other platforms, but I always found I’d rather use a different language on a different platform, if necessary, than waste time trying to make the same compiler work on two different platforms.

(Edit: I mean this as more of a question than a refutation. I’m in a similar boat as SenorBeef and would like to know if this is a concern.)

OP, what do you want to make? At this point, I question the value of specifically targeting non-enterprise, non-gaming Windows? If your app is simple enough to be delivered over the Web, doing it that way (meaning a web app, not .Net delivered over the web) can let you easily target most users instead of just random Windows folks – who would probably be weary of installing random software anyway.

VS is very nice to use, but it limits your market/audience quite a lot. It also limits your community support to Microsofties, while most of the open-source world likely to be enthusiastic about hobbyist porjects uses other stacks.

If, as you say, your goal really is to make a game for tablets, covering both iOS and Android, the environment of choice for indie developers seems to be Unity. It has three language options, but the one you should go for is C#. The same environment can be used for PC, Mac, Linux and various consoles as well as mobile devices.

Regarding educational resources, there’s a LOT of stuff out there on the web. It is a bit outdated now (although on Will Goldstone’s website he has a few updates), but I learnt using this book and would heartily recommend it to anyone else. I then went on to this one to learn a bit about the mobile side of things.

Here is a site which may be useful:

Learning a second programming language? Try these 5 sites