Choice of Programming Language for Different Softwares

With experience and reading things around, here I share some patterns, I see about, what programming language is being used for what type of software.

C ... When we need to write some base infrastructure that will be used by some upper layers softwares. This is when no compromise on performance is accepted. For such software middle-ware or virtual machine oriented languages are not good choice, as it would only add an extra layer. And software will not compile in machine native code. For example databases, operating systems, device drivers, etc are mostly written in C/C++ etc. MySQL, Linux, Windows (most part) are all written in C for the same reason.

Java ... Java is best choice for writing bigger softwares that organization need to run their processes (e.g. warehouse, sales, etc.). These softwares are mostly know as enterprise softwares or ERPs. One might think, why not write such software in C, as performance is also paramount for ERPs. Yes, it is right but a bigger reality is ever changing nature of such softwares. For writing enterprise softwares, its better to thin in objects or concepts. As they makes it easy to conceptualize and structure bigger software component. One might argue that Linux is even bigger than ERP ...

Again, Linux is not organizational specific, once it is written, most organizations don't need to modify it for their needs. But in organizational processes things change very frequently e.g. change in process flow, adding more extra field in a form, etc. So the underlying language should support the frequent changes. These are the reason why most well known ERPs are written in Java ... e.g. Compiere, Adempiere, Openbravo, OpenMRS, Tibco BPM solutions, most Oracle ERP products. Java runs on JVM, and JVMs are available for most operating systems, this given another benefit i.e. Java written solutions can run on operating systems.