Explicando a diferença entre rigor de linguagens e paradigmas para um colega meu, acabei afirmando que:
Linguagens tolerantes, como linguagens dinâmicas e interpretadas, são usadas melhor para protótipos e projetos pequenos ou aplicativos Web de tamanho médio. Ao escolher linguagens dinâmicas elegantes, como Python ou JavaScript com Node.js, os benefícios são:
Desenvolvimento rápido,
Código de clichê reduzido
Capacidade de atrair programadores jovens e criativos que fogem de "linguagens corporativas" como Java.
Os idiomas estaticamente digitados / compilados são melhores para aplicativos que exigem maior rigor, como aplicativos críticos para os negócios ou aplicativos para aplicativos de tamanho médio a grande.
Paradigmas e padrões conhecidos desenvolvidos por décadas,
Facilidade de verificação estática,
Capacidade de encontrar muitos desenvolvedores profissionais com décadas de experiência.
Linguagens estritas como Haskell, Ada ou técnicas como contratos de código em C # são melhores para sistemas que favorecem a segurança do que a flexibilidade (mesmo que a Haskell possa ser extremamente flexível), como sistemas críticos à vida e sistemas que se espera sejam extremamente estáveis. Os benefícios são:
Capacidade de capturar o maior número possível de bugs em tempo de compilação,
Facilidade de verificação estática,
Facilidade de provas formais.
No entanto, olhando as linguagens e tecnologias usadas em projetos de larga escala por grandes corporações, parece que minha afirmação está errada . Por exemplo, o Python é usado com êxito em sistemas grandes, como o YouTube ou outros aplicativos do Google, que exigem uma quantidade importante de rigor.
Ainda existe uma correlação entre a escala do projeto e o rigor da linguagem / paradigma que deve ser usado?
Existe um terceiro fator que eu esqueci de levar em conta?
Onde eu estou errado?