Parece que todos se están subiendo al tren dinámico y no compilado últimamente. En su mayoría, solo he trabajado en lenguajes compilados de tipo estático (C, Java, .Net). La experiencia que tengo con lenguajes dinámicos es cosas como ASP (Vb Script), JavaScript y PHP. Utilizar estas tecnologías me ha dejado mal sabor de boca a la hora de pensar en lenguajes dinámicos. Las cosas que normalmente el compilador habría detectado, como los nombres de variable mal escritos y la asignación de un valor del tipo incorrecto a una variable, no ocurren hasta el tiempo de ejecución. E incluso entonces, es posible que no note un error, ya que simplemente crea una nueva variable y asigna un valor predeterminado. Tampoco he visto nunca intellisense funcionar bien en un lenguaje dinámico, ya que, bueno, las variables no tienen ningún tipo explícito.
Lo que quiero saber es, ¿qué encuentra la gente tan atractiva sobre los lenguajes dinámicos? ¿Cuáles son las principales ventajas en términos de cosas que los lenguajes dinámicos le permiten hacer que no se pueden hacer o que son difíciles de hacer en lenguajes compilados? Me parece que decidimos hace mucho tiempo que cosas como páginas asp no compiladas que arrojan excepciones en tiempo de ejecución eran una mala idea. ¿Por qué hay un resurgimiento de este tipo de código? ¿Y por qué me parece, al menos, que Ruby on Rails realmente no se parece a nada que no pudieras haber hecho con ASP hace 10 años?