29 votes

Décider d'un langage: Python ou Java

Je suis partie d'un petit (lire: deux programmeur) de démarrage, et nous sommes sur le point de commencer à développer une grande (nous estimons qu'il en sera d'environ un an avant que les clients vont voir quoi que ce soit) de l'application web... Et il est venu le temps de choisir une langue.

La plupart de l'expérience que j'ai est avec Python, la plupart de mes co-travailleur de l'expérience en Java et C++, mais qu'ils aimeraient apprendre Python.

Mais, si c'était tout ce qu'il y avait à elle, je ne serais pas à poster ici :)

Mon patron s'inquiète de ce que, si nous nous engageons à développer en Python, nous allons augmenter le risque que ça va être dur de trouver de nouveaux programmeurs ou nous remplacer si on se fait frapper par un autobus.

J'ai des opinions sur cette question, mais je n'ai pas d'expérience pour les sauvegarder... Donc je voudrais savoir:

  • Sont ses préoccupations valide?
  • Avez-vous des preuves que c'est difficile/facile d'apporter un nouveau programmeur à bord, s'ils n'ont pas d'expérience avec le langage/framework que vous utilisez?
  • Avez-vous été dans une situation similaire, et avoir un peu de sagesse que vous pourriez partager?

Merci!

Modifications

  • Grâce à dmckee pour souligner une question similaire, http://stackoverflow.com/questions/954164/choosing-between-java-and-python
  • Il serait plus facile pour mon collègue d'apprendre le langage Python que mon remplacement, parce que mon collègue m'aurez assis à côté d'elle (ne pas faire moi-même être quelque chose de particulièrement spécial – mais il est plus facile d'apprendre quelque chose si vous avez un enseignant avec expérience)
  • Certains ont suggéré que mon patron est de poser une question idiote... Mais la raison pour laquelle je pose la question ici, c'est que j'ai beaucoup de respect pour lui et son sens des affaires (quelque chose que j'ai, en tant que programmeur, ont de moins en moins), donc je veux prendre sa au sérieux les préoccupations et lui donner une bonne (lire: "et fiable dépourvue de la superstition") réponse.
  • Je ne veux pas suggérer que nous souhaitons engager le côté idiot développeur Java... Mais je crois qu'il y a plus de "bon" (lire: "peut-être pas une superstar, mais solide et compétente") Java programmeurs dans le monde qu'il y a de Python pour les programmeurs.
  • Quelques personnes ont suggéré que les langages statiquement typés sont plus faciles à entretenir. Je suis disposé à croire que, mais seulement si quelqu'un peut m'indiquer des éléments de preuve qui le prend en charge (j'ai conservé une grande (25k LOC) application en Python, et je ne pense pas que ma tâche aurait été beaucoup plus simple si elle avait été statiquement typé)

Accepté

Merci à tous pour vos réponses, elles sont très appréciées.

Après avoir lu toutes les réponses et les articles liés, je suis arrivé à ces conclusions:

  • Lors de l'affaire avec une langue, le facteur le plus important devrait être de l'expérience (comme l'apprentissage d'une nouvelle boîte à outils va vous coûter beaucoup de temps, quelle que soit la langue).
  • Sans exception, tout le monde a dit que tout programmeur compétent peut ramasser Python (ou tout autre sane langue) en relativement peu de temps, nous n'avons donc pas à trop se soucier d'être frappé par un autobus.
  • En supposant l'égalité de l'expérience en Java et Python, Python semble être le choix préféré pour toutes les raisons que vous attendez: le temps de marché, programmeur moyen de la qualité et syntaxique de la clarté/de l'expressivité.
  • Quelques bons arguments ont également été réalisés pour Java, en qui il a le plus de "trucs", en particulier de l'entreprise "trucs", disponible (Python personnes: si vous ne pouvez pas l'admettre, vous êtes dans le déni), il y a plus expérimentés (et compétent) les programmeurs Java et Java peut être plus rapide.
  • Le typage statique, cependant, n'est pas une bonne raison d'envisager l'une ou l'autre langue, comme pour chaque personne qui dit qu'ils pensent que c'est utile il y a un autre (ou même les deux autres) pour dire que vous êtes très bien sans elle.
  • Python (ou toute autre langue qui peut s'exécuter sur la machine JVM) est un bon choix, car il laisse ouverte la possibilité d'interagir avec du code Java en bas de la route.

Encore une fois, merci pour les réponses, elles sont très appréciés.

20voto

fortran Points 26495

Python, bien sûr. Demandez à votre patron de lire ces deux grands essais de Paul Graham Beating the Averages et The Python Paradox .

20voto

DigitalRoss Points 80400

De peur et de Dégoût et de la Politique Linguistique


Si votre patron veut embaucher des programmeurs qui ne peut pas apprendre une nouvelle langue, c'est le problème.

Mais l'obtention d'un plus intelligente patron n'est probablement pas sur la table, alors, comment à ce sujet:

  1. Agiter pour Scala et de Levage ou de Rubis sur des Rails.
  2. Le patron se plaint.
  3. D'accord avec le patron que c'est une mauvaise idée. Essayez de garder un visage impassible.
  4. Compromis sur Python.

:-)

Il y a un argument en faveur de Java, d'ailleurs, mais ce n'est pas: "je veux utiliser le plus populaire de la langue, parce que c'est ce que les diplômés de savoir." Oui, moins de la langue populaire a de moins en moins de demandeurs d'emploi, mais aussi moins d'ouvertures, donc environ un équilibre.

Mais revenons à l'argument réel pour java...beaucoup d'autres réponses de référence de la sagesse conventionnelle que les langages statiquement typés sont mieux pour une grande base de code. Il est probablement tout à fait vrai, mais les start-up sont risqués. Je pense en devenant succès trump hypothétiques que faisons-nous en bas de la route quand nous sommes la-prochaine-netscape s'inquiéter. Gee, dans ce cas, vous avez déjà gagné, donc y trouver quelques grands recruter, pas seulement le côté du corps chaud qui "sait" de java.

Et je ne pense pas que Twitter va avoir le moindre problème pour trouver un développeur Scala. En fait, je ne pense pas que quelqu'un a de la difficulté à trouver des développeurs.

18voto

soru Points 2960

Ancienne (2006), mais bon, à partir de Joël:

"...la ligne de fond est qu'il y a trois et un demi-plateformes (C#, Java, PHP, et une demi-Python), qui sont toutes tout aussi susceptibles de vous aider en vous, une infinité de plates-formes où vous êtes presque garanti à l'échec façon spectaculaire quand il est trop tard pour changer quoi que ce soit (Lisp, Dll ISAPI écrit en C, Perl), et une poignée de les plates-formes où Le Jury n'Est Pas, Donc Pourquoi Prendre Le Risque, Lorsque Votre Travail Est Sur La Ligne? (Ruby on Rails)."

et

"Donc, pour l'instant, mon avis est le suivant: ne pas commencer un nouveau projet sans au moins un architecte avec plusieurs années d'expérience solide dans la langue, des classes, des Api et des plates-formes que vous êtes en train de construire sur. Si vous disposez d'un choix de plates-formes, utilisez celui de votre équipe a le plus de compétences, même si elle n'est pas branchée ou nominalement les plus productives."

N'importe qui peut programme peut obtenir jusqu'à la vitesse sur un code écrit à la base de toute saine de la langue. C'est de la conception et de la création de la base de code qui est le truc.

Assurez-vous juste d'avoir une idée précise de l'auto-évaluation de vos compétences si vous pensez que vous êtes à l'emploi de le faire pour un grand système.

11voto

Stefano Borini Points 36904

Temps de mise en marché.

L'une des principales raisons pourquoi je propose de python comme une solution à court de temps sur le marché est nécessaire pour produire une application. Java est si douloureuse à se développer avec. Oui, vous finissez par avoir beaucoup de prêts à utiliser des bocaux, mais en fin de compte, le code que vous écrivez est juste le collage entre ces bibliothèques, le collage qui est pénible avec sa nature statique. Vous vous retrouvez à l'aide de tous les Design pattern livre pas à la logique d'écriture de code, mais juste pour la lutte contre la nature statique de la langue.

D'autre part, le python est plus rapide. Vous pouvez développer un prototype fonctionnel en un rien de temps, et d'ajouter sur ce prototype en un rien de temps. Le code que vous écrivez est logique, non pas l'échafaud, et vous n'avez pas besoin de la deuxième Guerre Mondiale char allemand stationné sur votre RAM à l'aise tout l'inutile de taper ce que vous devez faire pour faire le plus de choses triviales. Oui je parle de l'Éclipse.

Java, d'autre part, probablement des échelles de mieux en mieux sur un grand nombre de développeurs, mais mon expérience dans une entreprise avec 2 équipes de 6 développeurs de chacun et autour de 100k LDC a été très positif avec python.

9voto

Brian Agnew Points 143181

Pourquoi ne pas profiter de ces deux plates-formes en utilisant Python ?

Écrivez votre plus bas niveau des entités et des objets du noyau de Java, et de lier ensemble dans un agile, flexible de la mode à l'aide de Jython. De cette façon, vous pouvez facilement tirer parti des avantages de Java (le langage) - typage statique, associé de l'unité de test de cadres etc.

Mais à l'aide de Jython pour lier le tout ensemble signifie que vous pouvez très rapidement remonter votre projet à l'aide de la base d'objets, mais de changer la dynamique de il.

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