IDG Answers is a community of experts who are passionate about technology. Ask a question or answer one below.
The first language new programmers should learn is the predominant spoken/written language in the country they plan to work in (e.g. American English in the United States).
The first job of a programmer is to write programs that meet a certain need and understanding those needs is essential to getting the job done. That means understanding the written and spoken language of the people who can express the need (and therefore create the specification for the program) is the single most important skill that a programmer can have if they hope to succeed.
After that, I recommend any structured programming language (doesn't much matter which) as a way of understanding good coding practices (formatting, punctuation, variable definition, code structures, documentation, etc.)
Finally move on to scripting type languages.
Check out this Computerworld article on the topic:
Here's a list of free starter languages:
Alice -- This was developed at Carnegie Mellon University and is touted as a 3D programming and multimedia environment whose drag-and-drop coding interface does not let students make programming mistakes.
Visual Basic 2010 Express -- While the price of Microsoft's Visual Studio 2010 Professional starts at $549, individual components (such as Visual Basic) can be downloaded for free, although the user is expected to register the software. The standalone Visual Basic lacks the integration, testing and debugging facilities of the Visual Studio version.
Small Basic -- This introductory version of Basic with only 14 keywords was a spare-time project by Microsoft employees and is not supported as an official Microsoft product. You can download programming lessons that appear to be carefully thought out, and Small Basic code can be ported to Visual Basic.
Python -- The big question is whether to use the older 2.7 version, for which there is a lot of support, or the latest 3.2 version with its added features. One source for learning Python is http://www.trypython.org (32-bit mode only) and another is http://code.google.com/edu/languages/google-python-class/.
Racket -- Based on a predecessor called Scheme, Racket originated at Rice University, and has error messages intended to be helpful for students. The development environment is called DrRacket.
Ruby -- You can download open-source Ruby versions for Windows, OS X, Linux and some Unix distributions. A source for learning Ruby is http://tryruby.org.
Scratch -- Java-based Scratch was developed by the Lifelong Kindergarten Group at the MIT Media Lab with various sources of support. It's touted as allowing children to interactively combine, and assign behavior to, various sources of digital media while learning computational concepts.
Standard ML(SML) -- This is also identified as a common teaching language, and there are a number of dialects circulating. It derives from ML (Meta-Language) developed in Scotland in the 1970s.