No one language solves all developers needs. I have discovered that a good script language that lets me process text from log files is essentially to power programming. Personally, I like bash combined with sed, grep, tr, sort, join, etc. I like this combination for text processing because it is very easy to experiment with my scripts before committing them to text files. The bash command line allows an expert to do very complicated things in a very simple manner. I understand why the power of perl and java seem seductive, by I'm used to the simple mechanics of bash et al. As for a primary programming language, I think that that decision depends on the availability of useful libraries appropriate to your task. That is, although I love C++ and wax poetic about it on my web site, the truth is that if you have to write all the code for yourself, you are doomed to failure. Unfortunately, the basics of a language can counteract any positive effect of large libraries. Just look at FORTRAN: it has lots of libraries but almost nobody uses it. People dropped COBOL like a hot potato as soon as something, ANYTHING, appeared. The key is selecting is to understand what your personal situation actually is. For example, suppose you are the only one ever to be on the project. In this case, choose the language you already understand. If you are going to be part of small team of whose members are already known, find out the most commonly understood language among them and stick to that. But for goodness sakes, don't let everyone choose their own language. Pick ONE. If you are going to be part of a growing team, you need to deal with issues like code readability: how good is everyone going to be ad fixing bugs in everyone else's code. The availability of libraries in that language that already do exactly what you want is important, but not all important. You wouldn't pick FORTRAN just because libraries are available -- unless you couldn't get them in any other language under any circumstances. I like C++ for most personal use, other than scripting purposes, because I think that the language was desgined by experts for experts and I am an expert. It is gives you great performance and if written correctly requires very little debugging. Unfortunately, many people attempt to write C using the C++ compiler and this is a BIG NO NO. For example, you should never call malloc/free at all. You should never call operator new unless: 1. you are initializing an auto_ptr 2. you are in the constructor for a