Ok, why? Because I have had quite a few people who aren't programmers ask me about learning to program. So, here is my typical answer. In English. I suppose I can then just let Babblefish (or Babel Fish) translate the answer to Spanish as the majority of the people asking me recently don't speak English.
There are really two questions here:
- What programming language should I learn?
- Where can I get the software I need?
Let me answer the second one first. The answer is almost universally "it comes with most Linux distributions". This tends to be a shock for the non-Linux people asking me but it also offers a lot of them the incentive to give Linux a try.
Ok, on to languages. There is no universal good answer but there are some good suggestions. My first suggestion is that you learn an interpreted (or byte compiled) rather than a compiled language. This decreases the number of steps you have to go through each time you want to try something. Call it immediate gratification. With very fast computers and efficient interpreters, a compiled language is not likely to be worth the difficulty involved.
Ok, filled with my opinions, here we go--language by language. If you want a different opinion, check out WikiPedia.
BASIC BASIC, which originally stood for Beginner's All-purpose Symbolic Instruction Code, was supposed to become that first language. Unfortunately, the initial language was not very powerful because of the hardware of 40 years ago. As hardware capabilities improved, "better" versions of basic appeared. Unfortunately, they tended to be incompatible.
C A categoric no. While C is a good language for writing operating systems, it is not a language for computer newcomers.
C++ In the professional programming world we can explain why C++ is better than C but, again, for a first language, forget it.
Fortran It might have been the right answer about 40 years ago. But, today is today.
Java Java got more hype than a lot of other "new" languages and is available virutally everywhere. But, while the standards process was initiated Java was withdrawn from the process and language specifications remains proprietary property of Sun Microsystems.
Pascal Developed as a language to teach programming, Pascal had its place. However, it suffered much like BASIC from everyone having a better version. There is virtually nothing being developed in Pascal today.
Perl Please, no way. A lot of stuff can be and has been done with Perl but it is probably the most confusing interpreted language ever created for a newcomer. This is because Perl takes the best of awk, grep, UNIX shell programming and all too many other things and tosses them together. For the newcomer, you have to learn how all these different things work and how to put them together.
PHP For web development, PHP is probably the most popular language. But, it sees virtually no use in other areas and suffers from growing pains. That is, the original syntax looked very much like C but adding modern object oriented features has tended to add confusion. Unless you need to do web work in PHP, forget it.
Python Python is, in my opinion, a clean interpreted language that will not scare away beginners. It is used extensively in many areas including web development and as a scripting language for various programs such as Scribus and the GIMP.
Ruby Probably the cleanest object oriented language in common use. Much less popular than Python but possibly easier to learn.
So, what's the bottom line? I recommend going with Python. Python interpreters are available for virtually every computing platform, syntax highlighting exists in most editors and it is supported by many development environments from KDevelop to its own eric and idle. Note that these two program names should help convince you that Python is named after a TV show, not a snake.
Eric, idle and pida are three Python-specific development environments. You should give each a try along with KDevelop. If you really like a screen full of buttons and windows, eric is probably the tool for you. If, on the other hand, you would rather have a separate editor, give kate a try. It offers excellent Python syntax highlighting and is easy to learn and use.
One other program of interest is pychecker. It is an easy to use command-line tool (just type pychecker followed by the name of your python source file) that will spot problems in your program.
Finally, like most programming languages, Python continues to evolve. Version 2.4 is current with 2.5 to be released soon. I highly recommend using at least version 2.4 as there have been some language cleanups recently and version 2.4 defaults to using the newer forms. This will help you prepare for the future.