So which technology should you choose? I'm not giving to give a direct answer, and often there are many factors that make one more appropriate in certain cases than others. Joel Spolsky attempted to answer this question, but ended up falling into many common miconceptions and prejudices (while still making a few good points). He was also focusing exclusively on web-development.
I won't repeat this mistake here, but instead give some general guidelines.
One huge advantage to a technology is that it will be open-source and available on several operating systems, including most Unixes and Windows 32-bit, and on many CPU architectures. While, often you'll encounter many platform-specific bugs or libraries or programs that work properly only on certain configurations (which is expected), you should still have the choice of being able to rely on the technology being present.
For example, Microsoft's Visual Basic was a closed-source and Windows 32-bit and x86 specific programming language, which had proven to be very popular. However, Microsoft decided to discontinue it completely, and as a result, many of the applications developed for it can no longer be maintained into the future, and important bugs in Visual Basic will not get fixed.