1 of 2

There is a movement toward evidenced based software engineering (there's even a Stack Overflow question about EBSE, posted in 2009), but I've never heard it applied at the granularity of programming language paradigm before. A few searches turn up universities doing research into evidenced based software engineering, as well. It appears this methodology is based on literature reviews, to capture data across multiple empirical studies to gain additional insights.

As far as your specific question about empirical evidence for the best paradigm in a given situation, I don't think anything like that exists, nor do I think it ever will. I think that the best we can hope for is to share experiences over opinions to determine the best options on a per-problem basis.

When it comes to programming paradigms, most mainstream languages (and I'd even say most languages), regardless of paradigm, are Turing complete. That means that all of these languages are interchangeable, on a functional level - it doesn't matter which one you use, they are all capable of the same computations. Given a set of well-formed, well-defined, valid requirements for a software system that can be constructed, you can use just about any language (and any Turing complete language) to build the system. There's no way to eliminate any language or paradigm from being able to solve the problem, so your set of possible solution tools is always "all languages of all paradigms that are Turing complete".

From a practical standpoint, the selection of a tool (in this case, a programming paradigm and a specific language within that paradigm) is based on a number of factors. It depends on the target environment, the knowledge and experiences of the team building the system, the development tools available to the team and the current and future costs of supporting those tools, and so on.

Assuming we have a set of valid requirements, the only way that I can see to prove which paradigm is best suited to meeting them is to actually implement the system using multiple paradigms. I don't see a methodology to do this that is time-effective, cost-effective, and empirically valid, considering the factors tied to human behavior and knowledge and that you would need to build sufficiently complex systems.

This also ignores multi-paradigm languages (Python and Scala come to mind, not to mention tools that enable calling code written in other languages) that enable different components to be written in different paradigms and then seamlessly integrated with each other. This enables the problems presented by different requirements to be designed and developed using the best possible paradigm while still limiting the knowledge required to a smaller subset (as small as 1) of languages.