Inspite of what you read on ET, a language with certain features makes a huge difference for 98% of all programmers, maybe all programmers. However, the language of choice is not that important the smaller the project is or the lower the realtime demands of the running program has.What really is the difference between these languages? I'm self taught, started with machine languages and Basic. I can do scripting in any of the trading environments and that is all I need so I don't learn beyond that.
Basic taught me to do things in modular fashion, otherwise I couldn't debug something without adding more problems. I recall that there was a language that had a cult following in the '70's but unable to recall the name. It had the feature that if a module was written then said module could be added to the language as a command. That appealed to me.
I discovered early on that anything that could be flowcharted could be coded. I talked to many professional programmers and never found one that used flowcharts. That perplexes me to this day because I can't complete anything without first flowcharting it. If I start writing something without a flowchart I will hit the wall at some point and have to stop, make the flowchart, then debug the mess I created. Maybe the newer languages force the flowchart into place somehow, object orientation does that somehow?
For example, in High Frequency Trading, provability is extremely important since bugs can bankrupt a business. So functional programs (as close to pure as possible) are critical.
Expressiveness is another important aspect of a language. The smaller the equivalent two programs are, usually it is easier to understand the smaller program unless the language itself is terse. So once again, easier to understand usually means less bugs.
A language should support concurrency and parallelism in a safe expressive way. This is probably the hardest thing to get right in modern languages, and leads to all sorts of bugs, EVEN by languages that are pushed by "experts".
Finally, there is a programming style where instead of writing programs in a language, you first build a language where the problem space is very naturally expressed in this language, THEN write your program ontop of this language. These are often called DSLs in modern parlance. Some languages make this very pleasant, and they are highly desirable.
Choosing the "correct" language for a given project is not a trivial issue, but the above reasons can give a person a clearer idea as to why the way a language is constructed from the ground up can have such a huge impact on productivity and correctness.
