This is a question that I have seen asked on many forums and here is the reply I usually give.
Just pick one and start using it
When first learning to program people these days seem to get wrapped up in learning the “best language”.
This makes sense to non programmers because they don’t want to waste their time learning one language to
only throw it away and and start again with the best one later.
The problem is though that there isn’t a best language, all programming languages are better than others
in some area (with the exception of Java). I wouldn’t consider using assembler for processing web pages
or text files but I would use Perl. I wouldn’t use Perl to write a piece of code that needed to run as
fast as possible. I wouldn’t write an operating system in BASIC, but I would write one in C. I wouldn’t
try to teach a complete beginner with C but I would teach them programming with BASIC or Python or another
scripting language.
The key thing to learning a programming language is not what language that you are learning but that you
are learning. The time that people waste asking on forums for advice on what language they should learn
first would have been much better spent just picking one of the ones they have listed and trying to learn it.
What beginners aren’t told
What a lot of beginners are never told is that there are number of skills that you need to learn to program.
The first is logic, without an understanding of boolean logic you won’t be able to do much within a program.
The second is algorithm design, it doesn’t matter what language you are using there will be certain styles of
algorithms that you will use, be it sorting items in an array or drawing an animation on the screen. If you get
the wrong algorithm to solve the problem then you end up with a program that doesn’t scale, get the right algorithm
and your small computer will be capable of dealing with data sets you never imagined when you wrote the code.
So to sum up my suggestion, don’t ask “what language should I learn” just pick a common one and start learning.
Concentrate on the algorithms you are learning rather than the language, after all the algorithms you learn will
usually be relevant to every other language that you learn in the future.