In short: you need something that suits what you need to do, with developers available at the right price.
First you should choose the operating system: probably MS Windows, or Linux for many applications.
MS Windows dominates PC desktop applications, whereas Linux, or Unix compete with MS Windows for web servers.
On Windows now, the Microsoft Languages C# and Visual Basic.Net are most common.
On Linux, maybe Java, Python or Perl or PHP.
C# and VB.Net are very good for Graphical User Interface ( GUI ) work on Windows, as well as PC-based processing, database interaction, and web servers.
Java is a general purpose language which can be used for GUIs on Windows and Linux, and server procssing work, and for web servers.
Python and Perl are powerful, rapid-development languages, which don't have all the facilities of Java.
If you look at the top ten software skills in job advertisements:
( Notes: 1) See below about C, I think that is still in demand because of the number of existing applications that use it, but not for new development; 2) SQL and SQL Server would be in demand because these skills would almost always be asked for as secondary skills in a development job, on their own they would not be a primary skill for developers )
You can see what is in demand.
My personal view on what to learn if you're starting out is to go for C#.
C#, and the .NET libraries it is built on, are really the only development system for Microsoft Windows Desktop ( PCs ) and Web Servers, in my view.
The following book could be slightly basic, but is probably a good book for beginners, maybe you could skim it if you find it easy:
Programming in the Key of C#: A Primer for Aspiring Programmers
by Charles Petzold
'Compose your first software applications with programming maestro Charles Petzold.'
Charles Petzold has been on the Windows development book scene since the year dot, and I am sure this is a good book.
Microsoft Press generally do good books, and they are not biased, in my view. You can find others under 'Microsoft Visual C#', here:
Check the history of the author before buying.
Don't learn these, you'd be wasting your time, in my view:
C and C++: not used for new development except in niche applications, there are already many skilled developers to fill those jobs; these two languages, especially C++, are more complicated than C#, and you could easily get lost, in fact that is why C++ is not used so much now - it's way too complicated for most work! C# is a sensible simplification and is much more powerful. You don't need to learn C or C++ before you learn C#. Just go straight for C#.
Visual Basic: A Microsoft competitor for C#, but nearly all serious programmers use C#. Not worth it if you can use C#.
Delphi: Used to be popular and was respected in its time, but not really used for new development now
Pascal: barely used in industry now. Used to be used as an educational tool
Others you could consider:
Java: a very serious language, shoulder-to-shoulder with C#, based on Unix or Linux more than Windows.
Python/Perl: If you're developing scripts, but want something more powerful
C# is Microsoft's strategic language for the next 10 years, at least, I would guess. It has one main development environment ( Visual Studio on Windows ) whereas with Java, there are a potentially confusing array of environments.
C# is a respected and powerful language at the core of Microsoft's future strategy.
You can get a free development environment here for C# for Windows:
Microsoft Visual C# 2010 Express
You should learn a database as well: if you're going the C# route, use Microsoft's SQL Server, there is a free version:
There are some books under 'SQL Server' at the Microsoft Press link above, and obviously many others. This one might be suitable to start with: 'Microsoft SQL Server 2008 Step by Step'.
At the end of the day, you have to make your own decision, and what I recommend based on my experience may not be suitable for you.