Seriously, pick one with great online resources. That gives you a lot of options at first glance, it would seem... Of course, online resources vary greatly in terms of quality. Personally, I wish I'd started (years ago...) with something like Python. Great resources, great community.<p>Great tutorials: <a href="http://diveintopython.org/" rel="nofollow">http://diveintopython.org/</a> (for the recent Python 3: <a href="http://diveintopython3.org/" rel="nofollow">http://diveintopython3.org/</a>)<p>What it all boils down to is finding a language that teaches you the fundamentals well. Once you have those basic precepts and fundamentals, you can transfer them quite easily to take on other languages.<p>And Python is also quite easy on beginners.
There is a difference between learning a programming language in order to get something done and learning about programming where you learn the basic building blocks of programming.<p>Python, C#, and Java are easy programming languages to learn and build stuff quickly in. Master C and you can pretty much breeze through the advanced languages while having a good base in the inner workings of modern programming languages.
Personally, I'd start with assembly (not necessarily x86 though, probably MIPS or similar. The reasoning here should be obvious as it's almost as low-level as you can get, everything else in computer science is based on the axioms found at this level. For similar reasons, I think Number Systems would be an excellent place to start learning mathematics (and possibly predicate calculus in parallel).
I reckon I'll be different, here.<p>I'd say PHP (particularly if the new coder has interest in web programming).<p>It's syntactically easy-ish, freely available, very well documented and supported, and sets the newbie up for easy freelance or professional work.<p>- John