En plus d'être ennuyé par les espaces blancs comme syntaxe, je ne suis pas un haineux, je n'ai tout simplement pas la fascination pour 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 dans troff
et cela ne me dérange pas REXX. Je n'ai pas trouvé tcl plus utile il y a des années, mais quel est le gros problème de Python? Je vois des listes d'emplois et de nombreux candidats avec cela comme un prix et un trophée sur leur curriculum vitae.
Je suppose qu'en réalité, j'essaie de me vendre personnellement à ce sujet, je ne trouve tout simplement pas de raison.
Python est un langage bien conçu avec une syntaxe raisonnablement propre, une bibliothèque standard complète, une excellente documentation incluse et tierce, un déploiement étendu et l'immédiateté d'un langage de style "scripting" (c'est-à-dire aucune étape de compilation explicite).
J'ai trouvé Python pour être le langage de programmation le plus naturel dans lequel j'ai jamais écrit du code. J'ai codé dans de nombreux langages avant et après Python, et dans une plus ou moins grande mesure mesure, vous devez combattre le langage pour qu'il fasse ce que vous voulez. Python réduit massivement cette lutte. Eric S Raymond l'a dit beaucoup mieux que je ne peux en Pourquoi Python?
Comme point connexe, Python maintient sa propreté même en évoluant rapidement. Dans la plupart des langues avec lesquelles j'ai travaillé, l'introduction de nouvelles fonctionnalités de langage introduit beaucoup de rides. Mais avec Python, même la langue principale des fonctionnalités (les décorateurs viennent à l'esprit) sont ajoutées tout le temps, sans se sentir comme des hacks laids.
J'espère que cela ne semble pas trop cynique, mais IMO Python est si populaire pour la même raison que Java, C # et Objective-C. Pas parce qu'il y a quelque chose de spectaculaire dans les langages eux-mêmes, mais car ils ont chacun un sponsor magacorporate capable de produire beaucoup de battage médiatique, beaucoup de publicité, et beaucoup de bibliothèques et de support pour leur langue préférée.
D'après mon expérience, les gens qui trouvent une vraie joie dans la programmation recherchent souvent une langue qui leur convient mieux que ce qu'ils ont appris à l'école ou à l'université. Fondamentalement, cela signifie qu'ils passeront de la valeur par défaut PHP/Visual Basic/C++/Java/C # à quelque chose de plus exotique (métier/carrière) comme 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 très des programmeurs C #/VB.net expérimentés qui sont très fiers et joyeux de leur travail et de leur code (les gars de StackOverflow en sont un très bon exemple), mais vous ne ' t devenir un python programmeur juste parce que c'est ce qu'ils vous ont enseigné à l'école; ce doit être votre propre décision.
Je pense que Jeff Atwoord avait un article de blog à ce sujet, mais je ne le trouve pas. Si je le trouve, je mettrai à jour ce commentaire.
Comparé à Ruby, qui est vraiment cool et produit des codes de golf incroyables, Python a cette philosophie de base: "Il devrait y avoir une - et de préférence une seule - façon évidente de faire [les choses], "signifiant l'idiomatique Python. J'ai trouvé que c'était un énorme avantage par rapport à Ruby.
J'ai commencé à aimer Python pour la même raison que Eric S. Raymond décrit: l'acte d'écrire des programmes en Python est conceptuellement très similaire à penser l'acte de la conception de code dans ma tête.
Apprendre à être un bon Python programmeur m'a fait un beaucoup meilleur programmeur C #. Cela a rendu la compréhension de LINQ beaucoup plus facile, pour commencer. Je n'aurais peut-être jamais embrassé un type comme Dictionary<string, Func<T>>
, ou s'est familiarisé avec yield return
, si je n'avais pas utilisé de classes et de générateurs en Python. AOP est beaucoup plus facile à comprendre maintenant que j'ai utilisé Python décorateurs. La liste continue.
Tout d'abord, des bizarreries de langage insignifiantes comme l'indentation forcée dans Python importe peu si le langage lui-même est puissamment expressif et utile. J'ai également été repoussé au début à cause de cela, mais j'ai vite appris à regarder au-delà et maintenant, je ne le ressens même pas comme un obstacle, parce que le langage est tellement plus facile pour moi de travailler. C'est comme des cachets de variables en Perl, c'est une bizarrerie de langage inoffensif et toute personne à l'aise dans la langue ne se sent pas gênée par cela .
Pour comprendre les raisons pour lesquelles tant de gens pensent Python est génial, essayez simplement d'apprendre le langage. Les raisons sont principalement les mêmes que Perl. Je trouve que j'aime la syntaxe de Python (par exemple, listes de compréhension, OOP, etc.), mais c'est vraiment subjectif et votre opinion peut différer. Je préfère Python pour des projets plus grands, alors que j'utilise toujours Perl pour des scripts plus petits.
Et que est la réponse à votre question. Vous comparez Python à Perl, bash et tcl. Le fait est que ce n'est pas une comparaison équitable. Des langages comme bash ont été conçus pour écrire de petits scripts pour automatiser des tâches courantes. Certaines personnes pensent que Perl aussi devient difficile à manier si le code est suffisamment volumineux (Perl bien écrit ne le fait pas, mais il est difficile de trouver du code bien écrit dans un grand projet). IMHO Python diffère des autres langages de "scripting" en ce sens il s'adapte très bien aux grands projets ainsi qu'aux petits scripts uniques. Je pense que Ruby a également la même qualité.
La philosophie selon laquelle le dictateur bienveillant devrait faire respecter son idée de bon style [1], son idée de bonne programmation, son idée de programmation 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 de nombreux (la plupart?) Programmeurs. Mais il me semble que je ne rentre pas dans son modèle de programmation.
C'est pourquoi je crois que Perl est un langage supérieur.
[1] Voir son blog sur la suppression de reduce
.
Depuis 2004, j'ai utilisé Python pour développer:
En 2004, Python était la langue de choix car Python sont portables sur Windows, Linux et Mac avec très peu de modifications).
Je pense que dans une certaine mesure Python est le seul langage de programmation dont vous aurez besoin, sauf si vous voulez écrire un noyau de système d'exploitation. Il convient à l'utilisation interactive, aux hacks aléatoires, à l'administration système, à la science applications, outils de système d'exploitation, applications Web, applications GUI, intégration, etc. etc., il est portable, gratuit et largement utilisé. Aucun autre langage de programmation ne couvre vraiment tous ces domaines dans la pratique. C'est un très bon investissement stratégique pour une personne et une entreprise.
Il est élégant et vraiment facile à apprendre, et une fois que vous êtes familiarisé avec ses types de base (en particulier les listes), votre productivité n'a pas de limite. Il est parfait pour les algorithmes de prototypage, ou pour les écrire dans un langage pseudo-code qui peut éventuellement être placé directement sur une machine, et c'est vraiment un bon langage de script pour effectuer des travaux répétitifs ou effectuer des opérations ennuyeuses sur des fichiers. Je l'utilise comme un langage de collage pour faire communiquer les sous-processus entre eux: pas aussi puissant que bash pour certaines tâches faciles, mais bien plus facile si vous avez besoin de faire plus qu'une simple ligne de code.
Et puis cela ne fait pas de distinction entre les fonctions et les sous-programmes, vous voyez ce que je veux dire.
Pour moi Python a été un ami très cher. C'est un langage de script et de prototypage décent. Les éléments clés auxquels je peux penser sont:
De nombreux Python amoureux que je vois viennent de quitter l'environnement C et ont été impressionnés par des choses comme "Hello "+ "World"
est "Hello World"
. Je dirais donc que c'est le premier langage de script qui ne recueille pas d'étiquette ésotérique/spécifique et se propage donc parmi les martyrs comme le feu dans une forêt sèche. Et la mode ainsi créée vit désormais seule.
Reprenant la question maintenant que je suis un peu moins fatigué:
Python est un langage que j'ai trouvé particulièrement bien adapté aux tâches de programmation scientifique, qui est l'un des endroits où sa popularité augmente assez fortement. Quelques raisons pour lesquelles:
Ce n'est pas le langage universel, mais c'est un langage décent "Ouais, j'ai probablement un outil pour résoudre tout problème qui se pose", c'est probablement pourquoi il jouit de la popularité en ce moment.
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 à nouveau de nombreuses fonctions web.
Pour les développeurs Web qui passent d'un simple ensemble de compétences HTML, CSS + JS (anecdotiquement une grande source de nouveaux programmeurs au cours des dernières années), je pense que cela en fait une proposition très attrayante (idem Ruby).
De plus, Google n'est pas Microsoft ....
Je pense que l'une des principales raisons est que Google est composé à 90% 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. Syntaxe élégante et typage dynamique de Python, avec sa nature interprétée, en font un langage idéal pour l'écriture de scripts et le développement rapide d'applications dans de nombreux domaines sur la plupart des plates-formes.
L'interpréteur Python et la bibliothèque standard étendue sont disponibles gratuitement sous forme source ou binaire pour toutes les principales plates-formes à partir du site Web Python, http: //www.python.org/ , et peut être distribué librement. Le même site contient également des distributions et des pointeurs vers de nombreux tiers gratuits Python modules, programmes et outils, et autres Documentation.
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 depuis C). Python convient également comme langage d'extension pour les applications personnalisables.