Al explicar la diferencia entre la rigurosidad de los lenguajes y los paradigmas a un colega mío, terminé afirmando que:
Los lenguajes tolerantes, como los lenguajes dinámicos e interpretados, se utilizan mejor para prototipos y proyectos pequeños o aplicaciones web de tamaño mediano. Al elegir lenguajes dinámicos elegantes como Python o JavaScript con Node.js, los beneficios son:
Desarrollo rápido,
Código reducido repetitivo,
Capacidad para atraer a programadores jóvenes y creativos que huyen de "lenguajes corporativos" como Java.
Los idiomas compilados / tipados estáticamente son los mejores para aplicaciones que requieren una mayor rigurosidad, como aplicaciones críticas para el negocio o aplicaciones para aplicaciones de tamaño mediano a grande.
Paradigmas y patrones conocidos desarrollados durante décadas,
Facilidad de comprobación estática,
Capacidad para encontrar muchos desarrolladores profesionales con décadas de experiencia.
Lenguajes estrictos como Haskell, Ada o técnicas como los contratos de Código en C # son mejores para los sistemas que favorecen la seguridad sobre la flexibilidad (incluso si Haskell puede ser extremadamente flexible), como los sistemas críticos y los sistemas que se espera que sean extremadamente estables. Los beneficios son:
Capacidad para atrapar tantos errores como sea posible en tiempo de compilación,
Facilidad de comprobación estática,
Facilidad de pruebas formales.
Sin embargo, al observar los lenguajes y tecnologías utilizados para proyectos a gran escala por grandes corporaciones, parece que mi afirmación es incorrecta . Por ejemplo, Python se utiliza con éxito para sistemas grandes como YouTube u otras aplicaciones de Google que requieren una cantidad importante de rigor.
¿Existe todavía una correlación entre la escala del proyecto y la rigurosidad del lenguaje / paradigma que debe usarse?
¿Hay un tercer factor que he olvidado tener en cuenta?
Donde me equivoco