Pourquoi une telle popularité avec Python? [fermé]

54

Autre que d'être ennuyé par la syntaxe des espaces blancs, je ne suis pas un haineux, je ne comprends tout simplement pas la fascination de Python.

J'apprécie la poésie de Perl et j'ai programmé de beaux services Web en bash & korn et shebang gnuplot. J'écris des documents troffet ça ne me dérange pas, REXX. Tcl n’a plus été utile il ya quelques années, mais qu’est-ce qui pue vraiment chez Python ? Je vois des offres d'emploi et de nombreux candidats avec cela comme un prix et un trophée sur leur curriculum vitae.


Je suppose qu'en réalité, j'essaye de devenir personnellement vendu pour ça, je ne trouve pas de raison.

Xepoch
la source
81
Je ne comprends jamais pourquoi les gens sont agacés par l'indentation requise par Python. J'espère que vous allez mettre en retrait votre code de toute façon, non?
Greg Hewgill
10
@GregH, bien sûr, mais ma syntaxe sera-t-elle rendue obligatoire? Un peu comme Makefiles?
Jé Queue
5
@Xepoch: Mais les Makefiles ne nécessitent pas simplement d'indentation, ils nécessitent un type d'indentation spécifique qu'il est généralement impossible de distinguer de l'autre. Si Makefiles avait besoin d’ un retrait d’espacement 0x09, vous n’y seriez probablement pas opposé et utiliseriez probablement un retrait constant dans la largeur d’indentation de votre choix. C'est la même chose que Python permet.
Greg Hewgill
31
Poésie de Perl? Sérieusement? Si vous avez eu l'honneur de conserver le code Perl d'autres personnes, vous comprendriez pourquoi Perl a perdu de sa popularité.
Grokus
6
@ Greg, je suis d'accord avec toi. Je l'ai déjà dit et je le répète: quiconque se plaint de la règle d'indentation de Python devrait être invité à maintenir du code faiblement indenté. Just sayin ...
Grokus

Réponses:

61

Python est un langage bien conçu avec une syntaxe relativement épurée, une bibliothèque standard complète, une excellente documentation incluse et tierce, un déploiement généralisé et l’immédiateté d’un langage de style "script" (c’est-à-dire sans étape de compilation explicite).

Greg Hewgill
la source
36
Bien conçu? Jamais remarqué que vous avez une fonction globale appelée len?
alternative le
65
Qu'est-ce qui ne va pas avec Len? J'ai l'impression que vous n'avez lu que 5 minutes sur le python
Kugel
5
Personnellement, la structure linguistique était si simple à comprendre qu'elle m'a permis de mieux comprendre comment les langues en général fonctionnent en interne. Ce sont les petites choses. Fonctions de première classe, possibilité d'importer uniquement les parties pertinentes d'un module externe dans le programme actuel, listes de compréhension, tuples, inclusion de self en tant que paramètre de méthode m'a aidé à comprendre la différence entre fonctions et méthodes (d'autres langues se cachent derrière le sucre). Cela me fait mal d'utiliser des langages comme C # maintenant parce que je sais intuitivement que le code ne m'apprend rien sur la façon dont il fonctionne en interne.
Evan Plaice
1
Comment python peut-il être un langage bien conçu? Il utilise bizarre __double_underscore_names__, il se mélange alllowercasefunctionamesavec mixed_underscoreet des mixedCamelCasenoms. Cela nécessite un :à la fin defou des boucles. Il utilise beaucoup d'abréviation étrange str, dict, islice. On dirait qu'il n'y a pas eu de convention du tout. C'est un chaos pur. Peps, pips, zens ... cela ressemble plus à une religion de python qu'à une langue. Il a peut-être quelques fonctionnalités intéressantes, mais cela n’explique pas pourquoi tant de gens sont si excités à ce sujet. Pyhon n'a rien de spécial. Juste un autre produit mal conçu.
t3chb0t
1
Et qu'est-ce que le hack def? Pourquoi est-ce que je définis une fonction avec a defet pas a func? Il n'y a pas d'autre langue aussi peu intuitive que le python.
t3chb0t
76

