For applications where there will be a large demand on the User Interface, languages such as C#, Java, & Python are always a good choice. Large savings can also be made on development time due to the large number of function libraries that are available. However, there are issues that should be taken into account. For example, whilst there is reasonable support for C# on other Operating Systems it is generally more suited for use with Microsoft Windows.
When it comes to Multi-platform or embedded systems languages such as C or C++ are typically a better choice. You will find that there is a wealth of development tools available for different processor based architectures, however they tend to be expensive and vary greatly in the functionality that they provide.