Language Choices

I have seen many fights over language choices, about which programming language is the best language that general programmers should choose to learn and general projects should choose to use. These arguments often make big but lazy judgements, and simplifies the fact that different projects have different needs.

Most popular programming languages have their own best uses, and the best choice varies in different scenarios, and also changes over time. Designing a “general” good language is a quite hard problem. If time and resource are unlimited, every project may design and implement its own programming languages for its best use. If you think templates is causing more problems in C++ than solving, you can write your own compiler (and libraries) of a C++ variation with no templates. Since we often do not have that kind of luxury, it is then often all about trade-offs. It really depends on what kind of compromise that you can accept. And when compromise is a must, it is always good to know the features of various languages, so that you can have options.

Where there is a need for building reliable software as fast as possible, there is also a need for teaching students how to program. I agree that students should probably start with easier languages for the basic concepts of programming, but later some time, they should also understand how to choose among different languages for different needs. After learning the first language, learning how to use a second language is often easy. If it is hard to learn a second language, it is often because it introduces some new programming concepts that is not that easy to understand (like templates or lambda calculation), and even without these advanced programming concepts, most jobs can still be done pretty well just with the basic language features. In fact, for most programmers, it is choosing the best language (after they have learned some) for a specific task that often takes a longer time to learn, often learnt from mistakes which, I believe, can be prevented by better education.