For a casual programmer I'd recommend C# if you don't mind windows and you need a GUI. Java I hear good things about, never tried it myself.
Don't underestimate scripting languages. They're useful for what they do.
C/C++ though, this is a difficult language. Things that are relatively easy to do in C# are like pulling teeth in C++. C++ is absolutely essential for dealing with bare metal, device drivers and kernel space work. If you're working with an embedded device then it's pretty much what you have to write with.