Nota: esto es principalmente subjetivo y se basa en mis experiencias e impresiones.
Los idiomas escritos dinámicamente son muy diferentes de los idiomas escritos estáticamente. Estas diferencias probablemente se vuelven más importantes en el software empresarial pesado que en la mayoría de las otras aplicaciones.
Los lenguajes de tipo estático tienden a ser muy prescriptivos. Un método solo tomará datos que coincidan exactamente con su firma. Los niveles de acceso tienden a ser muy importantes y las interfaces se definen explícitamente, con restricciones detalladas pero inequívocas para aplicar esas definiciones.
Los lenguajes escritos dinámicamente, por otro lado, son muy pragmáticos. Las conversiones de tipos a menudo suceden implícitamente, las funciones incluso pueden jugarse si proporciona el tipo de entrada incorrecto siempre que se comporte lo suficientemente similar. En lenguajes como Python, incluso los niveles de acceso se basarán en el contrato en lugar de las restricciones técnicas (es decir, solo private
porque le dicen que no lo use y tiene un nombre curioso).
Muchos programadores prefieren lenguajes dinámicos porque (posiblemente) permiten la creación rápida de prototipos. El código a menudo termina más corto (aunque solo sea por la falta de declaraciones de tipo) y si quiere violar el protocolo adecuado porque necesita una solución rápida y sucia o quiere probar algo, eso es fácilmente posible.
Ahora, la razón por la que las empresas "empresariales" a menudo prefieren los idiomas de tipo estático es exactamente que son más restrictivas y más explícitas sobre esas restricciones. Aunque en la práctica, incluso el código escrito estáticamente puede ser roto por idiotas con un compilador, muchos problemas serán mucho más visibles mucho antes en el proceso (es decir, antes del tiempo de ejecución). Esto significa que incluso si la base de código es grande, monolítica y compleja, se pueden detectar muchos errores fácilmente, sin tener que ejecutar el código o enviarlo al departamento de control de calidad.
La razón de que el beneficio no supere las desventajas para muchos programadores fuera de ese entorno es que estos son errores que a menudo se detectarán fácilmente mediante una inspección exhaustiva del código o incluso al intentar ejecutarlo. Especialmente cuando se sigue una metodología basada en pruebas, estos errores a menudo se vuelven triviales y fáciles de solucionar. Además, con muchas de estas compañías que tienen un ciclo de lanzamiento mucho más corto, la productividad es a menudo más importante que la rigidez y los desarrolladores mismos están realizando muchas pruebas (básicas).
La otra razón por la que las corporaciones empresariales no usan mucho los idiomas escritos dinámicamente es el código heredado. Por tonto que nos parezca a los nerds, las grandes corporaciones a menudo se apegarán a soluciones que funcionen, incluso si ya han pasado su vida útil. Esta es la razón por la cual tantas compañías importantes aplican Internet Explorer 6 y son tan lentas para actualizar sus sistemas operativos. Esta es también la razón por la que a menudo escriben código nuevo en lenguajes "antiguos" (por ejemplo, versiones antiguas de Java): es mucho más fácil agregar algunas líneas de código a un software que no está vivo que obtener la aprobación para una reescritura completa en un nuevo idioma.
tl; dr: los lenguajes estáticos se parecen más a la burocracia, por lo que a los gerentes empresariales les gustan más.