Neandethal00 said:
Here is the truth.
If you learn to program in ONE language very well, you'll find learning and
programming in any other language comes to you very easily.
It's not the language that is hard to learn, but it is the...
I think this is very true.
For this reason, if you are starting programming, I think the things you should be asking are:
- How good a job will this language do of introducing me to the things I need to understand in programming?
- Will this language "grow with me"? That is, as I get better with the language and want to do more complicated things, will the language start to feel confining?
The language I actually recommend to people as a "first language" at this point is Python.
- On the first point, Python allows you to get started with simple things very quickly, but has enough power that you can still learn important "deeper" concepts. C++ forces you to learn a lot of complicated low-level things, like memory management, before you can do a lot of the most basic things. Java on the other hand forces you to understand a lot of complicated high-level object-oriented programming theory ideas before you can do your basic things-- you cannot write your fist Java program without having to confront the question of "what does 'public static void main' mean?" Neither of these things are really the healthiest first thing to confront when you really want to be learning the most basic things about breaking down a task.
- Python is what I would think of as "scalable"-- it works in lots of different environments. Any language, you'll find, have domains where it works well and domains where it doesn't work. Python's domain is startlingly large. Learn, say, Perl and you'll find it's amazing for small programs but you run into big problems when you want to write something large and complex. C++ will work great for high-performance stuff and can run absolutely anywhere, but gets ungainly when you are trying to do certain kinds of high level things-- try to find someone who uses it for web programming, for example. Java is difficult to deploy in many situations; C# less so, but if you write in C# you'll at some point probably have to address the problem of "...and I have to get this fifty-megabyte runtime onto this person's computer before they can run my program". (Note: Deploying Python for executables that you distribute to other people will sometimes give you this sort of headache also, but if you learn some tricks I think it's a little more manageable). Python can run in a lot of different weird situations, like it can actually run inside of the Java or C#/CLR runtimes. Basically if you start off doing python, it is a good idea to someday learn other languages like C++ or Java but you'll actually find you can if you really want to use Python for whatever your problem is.
Incidentally I have some personal objections to C# but I think it gets pretty good scores on both of my two criteria here.