Une mesure de la vitesse de développement

10

J'ai vu beaucoup de tests mesurant la vitesse d'exécution des langages de programmation, mais je n'ai jamais trouvé de tests mesurant la vitesse de développement.

J'ai entendu dire que la vitesse de développement augmentait lorsque l'on travaillait avec des langages dynamiques, mais y a-t-il une preuve de cela? Je n'essaie pas de dire que les langages dynamiques ne sont pas efficaces, mais j'aimerais en quelque sorte voir les résultats d'une étude scientifique, si une telle chose existe.

Encore mieux seraient des informations sur les installations de maintenance. Certaines langues sont-elles plus faciles à déboguer que d'autres?

EDIT: Je suis principalement intéressé par les différences entre deux langues qui sont proches dans la syntaxe. Par exemple, je suppose que la programmation en C sera généralement plus lente que la programmation en Java; mais la programmation en Java est-elle plus rapide que la programmation en C #?

DistantEcho
la source
Voir programmers.stackexchange.com/questions/10032 (mais notez que je ne prétends pas qu'il s'agit d'un doublon).
Frank Shearar
C'est vraiment intéressant, merci! Certains des liens sont en fait exactement ce que je cherchais.
DistantEcho du
Jetez un œil à ce fil de discussion: stackoverflow.com/questions/1894453/…
ChristopheD

Réponses:

6

Absolument, le langage de programmation fait la différence. Cependant, je pense que la différence est beaucoup plus sur la façon dont le programmeur est familier avec chaque langue que n'importe quel aspect particulier de la langue, en particulier compte tenu de votre contrainte de langues avec une syntaxe similaire.

JohnFx
la source
2

Pour moi, c'est un peu le type de pinceau qui vous permet de peindre plus rapidement.

Si vous considérez ce que vous peignez comme une marchandise, plus le pinceau est gros, plus vous peindrez vite.

Si vous voyez un bon code comme une forme d'art, alors il est moins proche de la taille du pinceau et plus exactement ce que vous faites avec vos pinceaux.

Désolé, c'est un peu une non-réponse à la vraie question.

DanSingerman
la source
En fait, je suis plus intéressé par la différence entre deux gros pinceaux. Par exemple, comment savoir si Python aura une meilleure vitesse de développement que Lua - ou l'inverse?
DistantEcho
1
@Niphra, tu ne sais pas. Il y a beaucoup trop d'impondérables dans une telle comparaison pour qu'ils soient une métrique valide pour cela.
Adam Crossland
bonne réponse, mais seulement si vous ignorez l'habileté du peintre
Steven A. Lowe
1

Je ne suis pas sûr que ce soit pertinent, mais c'est intéressant

Dans The Mythical Man Month, Fred Brooks mentionne des études comparant l'assemblage et les langages de niveau supérieur. Ils ont constaté que les programmeurs produisaient le même nombre d'instructions par an dans les deux, mais les instructions pour un langage de haut niveau étaient égales à plusieurs instructions en langage d'assemblage. Ainsi, en passant au langage de haut niveau, les programmeurs ont réalisé une augmentation quel que soit le multiple moyen de l'instruction d'assemblage à l'enseignement du langage en termes de productivité.

La même chose devrait être vraie de C vs Java / C #, je ne connais pas la vraie différence entre C # et Java. Mais chaque fois que vous augmentez le niveau d'abstraction, vous augmentez la productivité. Cependant, je pense également que cela réduira le contrôle sur ce que la machine fait réellement. Vous devez avoir confiance que la langue fait ce que vous voulez. Par exemple, dans un logiciel hautes performances, la récupération de place est inacceptable, sauf si vous avez un contrôle complet sur son exécution et sa durée.

Dominique McDonnell
la source
Il serait intéressant s'il y avait aujourd'hui des études qui le feraient à nouveau lors de la comparaison de langages de haut niveau tels que node.js et python.
SomeGuyOnAComputer
1

Qu'est-ce que la productivité? Qu'est-ce qu'un produit , même? Personne ne sait, mathématiquement parlant.

KLoC?

Complexité cyclomatique?

Points de fonction?

Je pense que vous devrez examiner le niveau de l'entreprise et effectuer des comparaisons de centiles avec d'autres programmeurs effectuant un travail similaire, puis mesurer les fonctionnalités fournies par programmeur. Ce sont des points très sophistiqués et subtils pour pouvoir mesurer statistiquement et conserver du sens.

Paul Nathan
la source
0

Imaginez comment cela serait testé: vous devez avoir un projet réel développé indépendamment à la fois à plusieurs reprises avec le même langage (pour éliminer la variabilité de l'expérience et des connaissances du programmeur) et avec des langues différentes (pour obtenir des données pour comparer les langues). Il me semble que l'expérience se développe rapidement à une taille ingérable.

Je serais ravi d'entendre parler des moyens de «réduire» l'expérience, ou des tentatives de réaliser réellement l'expérience comme indiqué.

kasterma
la source
L'expérience est en effet un problème, donc je travaillerais avec un débutant, ou mieux encore, quelqu'un de bien informé dans un langage de programmation entièrement différent. Quant à la taille du projet, je suppose qu'un tout petit projet suffirait à obtenir des résultats, même s'ils ne sont pas parfaits.
DistantEcho
Parfois cependant, selon l'histoire, la «victoire» d'une langue ne se produit qu'au-delà d'une certaine taille / complexité. Pour les problèmes plus petits / plus simples que cela, l'étonnance de cette langue n'est pas évidente. C'est donc dit.
Frank Shearar
Je m'attendrais à ce qu'une certaine «victoire» ne dépasse qu'une certaine complexité et un certain niveau d'expérience du programmeur. Mesurer avec seulement des débutants manque le plus souvent. Vraiment bien utiliser une langue nécessite une expérience spécifique à la langue.
kasterma