42 votes

Existe-t-il des études statistiques indiquant que Python est "plus productif"?

Si je fais une recherche google avec la chaîne "python productives", le premier résultat est une page http://www.ferg.org/projects/python_java_side-by-side.html affirmant que "python est plus productif de Java". De nombreux programmeurs Python que j'ai parlé avec de prétendre que Python est "plus productif", et la plupart d'entre eux déclarent les arguments énumérés dans l'article cité ci-dessus.

L'article pourrait se résumer en ces stametements:

  1. Python vous permettre de vous écrire terser code
  2. Plus terser est écrit en moins de temps
  3. Ensuite Python est plus productif

Mais l'article n'a pas de rapports tout statisticals preuves qui appuient l'hypothèse qu'une plus laconique code pourrait être développé (non écrites) en moins de temps.

Savez-vous s'il y a un article que les rapports statistiques des preuves que Python est plus productif de quelque chose d'autre?

Mise à jour:

Je ne suis pas intéressé à adovacy arguments. S'il vous plaît ne dites pas pourquoi quelque chose devrait être plus productif de quelque chose d'autre. Je suis intéressé par des études que les mesures que l'utilisation d'une chose est liée ou non liée à la productivité.

Je suis intéressé par statisticals preuves. Si vous prétendez que la productivité dépend de nombreux autres facteurs, puis il devrait y avoir une étude statistique qui prouve que la langue choiche n'est pas statistiquement corrélé à la productivité.

26voto

Steven A. Lowe Points 40596

Oui, et il y a aussi des études statistiques qui prouvent que les chiens sont plus productifs que les chats. Les deux sont tout aussi valables. ;-)

par demande populaire, ici sont un couple de des "études" - les prendre avec un bloc de sel!

  1. Une comparaison empirique de C, C++, Java, Perl, Python, Rexx, et Tcl PDF avertissement!
  2. Langage de programmation de la Productivité PDF avertissement! Notez que ces statistiques sont pour une "chaîne de traitement du problème", donc on pourrait s'attendre à ce que le gagnant sera...Perl, bien sûr!

et Jeff Atwood de rêveries sont également intéressantes

les enjeux de la productivité du programmeur sont beaucoup plus complexe que ce langage est utilisé. La productivité des programmeurs peuvent varier énormément, et qui est touchée par le problème de domaine ainsi que de nombreux autres facteurs. Donc pas de "étude" ne peut jamais être "définitif". Voir la Compréhension de Logiciels de la Productivité et de la Productivité des Variations Entre les Développeurs de Logiciels et les Équipes pour plus d'informations.

Enfin, le bon outil pour le bon travail est toujours la règle. Pas d'exceptions.

19voto

Konrad Rudolph Points 231505

Oui, il y a un excellent livre de Lutz Prechelt sur ce sujet:

Une Comparaison Empirique de Sept Langages de Programmation

Bien sûr, ce document n'a pas de "prouver" la supériorité d'une langue particulière. Mais il est probablement aussi proche que toute étude scientifique peut arriver à la vérité. D'autre part, les données de cette étude est très daté, et dans l'évolution rapide du monde du génie logiciel ce fait joue un rôle important, puisque les deux langues et les outils ont considérablement amélioré au cours du temps.

15voto

Brian Points 82719

Tous les éléments de preuve anecdotique.

Vous ne pouvez pas toujours trouver les études publiées qui montrent que le général la supériorité d'une langue sur une autre, car il y a trop d'confond:

  • Les programmeurs individuels diffèrent largement de la capacité
  • Certaines tâches sont plus adaptés à une langue donnée/bibliothèque que les autres (ce qui constitue représentant un ensemble de tâches?)
  • Langues différentes ont différentes bibliothèques de base
  • Langues différentes ont différentes chaînes d'outils
  • L'Interaction de deux ou plusieurs de ce qui précède (par exemple, la familiarité de la programmeur X avec des outils Y)
  • etc. la liste va sur et sur et sur

Même si vous pouvez concevoir des expériences pour le contrôle de certains de ces, la variabilité nécessite toujours une énorme quantité de puissance statistique pour obtenir de résultat significatif, et personne n'a jamais fait d'études où, comme 1000 programmeurs de faire exactement la même tâche dans des langues différentes, donc il n'y a jamais rien de définitif.

