Al explicar la diferencia entre el rigor de los lenguajes y los paradigmas para un colega mío, terminé afirmando que:
-
Los lenguajes tolerantes, como los lenguajes dinámicos e interpretados, se usan 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 de placa de caldera reducido,
-
Capacidad para atraer programadores jóvenes y creativos que huyen de "lenguajes corporativos" como Java.
-
-
Los idiomas escritos de forma estática / compilada son mejores para las aplicaciones que requieren mayor rigidez, como aplicaciones críticas para la empresa o aplicaciones para aplicaciones de tamaño mediano a grande.
-
Paradigmas y patrones conocidos desarrollados durante décadas,
-
Facilidad de verificación estática,
-
Capacidad para encontrar muchos desarrolladores profesionales con décadas de experiencia.
-
-
Los 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 para la vida y los sistemas que se espera sean extremadamente estable. Los beneficios son:
-
Capacidad para detectar tantos errores como sea posible en tiempo de compilación,
-
Facilidad de verificación estática,
-
Facilidad de pruebas formales.
-
Sin embargo, al observar los lenguajes y tecnologías utilizados por las grandes corporaciones en los proyectos a gran escala, parece que mi afirmación es errónea . Por ejemplo, Python se usa con éxito para sistemas grandes como YouTube u otras aplicaciones de Google que requieren una cantidad importante de rigor.
¿Todavía hay una correlación entre la escala del proyecto y el rigor del lenguaje / paradigma que se debe usar?
¿Hay un tercer factor que he olvidado tener en cuenta?
¿En qué me equivoco?