Una medida de la velocidad de desarrollo.

10

He visto muchas pruebas que miden la velocidad de ejecución de los lenguajes de programación, pero nunca he encontrado pruebas que midan la velocidad de desarrollo.

Escuché que la velocidad de desarrollo aumenta cuando se trabaja con lenguajes dinámicos, pero ¿hay alguna prueba de eso? No estoy tratando de decir que los lenguajes dinámicos no son eficientes, pero me gustaría ver los resultados de un estudio científico, si tal cosa existe.

Aún mejor sería información sobre las instalaciones de mantenimiento. ¿Algunos idiomas son más fáciles de depurar que otros?

EDITAR: Estoy principalmente interesado en las diferencias entre dos idiomas que están cerca en sintaxis. Por ejemplo, supongo que la programación en C generalmente será más lenta que la programación en Java; pero, ¿la programación en Java es más rápida que la programación en C #?

Eco distante
fuente
Consulte programmers.stackexchange.com/questions/10032 (pero tenga en cuenta que no afirmo que esto sea un duplicado).
Frank Shearar
Esto es realmente interesante, gracias! Algunos de los enlaces son exactamente lo que estaba buscando.
DistantEcho
Eche un vistazo a este hilo: stackoverflow.com/questions/1894453/…
ChristopheD

Respuestas:

6

Absolutamente el lenguaje de programación hace la diferencia. Sin embargo, creo que la diferencia es mucho más acerca de cuán familiar está el programador con cada idioma que cualquier aspecto particular del idioma, especialmente dada su restricción de idiomas con una sintaxis similar.

JohnFx
fuente
2

Para mí, esto es algo similar a qué tipo de pincel te permite pintar más rápido.

Si considera lo que pinta como una mercancía, cuanto más grande sea el pincel, más rápido pintará.

Si ve un buen código como una forma de arte, entonces es menos del tamaño del pincel y más exactamente qué hace con sus pinceles.

Lo sentimos, esto no responde a la pregunta real.

DanSingerman
fuente
En realidad, estoy más interesado en la diferencia entre dos pinceles grandes. Por ejemplo, ¿cómo sabemos si Python tendrá una mejor velocidad de desarrollo que Lua, o al revés?
DistantEcho
1
@Niphra, no lo sabes. Hay demasiados imponderables en tal comparación para que su métrica sea válida.
Adam Crossland
buena respuesta, pero solo si ignoras la habilidad del pintor
Steven A. Lowe
1

No estoy seguro de que esto sea relevante, pero es interesante.

En The Mythical Man Month, Fred Brooks menciona estudios que comparan ensamblaje y lenguajes de nivel superior. Descubrieron que los programadores producían la misma cantidad de instrucciones por año en ambos, pero las instrucciones para un lenguaje de alto nivel eran iguales a múltiples instrucciones en lenguaje ensamblador. Entonces, al cambiar al lenguaje de alto nivel, los programadores lograron un aumento cualquiera que sea el múltiplo promedio de la instrucción de ensamblaje a la instrucción de idioma en productividad.

Lo mismo debería ser cierto para C vs Java / C #, no sé la diferencia real entre C # y Java. Pero cada vez que aumente el nivel de abstracción, aumentará la productividad. Sin embargo, también creo que reducirá el control sobre lo que la máquina está haciendo realmente. Tienes que confiar en que el idioma está haciendo lo que quieres. Por ejemplo, en el software de alto rendimiento, la recolección de basura es inaceptable, excepto si tiene control total sobre cuándo se ejecuta y durante cuánto tiempo.

Dominique McDonnell
fuente
Sería interesante si hubiera algún estudio hoy que lo haría nuevamente al comparar lenguajes de alto nivel como node.js y python.
SomeGuyOnAComputer
1

¿Qué es la productividad? ¿Qué es el producto , incluso? Nadie lo sabe, matemáticamente hablando.

KLoC?

¿Complejidad ciclomática?

Puntos de función?

Creo que tendría que analizar el nivel de negocios y realizar comparaciones porcentuales con otros programadores que realizan un trabajo similar, luego medir las características entregadas por programador. Esos son puntos muy sofisticados y sutiles para poder medir estadísticamente y retener el significado.

Paul Nathan
fuente
0

Imagine cómo se probaría esto: necesita tener un proyecto del mundo real desarrollado de forma independiente tanto repetidamente con el mismo lenguaje (para eliminar la variabilidad de la experiencia y el conocimiento del programador) como con diferentes idiomas (para obtener algunos datos para comparar los idiomas). Me parece que el experimento crece rápidamente a un tamaño inmanejable.

Me encantaría saber acerca de las formas de "reducir" el experimento, o sobre los intentos de realizar el experimento como se indicó.

kasterma
fuente
La experiencia es realmente un problema, por lo que trabajaría con un principiante, o incluso mejor, alguien conocedor de un lenguaje de programación completamente diferente. En cuanto al tamaño del proyecto, supongo que un proyecto muy pequeño sería suficiente para obtener resultados, incluso si no son perfectos.
DistantEcho
Sin embargo, a veces, según la historia, el "triunfo" de un idioma solo ocurre después de cierto tamaño / complejidad. Para problemas más pequeños / más simples que eso, lo sorprendente de ese lenguaje no es evidente. Así se dice.
Frank Shearar
Esperaría que un cierto "triunfo" haya pasado una cierta complejidad y nivel de experiencia del programador. Medir solo con principiantes en su mayoría pierde el punto. El uso real de un idioma requiere experiencia específica en el idioma.
kasterma