por
pobrecito hablador
el Martes, 22 Marzo de 2005, 22:52h
(#467249)
Un poco más arriba se hacía mención a la performancia de los programas implementados con lenguajes dinámicos. Y alguien se ha referido a aplicaciones en el campo científico (entre otros) como ejemplo de uno dentro del cual no tienen cabida.
Pero todos conocemos la vieja regla de que el 10% del código de un programa se ejecuta el 90% de su tiempo de proceso y que, puestos a optimizar, el bucle interno es más importante que el externo.
Mi experiencia de programación con lenguajes dinámicos se reduce a Python, R y Java. Y, especialmente los dos primeros, los he usado con éxito para el desarrollo de de algoritmos muy exigentes en términos de carga de la CPU. Desde mi punto de vista, la lentitud de ejecución percibida por muchos programadores avezados en el uso de, por ejemplo, C, es una consecuencia de la inercia: están acostumbrados a codificar de una manera que, efectivamente, redunda en tiempos de ejecución exasperantes.
C es un lenguaje que, exagerando un poco, es pura gramática y carece de un vocabulario. Un programador de C enseguida echa mano de sus construcciones gramaticales para, por ejemplo, construir un bucle; sabe, por ejemplo, que para sumar los números de un array no tiene más remedio que utilizar en algún sitio un for(i=0...; en cambio, el desarrollador de una aplicación en un lenguaje dinámico cuenta con un abanico amplio de funciones --muchas veces implementadas nativamente en C, por lo que la pérdida de rendimiento es marginal-- sustitutivas de bucles y gracias a las cuales puede optimizar ese 10% del código que el programa va a estar recorriendo más frecuentemente.
Además, una de las características más de agradecer de los lenguajes dinámicos es la facilidad que ofrece (generalmente) su diseño para integrar en ellos rutinas compiladas.
Por ello, creo que ambos tipos de lenguajes de programación están abocados a coexistir y complementarse íntimamente. Los unos son más fáciles de desarrollar y depurar, generan código más legible y son ideales para crear el esqueleto lógico de las aplicaciones. Los otros, brindan la potencia de la que carecen los primeros cuando lo que importa es la velocidad de ejecución bruta.
Y, por supuesto, no aprecio, como otros, lugar para la controversia; sólo descubro nuevos horizontes de elección.
Puntos de inicio:
2
puntos
Modificador extra 'Informativo'
0
Total marcador:
2
1 respuesta por debajo de tu umbral de lectura actual.
Lenguajes 'dinámicos' y rendimiento.
(Puntos:2, Informativo)Pero todos conocemos la vieja regla de que el 10% del código de un programa se ejecuta el 90% de su tiempo de proceso y que, puestos a optimizar, el bucle interno es más importante que el externo.
Mi experiencia de programación con lenguajes dinámicos se reduce a Python, R y Java. Y, especialmente los dos primeros, los he usado con éxito para el desarrollo de de algoritmos muy exigentes en términos de carga de la CPU. Desde mi punto de vista, la lentitud de ejecución percibida por muchos programadores avezados en el uso de, por ejemplo, C, es una consecuencia de la inercia: están acostumbrados a codificar de una manera que, efectivamente, redunda en tiempos de ejecución exasperantes.
C es un lenguaje que, exagerando un poco, es pura gramática y carece de un vocabulario. Un programador de C enseguida echa mano de sus construcciones gramaticales para, por ejemplo, construir un bucle; sabe, por ejemplo, que para sumar los números de un array no tiene más remedio que utilizar en algún sitio un for(i=0...; en cambio, el desarrollador de una aplicación en un lenguaje dinámico cuenta con un abanico amplio de funciones --muchas veces implementadas nativamente en C, por lo que la pérdida de rendimiento es marginal-- sustitutivas de bucles y gracias a las cuales puede optimizar ese 10% del código que el programa va a estar recorriendo más frecuentemente.
Además, una de las características más de agradecer de los lenguajes dinámicos es la facilidad que ofrece (generalmente) su diseño para integrar en ellos rutinas compiladas.
Por ello, creo que ambos tipos de lenguajes de programación están abocados a coexistir y complementarse íntimamente. Los unos son más fáciles de desarrollar y depurar, generan código más legible y son ideales para crear el esqueleto lógico de las aplicaciones. Los otros, brindan la potencia de la que carecen los primeros cuando lo que importa es la velocidad de ejecución bruta.
Y, por supuesto, no aprecio, como otros, lugar para la controversia; sólo descubro nuevos horizontes de elección.