Le résultat est, chacun de nous sait ce qu'est le meilleur, les langues et les outils, et ainsi de nous permettre de défendre eux sans crainte d'être abattu par une étude publiée. :)

4voto

hasenj Points 36139

Vous ne pouvez pas le mesurer, mais si vous avez de l'expérience avec Java, et puis vous apprendre python et essayer de faire des trucs avec elle, vous vous rendrez compte par vous-même.

C'est une de ces choses qui ne peuvent pas être quantifiés, et franchement même si il y avait une étude statistique, je ne serais pas convaincu par celui-ci. Vous pouvez apporter un Java gourou et un python newbie et de leur donner une tâche qui est mieux fait avec java (peut-être parce qu'il y a une bibliothèque spécifique, ou même d'une fonctionnalité intégrée pour cela), et peut-être que dans ce cas, la Java gourou sera "plus productif" que le python débutant.

Certaines personnes mentionnent IDEs, à mon avis, vous pouvez être productif avec python, même sans IDE, spécialement sans une bête comme Eclipse. Vous n'avez pas cheked exceptions en python, donc vous n'avez pas besoin d'un outil pour vous aider à composer avec cela. Parce que tout en python est dynamique, vous n'avez pas de "virtuel" des méthodes (bien que vous pouvez imiter si vous voulez vraiment), de sorte que vous n'avez pas besoin d'un outil pour vous aider à composer avec l'écriture des talons et autres joyeusetés. etc. Beaucoup de choses en Java qui nécessitent une IDE sont tout simplement pas applicables à python. La seule chose utile qu'une IDE en python serait de l'auto-complétion et peut-être un shell interactif dans la même fenêtre de l'éditeur.

OK, voici la chose à propos de la "laconique" argument: Java a tellement l'encombrement de la surcharge, c'est à dire public static void main! Système.la sortie standard stdout.writeln (ou ce que l'enfer était-il?), rappelez-moi comment obtenez-vous l'entrée de l'utilisateur? Oui, il n'y a aucun moyen spécifique, vous toujours jusqu'à la fin de l'écriture d'une classe wrapper autour d'elle!! Rappelez-moi comment lire un fichier? la bibliothèque avez-vous importer? oh, allez lire les docs de l'API et de parcourir des tonnes de flux de lecteurs et d'écrivains, tout en python, c'est juste open('filename'). Vous pouvez courir à travers toutes les lignes d'un fichier texte par simplement: for line in open('filename'):.

En Java il y a tellement de surcharge de mots juste encombre votre esprit et détourne votre attention de votre tâche principale. Cette surcharge de travail est un réel obstacle, il n'y a environ 7 éléments que vous pourriez tenir dans votre mémoire à court terme, for line in file remplit un élément; combien d'articles avez-vous besoin pour remplir si utilisation de Java classes IOStream pour cette tâche? Combien d'emplacements avez-vous quitté pour une chose liée à la tâche que vous êtes en train de faire?

3voto

Uri Points 50687

Générale des réclamations au sujet de la productivité ne font pas nécessairement de sens. Un bon logiciel d'ingénieur (ou chef de projet) sait dans quelle langue à choisir en fonction de la nature du projet, les exigences de la clientèle, et les compétences de son équipe.

Il n'y a généralement pas de "langue pour les gouverner tous", mais il y a clairement des langues qui sont les meilleurs pour certains domaines. Je ne voudrais pas écrire distribué des applications d'entreprise ou des pilotes de périphériques en perl, ou des jeux dans le prologue, mais il y a une grande utilité pour eux.

La productivité dépend aussi de support de l'outil (par exemple, il y a de bonnes Python Ide?), sur les compétences, et sur la possibilité pour les praticiens de désordre. Je suis généralement méfier de la programmation fonctionnelle dans les mains de la moyenne programmeur.

Si Python automatise ou simplifie les tâches des développeurs Java réaliser le même type d'applications ont souvent à faire, alors oui, il peut être plus productif, mais toutes les preuves que vous obtenez serait encore anecdotique.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X