Ten Programming Languages You Should Teach - You may want to learn them first

Seriously I don't expect that high schools should teach ten languages. I'm not sure that its a good idea for universities either. But I am a strong believer that someone who plans a career in software development or other computer science related fields should know more than one or two programming languages.

I don't see this as a "learn this language to get a job" logic either. Oh sure that can help but the programming language of the day is a fleeting thing. Where are the FORTRAN and COBOL jobs of my youth? Fortunately there are still BASIC jobs but look how that language has changed. I found that I had to learn a new programming language every two to three years just to keep pace in the field. Having that grounding in multiple languages really helped me pick up the new ones.

The important concepts of different languages are also different. Knowing languages with different features helps to understand them better. Want to understand late binding? Python and Visual Basic .NET are good languages to know for that. Want only early binding? C# and Java are the way to go. Recursion something you really want? Almost all languages support it but Scheme makes it an integral part of the way things are done. Want to really get into regular expressions and parsing? Perl may be just what the doctor ordered. The list goes on and on.

Eweek has a list of "10 Programming Languages You Should Learn Right Now" that is pretty interesting. I know about half of them and can read most of the rest. A lot of languages I used to know very well and used a lot earlier in my career are not on the list. Python and Ruby/Ruby on Rails are high on my list to learn better.  I think the interesting thing in the list is not so much the languages as the reasons that are given for them being important. They are all a good bit different. Some are Internet/web development tools primarily and some are mostly applications development. C# is seen as essential if you want to develop on Microsoft platforms. Java if you want to develop on non-Microsoft platforms. To me it would seem to be a missed opportunity not to learn both.

One thing I would add to the list that Eweek doesn't show? Assembly language. Everyone should learn on and be forced to use it for something real at least once in their academic career. If that doesn't make you appreciate higher level languages I don't know what will.