* * * *
I have considered the following parameters in my evaluation. Should we choose to use language X, it should satisfy the following criteria.
1. Features of the language
It should be possible to do in X all the most useful things we currently do in C/C++. It should at the least be as easy to do the above useful things in X as it is in C/C++; it should preferably be easier.
X should allow us to model our problem without forcing us to devote too much time to book-keeping and design elements that are technological in nature.
When a facility available in C/C++ isn't in X, there should be a reasonably convenient workaround available.
4. Additional power
X should provide additional power by way of facilities that C/C++ either do not provide, or only do so in a convoluted manner. Of particular relevance here is the ability to easily scale the program to multiple processors and nodes.
5. Readability & maintainability
Idiomatic code written in X should be easy to read and understand. It should lend itself to easy debugging and long-term maintenance.
6. Low barrier to entry
X should present a low entry barrier for programmers with background in C/C++ or, to a lesser degree, C# and Java. Reasonably good programmers should be able to start writing useful code within a fortnight of study and practice.
7. Code re-use
It should be possible to selectively re-use current code from within X.
8. Deployment compatibility
Introduction of X into the code should not adversely impact our current deployment scenarios.