In the discussion of the use of programming languages, there is too much emphasis in the choice of a programming language in terms of performance and language syntax. This discussion is large irrelevant. In scientific research, most projects leverage an existing code base to do computational research, and there are rarely entirely new code bases for software development.
It is import to realize that computational research is neither computer science nor applied mathematics. The primary goal is not computing, it's science. While a large number of programmers would have a tendency to learn a new programming language or framework whenever they get a chance (including during their spare time), most scientists would use that time exploring new ideas regarding their science.
The software architectural approach proposed within is one of encapsulation of existing code, exploits the process of business process reengineering, and applies them to the field of computational material science.
There are four dominant languages in computational materials science:
Fortran/Julia
C/C++
Python
FORTRAN, for better or worse, is the only major language specifically designed for scientific numerical computing. It's array handling is nice, with succinct array operations on both whole arrays and on slices, comparable with matlab or numpy but super fast. The language is carefully designed to make it very difficult to accidentally write slow code -- pointers are restricted in such a way that it's immediately obvious if there might be aliasing, as the standard example -- and so the optimizer can go to town on your code. Current incarnations have things like coarray fortran, and do concurrent and forall built into the language, allowing distributed memory and shared memory parallelism, and vectorization. A lot of nice existing libraries and code for computational materials already exists in Fortran. Fortran is the language which many scientists have learned and the libraries they need are implemented in them. Specifically, LAPACK and BLAS.