Languages and systems
Let me write something, our work is changed related to many year ago. Today, systems are very complicated (as well as complex) but some people are still stuck in the language dicussion … C++, Java, Phyton, C# and so on ! well, I think our focus should be on what do you want really make, a good architecture leaving freedom to chose the best language to the component manager paying attention to this topic :
– portability : unless you are building a very dummy project the probability that your system will be ported on another architecture/OS is very high ! are you ready ?
– multicore support : if you want to improve your scalability taking befefit from multicore (or parallelism, it´s not -strictly- the same) you should make your system taking care of this topic.
– performance : too many times I run (very simple) programs which slowed down my machine (machines with 4 core and 4 GB of ram at least) is it normal ? well, I think we should begin to taking care of this topic otherwise we will have programs hungry of resources.
– learning curve : if the skill expertise of the team is a specific language (and it shouldn´t ! it means there is something wrong in your team) I would consider to mix up with other teams. My teacher once said that we have a driving license to drive every car; this is a good advice valid with programming language. too many time I hear guy trying to promote a specific language because it belong to him (or her) skill expertise …. this behaviors are CANCER for good systems.
And then how to chose a language for a system ? I (strongly) suggest to let you drive to requirements. Finally what are you building ? a good system which your customer will (hopefully) enjoy. I suggest these steps :
1 – make your analisys and don´t care about other thing !
2 – after analisys you should have split your requirement in package (it will became component in you system).
3 – for every component requirement make a traceability matrix among requirement and system characteristics (a small list of a system characteristics is listed above). You will have a clear idea on what every component is focused on.
these are just a few steps in order to better choose a language for a new system (or an appropriate language for every component, it depend on a system). I worked on a systems composed by tens subsystems and would have be crazy to think at it as one language ! New systems deserve a better way to chose la language, new systems deserve
a better life !