¿Para qué tipo de aplicaciones de software los lenguajes de programación con tipo dinámico son más apropiados que los lenguajes con tipo estático?

La elección de los idiomas de tipo dinámico generalmente depende más del contexto de su negocio que del “tipo de aplicación de software”.

Solía ​​haber dos razones principales para usar lenguajes tipados estáticamente: 1) velocidad de ejecución y 2) mantenibilidad a medida que el sistema escala.

El primero todavía es válido, por lo que si debe ejecutarse en un hardware limitado (lo que significa que no puede optar por la expansión horizontal del hardware) Y va a estar vinculado al cómputo (la gran mayoría de los sistemas están vinculados a E / S), para esto ” tipo de aplicación ” debe elegir un idioma de tipo estático .

Sin embargo, el motivo de mantenibilidad es menos cierto hoy en día. Hay aplicaciones PHP y JavaScript muy grandes. Estos invariablemente usan pruebas automatizadas y generación automática (pero guiada) de documentación para acercarse a todos los beneficios de mantenibilidad de los lenguajes estáticamente escritos en mi humilde opinión …

Y los idiomas escritos dinámicamente pueden proporcionar un gran impulso a la productividad. Algunas cosas son mucho más fáciles de expresar. Hay un nivel de abstracción: metaprogramación si lo desea, eso solo es posible con lenguajes dinámicos. Java ha intentado agregar algo de soporte para esto con cosas como genéricos, pero ¿alguno de ustedes ha sido atrapado en el infierno de compilación genérico de Java?

Yo diría que la mayoría de los sistemas actuales están vinculados a E / S e incluso los que están vinculados a cómputo a menudo pueden escalar horizontalmente. El hardware es más barato que los programadores … Y su mayor amenaza de falla suele ser su riesgo de no ofrecer suficiente funcionalidad para ganar un mercado antes que un competidor … o para satisfacer a sus partes interesadas. Un programador de CoffeeScript o Python altamente productivo, puede enviar mucha más funcionalidad, más rápido que el mejor programador Java o C ++.

Desarrollé el lenguaje de programación Ring ( http://ring-lang.net ) y es lenguaje dinámico. Use lenguajes dinámicos para

(1) Aplicaciones que requieren que se tomen muchas decisiones durante el tiempo de ejecución en función de variables con diferentes tipos.

(2) Aplicaciones que procesan muchas colecciones de datos que contienen estructuras de datos complejas con diferentes tipos.

(3) Aplicaciones que tienen cambios rápidos en los requisitos durante su uso y requieren una respuesta rápida del equipo de desarrollo

Entonces, se trata de cambios dinámicos, datos diferentes, productividad y creación de prototipos.

Pequeños hacks