J’ai trouvé que Python était le langage de programmation le plus naturel dans lequel j’ai écrit du code. J’ai codé dans beaucoup de langages avant et après Python, et dans une mesure plus ou moins grande, il faut combattre le langage pour faites-le faire ce que vous voulez. Python réduit massivement cette lutte. Eric S Raymond a dit beaucoup mieux que moi dans Why Python?

À ce propos, Python conserve sa propreté même en évoluant rapidement. Dans la plupart des langues avec lesquelles j'ai travaillé, l'introduction de nouvelles fonctionnalités linguistiques introduit beaucoup de rides. Mais avec Python, même les principales caractéristiques linguistiques (les décorateurs viennent à l’esprit) s’ajoutent tout le temps, sans que l’on se sente comme des laids.

Chinmay Kanchi
la source
8
Je suis venu ici pour dire essentiellement ceci. La syntaxe est tellement naturelle que vous écrivez un pseudocode.
James Davies
2
Python est compact: vous pouvez garder tout son ensemble de fonctionnalités (et au moins un index de concepts de ses bibliothèques) dans votre tête.
systempuntoout
2
@ Zoomzoom83 Mes pseudocodes ont des débuts et des fins - ça ne marche pas en python :-(
mbq
1
@mbq Et mes pseudocodes ont des accolades, mais c'est une autre histoire;)
Chris dit Réintégrer Monica
26

J'espère que cela ne semble pas trop cynique, mais IMO Python est si populaire pour les mêmes raisons que Java, C # et Objective-C. Non pas parce que les langues elles-mêmes ont quelque chose de spectaculaire, mais parce qu'elles ont chacune un sponsor magacorporate capable de produire beaucoup de battage publicitaire, de publicités, de bibliothèques et de soutien pour leur langue préférée.

Maçon Wheeler
la source
6
C # est spécial, il a linq
Daniel Little
39
Python a une grande entreprise derrière elle? (vraie question)
Jé Queue le
11
Oui, c'est ce que je voulais dire. Python était beaucoup moins "cool" avant que Google ne commence à s'y intéresser de la sorte.
Mason Wheeler
10
@Mason - mais sûrement, il doit y avoir une raison pour laquelle un grand corp comme Google le rendrait "cool"?
Jas
7
Pourquoi les gens pensent-ils qu'il existe des entreprises sponsors de python? Quelqu'un at-il remarqué la taille de pycon par rapport aux énormes conventions Java / j2ee? Ceci est une histoire de financement d'entreprise de David et Goliath.
rox0r
11

D'après mon expérience, les personnes qui éprouvent une grande joie dans la programmation cherchent souvent une langue qui leur convient mieux que ce qu'elles ont appris à l'école ou à l'université. En gros, cela signifie qu'ils passeront de la version par défaut de PHP / Visual Basic / C ++ / Java / C # à quelque chose de plus exotique (métier / carrière), tel que Python, Ruby, Haskell et même perl (en raison de son énorme valeur de piratage et de son obscurité).

Ne vous méprenez pas, il y a des programmeurs C # / VB.net très expérimentés qui sont très fiers de leur travail et de leur code (les gars de StackOverflow en sont un très bon exemple), mais vous ne devenez pas un programmeur python simplement parce que c'est ce qu'ils vous ont appris à l'école; ce doit être votre propre décision.

Je pense que Jeff Atwoord a publié un article sur ce blog, mais je ne le trouve pas. Si je le trouve, je mettrai à jour ce commentaire.

Ivo van der Wijk
la source
1
Python était la première langue enseignée à mon école depuis 101 ans.
Morgan Herlocker
Presque toutes les langues ont une raison d’exister et sont bonnes au moins pour quelque chose. A mon avis, cela dit simplement "J'aime ça parce que les autres le font".
NtFreX
9

Comparé à Ruby, qui est vraiment cool et produit d’impressionnants Code Golf-offs, Python a cette philosophie fondamentale: "Il devrait y avoir un moyen - et de préférence un seul - moyen évident de faire [les choses]", ce qui signifie la façon idiomatique de Python. J'ai trouvé que c'était un avantage énorme par rapport à Ruby.

Dan Rosenstark
la source
4
..ou comparé à Perl avec un nombre apparemment infini de façons?
Jé Queue
@Xepoch - en fait, il y a très souvent beaucoup moins que l'infini de façons bonnes / correctes de faire les choses en Perl, et la plupart des gens avec un indice pourront facilement vous dire sans trop de désaccord quel top 1 (ou au plus 2) sont. Si vous ne me croyez pas, regardez les questions de Perl sur SO. Oui, certaines questions ont 10 solutions distinctes. Mais la plupart ont clairement convenu de la solution "la plus adaptée aux circonstances".
DVK
@DVK, je sais, mais cela doit être considéré comme un objectif de conception.
Jé Queue
8

J'ai commencé à aimer Python pour la même raison que celle décrite par Eric S. Raymond: l'acte d'écrire des programmes en Python est très similaire conceptuellement à penser à concevoir le code dans ma tête.

Apprendre à être un bon programmeur Python m'a fait un bien programmeur C # mieux. Cela rendait beaucoup plus facile la compréhension de LINQ. Je n'aurais peut-être jamais embrassé un type du genre Dictionary<string, Func<T>>ou yield returnm'étais habitué à l' utiliser si je n'avais pas utilisé les classes et les générateurs en Python. Il est beaucoup plus facile de comprendre AOP maintenant que j'ai utilisé des décorateurs Python. La liste continue.

Robert Rossney
la source
6

Premièrement, les petites bizarreries linguistiques telles que l'indentation forcée en Python importent peu si le langage lui-même est puissamment expressif et utile. Au début, cela m'a également refusé, mais j'ai vite appris à regarder au-delà et maintenant, je ne le ressens même pas comme un obstacle, car la langue est beaucoup plus facile pour moi. C'est comme des symboles à variables dans Perl , c’est une bizarrerie linguistique inoffensive et toute personne à l’aise dans cette langue ne se sent pas gênée par celle-ci.

Pour comprendre les raisons pour lesquelles tant de gens pensent que Python est génial, essayez d’apprendre la langue. Les raisons sont pour la plupart identiques à celles de Perl. J'apprécie la syntaxe en Python (par exemple, la compréhension de liste, la syntaxe de POO, etc.), mais c'est vraiment subjectif et votre opinion peut être différente. Je préfère Python pour les projets plus importants, alors que j'utilise toujours Perl pour les scripts plus petits.

Et c'est la réponse à votre question. Vous comparez Python à Perl, bash et tcl. Le problème, c’est que la comparaison n’est pas juste. Des langages comme bash ont été conçus pour écrire de petits scripts afin d’automatiser les tâches courantes. Certaines personnes pensent également que Perl devient difficile à manier si le code devient suffisamment volumineux (ce n'est pas bien écrit par Perl, mais il est difficile d'obtenir du code bien écrit dans un grand projet). IMHO Python se distingue des autres langages de «script» en ce sens qu'il s'adapte très bien aux grands projets ainsi qu'aux petits scripts uniques. Je pense que Ruby a également cette même qualité.

MAK
la source
6

La philosophie selon laquelle le dictateur bienveillant devrait appliquer son idée de bon style [1], son idée de bonne programmation, son idée de la façon de programmer me frustrent régulièrement. Je ne pense pas comme van Rossum. Cependant, son langage résiste aux tentatives d’exprimer des pensées non-van Rossum. Sa pensée fonctionne vraiment bien pour beaucoup (la plupart?) Des programmeurs. Mais il me semble que je ne rentre pas dans son modèle de programmation.

C'est pourquoi je crois que Perl est une langue supérieure.

[1] Voir son blog sur la suppression reduce.

Paul Nathan
la source
pouvez-vous s'il vous plaît exposer sur votre raisonnement avec le processus de pensée, voudrait entendre plus.
Jé Queue
3
@Xepoch - un langage de programmation sert de moyen d'expression. Les idiomes et les styles de pensée peuvent être exprimés dans un continuum de pensées allant de «crises» à «très difficiles à adapter». Par exemple, je ne pense pas en termes de compréhension de liste. Ils sont étrangers à ma façon de penser aux solutions aux problèmes. Mais la réduction de Common Lisp est quelque chose qui coule sans difficulté majeure de mon esprit. Cependant, van Rossum est évidemment le contraire. Java exige que toutes les choses soient dans des objets. Il devient donc très difficile de créer des solutions non orientées objet en Java. Et ainsi de suite -
Paul Nathan,
5

Je pense que dans une certaine mesure, Python est le seul langage de programmation dont vous aurez jamais besoin, à moins que vous ne souhaitiez écrire un noyau de système d'exploitation. Il convient à l’utilisation interactive, au piratage aléatoire, à l’administration système, aux applications scientifiques, aux outils du système d’exploitation, aux applications Web, aux applications GUI, à l’intégration, etc., etc. Il est portable, gratuit et largement utilisé. Aucun autre langage de programmation ne couvre réellement tous ces domaines dans la pratique. C'est un très bon investissement stratégique pour une personne et une entreprise.

Peter Eisentraut
la source
4
Ne doutez pas de Python ici, mais je pense que Perl correspond assez bien à votre description ci-dessus, sinon mieux.
Jé Queue
Ruby fait très bien à cela aussi.
octobre
1
À partir de 2015, Python est de facto le langage généraliste de l'informatique scientifique. Tout le reste est soit de type bas niveau classique (C, C ++, FORTRAN), concurrentiel dans quelques niches (MATLAB, Mathematica, R, Julia, Lua), utilisé uniquement pour les bibliothèques et l'infrastructure (Java), des outils de script aléatoires (bash , Perl) ou ... eh bien ... rien de tout cela.
Paul
5

Depuis 2004, j'ai utilisé Python pour développer:

  • Interfaces graphiques
  • Scénarisation de scènes de traceur de rayons avec des liaisons Python à C ++
  • Systèmes de construction automatisés multi-plateformes
  • Scripts de test
  • Outils à usage général pour résoudre vos problèmes quotidiens
  • Sites Web et applications Web

En 2004, Python était le langage de choix, car les scripts Python sont portables sous Windows, Linux et Mac avec très peu de modifications.

Thierry Lam
la source
4
Pour citer un commentaire de réponse différente: "Ne doutez pas de Python ici, mais je pense que Perl correspond assez bien à votre description ci-dessus, sinon mieux".
DVK
4

Pour moi, Python a été un cher ami. C'est un langage de script et de prototypage décent. Les éléments clés auxquels je peux penser sont:

  • Syntaxe épurée, très simpliste et facile à comprendre
  • Multi-paradigme, l'utiliser comme langage impératif? Sûr. OOP? Aucun problème. Il a également quelques fonctionnalités de langage fonctionnel léger, par exemple lambda, compréhension de liste, etc.
  • Pour les besoins informatiques de base, il prend en charge de manière native les structures de données essentielles, tableau, tuple, dictionnaire (tableau associatif), ensemble, etc.
  • D'autres fonctionnalités peuvent rendre un programmeur très productif, par exemple la frappe de canard, la réflexion, la méta-programmation, les décorateurs, les générateurs, etc.
  • Prise en charge de la bibliothèque riche
grokus
la source
lambda est cassé en python.
Paul Nathan
@Paul Cela ne ferait pas de mal de donner un lien pour appuyer votre opinion.
Piotr Dobrogost
@Piotr: docs.python.org/reference/expressions.html#lambda Ne peut pas contenir d'instructions. Cela viole l'idée mathématique d'une fonction anonyme.
Paul Nathan
Cela ne signifie-t-il pas que lambda est ininterrompu?
rox0r
4

Il est élégant et très facile à apprendre. Une fois familiarisé avec ses types de base (notamment les listes), votre productivité n’a aucune limite. Il est parfait pour les algorithmes de prototypage ou pour les écrire dans un langage pseudo-code pouvant éventuellement être placé directement sur une machine. C'est également un excellent langage de script pour effectuer des tâches répétitives ou effectuer des opérations fastidieuses sur des fichiers. Je l'utilise comme langage collant pour permettre aux sous-processus de communiquer entre eux: pas aussi puissant que bash pour certaines tâches simples, mais PLUS facile si vous avez besoin de faire plus que simplement une ligne de code.

Et puis cela ne fait pas la distinction entre les fonctions et les sous-programmes, vous voyez ce que je veux dire.

Lorenzo Stella
la source
3

De nombreux amateurs de Python que je vois viennent de passer des environnements C et ont été impressionnés par des choses comme celle "Hello "+ "World"-ci "Hello World". Je dirais donc que c’est le premier langage de script qui ne rassemble pas de balises ésotériques / spécifiques et se répand donc parmi les martyrs comme un feu dans une forêt asséchée. Et la mode ainsi créée vit désormais seule.

mbq
la source
2

Pour revenir à la question maintenant que je suis un peu moins fatigué:

Le langage Python que j’ai trouvé particulièrement adapté aux tâches de programmation scientifique est l’un des endroits où sa popularité croît assez fortement. Quelques raisons pour lesquelles:

  • Un support communautaire assez fort signifie qu'il existe de bonnes bibliothèques en place, et Python remplace avantageusement MATLAB et certains des autres langages populaires dans ce domaine.
  • Il joue bien avec C lorsque vous faites la vitesse de besoin, mais souvent la vitesse n'est pas vraiment nécessaire, si la nature interprété Python est pas si grande d'un accord.
  • J'ai trouvé que c'était un langage assez accessible sans un grand nombre de choses, pour des étrangers, qui ressemblent à des règles de syntaxe étrangement arbitraires. C'est assez rapide de traduire entre pseudo-code et Python.
  • "Prenez-le ou laissez-le OOP". Un grand nombre de projets de programmation scientifique ne bénéficient pas autant de la POO étendue. Certains le font. C'est bien d'avoir une langue qui peut facilement passer de l'un à l'autre.
  • Fort support multi-plateforme. D'autant plus que ce que je travaille implique rarement des interfaces graphiques, je peux à peu près compter sur le fait de pouvoir envoyer un programme Python à quelqu'un d'autre sans me soucier de son système d'exploitation.

Ce n'est pas la fin, tout, la totalité des langages de programmation, mais c'est un décent.

Fomite
la source
Outre tous les autres éléments que vous avez énumérés, je pense que l'un des éléments les plus importants était "Je peux vraiment compter sur le fait de pouvoir envoyer un programme Python à quelqu'un d'autre sans me soucier de son système d'exploitation". Ceci est également très avantageux lorsque vous ne voulez pas vous retrouver avec un type de système d'exploitation.
Tarik
1

Python est un langage très «webby» à la fois dans les frameworks disponibles (Django, Zope, etc.) et dans les bibliothèques facilement importables, qui couvrent encore de nombreuses fonctions web.

Pour les développeurs Web passant d'une simple compétence HTML, CSS + JS (anecdote à une source importante de nouveaux programmeurs ces dernières années), je pense que cela en fait une proposition très attrayante (idem Ruby).

En outre, Google n'est pas Microsoft ....

Jon Hadley
la source
Java n'est pas MS, donc si votre raisonnement est correct, ils passeraient à Java et non à python. Il doit y avoir une raison différente.
rox0r
0

Je pense que l'une des principales raisons est que 90% de Google est fabriqué à partir de Python.

Cependant, Python est également un langage de programmation puissant et facile à apprendre. Il possède des structures de données de haut niveau efficaces et une approche simple mais efficace de la programmation orientée objet. La syntaxe élégante et le typage dynamique de Python, ainsi que sa nature interprétée, en font un langage idéal pour les scripts et le développement rapide d'applications dans de nombreux domaines sur la plupart des plateformes.

L'interpréteur Python et la vaste bibliothèque standard sont disponibles gratuitement sur le site Web de Python, à l' adresse http://www.python.org/ , sous forme de source ou de fichier binaire , et peuvent être librement distribués. Le même site contient également des distributions et des pointeurs vers de nombreux modules, programmes et outils Python tiers gratuits, ainsi que de la documentation supplémentaire.

L'interpréteur Python est facilement étendu avec de nouvelles fonctions et types de données implémentés en C ou C ++ (ou d'autres langages appelables à partir de C). Python convient également comme langage d'extension pour des applications personnalisables.

blackhat
la source