I too would recommend Python as a friendly, accessible language without excessive syntactic sugar. While it looks very simple, it is not a toy language, it's a language used by Google, NASA, YouTube and many other places. It's quite powerful and flexible, and supports both imperative and Object Oriented programming paradigms.
Its syntax is straight to the point, and teaches you good habits in terms of formatting your code (unlike other languages, whitespace, ie indentation etc matters. So while you can write non-functional code, it'll always look nice :)
So, count me as a fan of Python. It's free, cross platform and can be used interactively. That means, you can open up a Python shell window and try out commands right there without having to edit a file and save and compile it. Python also comes with its own IDE named IDLE, it's not super-sophisticated like eclipse, but usable.
You may want to visit Python.org for more information, perhaps this Beginner's Guide to Python will be useful.
Just to provide a quick example to convey the flavor, here's how to print "Hello World" in C, Java and Python:
public class HelloWorld
public static void main(String args)
If you google, you'll find a lot of Python tutorials on-line.
Have fun with it!
My intention is not to start a "mine is better than yours" language war. The question was what language is good for beginners; My answer is (and stays) Python.
I already outlined the benefits above, there is much less conceptual baggage with Python (or Ruby for that matter). Beginners can focus on programming concepts, not extraneous matters. They can open a shell Python window and type in Python statements and observe the output immediately and interactively. Unlike C or Java, there is no need for separate steps of editing source files, compiling them and then running them early on, nor are explanations about "header files" in C, or the whole
public static void main incantation in Java needed :) Nor why we use
System.out.println() when we really want/mean "print".
Simply take a look at the 3 examples above. Which code would be more easily understood by a beginner? Which language would you rather learn if you didn't know anything about programming? (Aside: Does taking out the
return 0 in C make it really that much more comprehensible?)
If the question is what is the language to use for systems programming in Unix/Linux then I'd say C, and Java has its use too. Would C with its pointers and no-bounds checking on arrays and "manual" memory allocation and freeing be a good language for beginners? No, not in my opinion. Should a competent programmer know about these things? Yes, of course, in due time, after they master the fundamental concepts. We are taking about beginning programmers here.
Look at it this way: if you had someone who was trying to learn to drive a car, would you recommend a Ferrari to learn the basics?