Warum so beliebt bei Python? [geschlossen]

54

Abgesehen davon, dass ich mich über Whitespace als Syntax ärgere, bin ich kein Hasser. Ich verstehe die Faszination von Python einfach nicht.

Ich schätze die Poesie von Perl und habe wunderschöne Webservices in Bash & Korn und Shebang programmiert gnuplot. Ich schreibe Dokumente ein troffund kümmere mich nicht um REXX. Ich fand tcl vor Jahren nicht nützlicher, aber was ist der große Gestank an Python ? Ich sehe Stellenanzeigen und viele Kandidaten mit dieser als Preis & Trophäe in ihren Lebensläufen.


Ich denke, in Wirklichkeit versuche ich, persönlich davon überzeugt zu werden. Ich kann einfach keinen Grund finden.

Xepoch
quelle
81
Ich verstehe nie, warum sich die Leute über Pythons erforderlichen Einzug ärgern. Ich hoffe, Sie haben Ihren Code trotzdem eingerückt, oder?
Greg Hewgill
10
@GregH natürlich, aber soll meine Syntax dadurch vorgegeben werden? Ein bisschen wie Makefiles?
Jé Queue
5
@Xepoch: Makefiles erfordern jedoch nicht nur Einrückungen, sondern eine bestimmte Art von Einrückungen, die normalerweise nicht von der anderen Art zu unterscheiden sind. Wenn Makefiles einen Whitespace-Einzug anstelle eines bestimmten benötigt 0x09, würden Sie wahrscheinlich keine Einwände erheben und wahrscheinlich einen konsistenten Einzug in Ihrer bevorzugten Einzugsbreite verwenden. Dies ist das gleiche, was Python erlaubt.
Greg Hewgill
31
Poesie von Perl? Ernsthaft? Wenn Sie die Ehre hatten, den Perl-Code anderer Leute beizubehalten, werden Sie verstehen, warum Perl an Popularität eingebüßt hat.
Grokus
6
@ Greg, ich stimme dir zu. Ich habe das schon einmal gesagt, und ich werde es noch einmal sagen. Wer sich über Pythons Einrückungsregel beschwert, sollte aufgefordert werden, schlecht eingerückten Code beizubehalten. Sagen Sie einfach ...
Grokus

Antworten:

61

Python ist eine gut gestaltete Sprache mit einer einigermaßen übersichtlichen Syntax, einer umfassenden Standardbibliothek, einer hervorragenden Dokumentation und Dokumentation von Drittanbietern, einer weit verbreiteten Bereitstellung und der Unmittelbarkeit einer Sprache im "Skript" -Stil (dh ohne expliziten Kompilierungsschritt).

Greg Hewgill
quelle
36
Gut designed? Haben Sie jemals bemerkt, dass Sie eine globale Funktion namens haben len?
Alternative
65
Was ist los mit len? Ich habe den Eindruck, dass Sie nur 5 Minuten über Python gelesen haben
Kugel
5
Persönlich war die Sprachstruktur so einfach zu verstehen, dass ich besser verstehen konnte, wie Sprachen im Allgemeinen intern funktionieren. Es sind die kleinen Dinge. Erstklassige Funktionen, die Fähigkeit, nur die relevanten Teile eines externen Moduls in den aktuellen zu importieren, Listenverständnisse, Tupel, die Einbeziehung von self als Methodenparameter haben mir geholfen, den Unterschied zwischen Funktionen und Methoden zu verstehen (andere Sprachen verstecken sich nur hinter Zucker). Es schmerzt mich, jetzt Sprachen wie C # zu verwenden, weil ich intuitiv weiß, dass der Code mir nichts darüber beibringt, wie es intern funktioniert.
Evan Plaice
1
Wie kann Python eine gut gestaltete Sprache sein? Es verwendet seltsame __double_underscore_names__, es mischt sich alllowercasefunctionamesmit mixed_underscoreund mixedCamelCaseNamen. Es erfordert eine :am Ende defoder Schleifen. Es verwendet eine Menge seltsame Abkürzung str, dict, islice. Es sieht so aus, als gäbe es überhaupt keine Konvention. Es ist ein reines Chaos. Peps, Pips, Zen ... es ist eher eine Python-Religion als eine Sprache. Es mag ein paar nette Features haben, aber es erklärt nicht, warum so viele Leute darüber so begeistert sind. An Pyhon ist nichts Besonderes. Nur ein weiteres schlecht gestaltetes Produkt.
t3chb0t
1
Und was ist der Hack def? Warum definiere ich eine Funktion mit defund nicht mit func? Es gibt keine andere Sprache, die so uninteressant ist wie Python.
t3chb0t
76

Ich habe festgestellt, dass Python die natürlichste Programmiersprache ist, in der ich jemals Code geschrieben habe. Ich habe vor und nach Python in vielen Sprachen codiert, und in mehr oder weniger großem Umfang muss man sich mit der Sprache herumschlagen Lass es tun, was du willst. Python reduziert diesen Kampf massiv. Eric S. Raymond sagte , es viel besser als ich es kann in Warum Python?

Als ein verwandter Punkt behält Python seine Sauberkeit bei, auch wenn es sich schnell entwickelt. In den meisten Sprachen, mit denen ich gearbeitet habe, führt die Einführung neuer Sprachfunktionen zu vielen Falten. Aber mit Python kommen immer wieder wichtige Sprachfunktionen (die den Dekorateuren in den Sinn kommen) hinzu, ohne dass sie sich wie hässliche Hacks anfühlen.

Chinmay Kanchi
quelle
8
Kam hierher, um im Grunde das zu sagen. Die Syntax fühlt sich einfach so natürlich an, als würden Sie Pseudocode schreiben.
James Davies
2
Python ist kompakt: Sie können den gesamten Funktionsumfang (und zumindest einen Konzeptindex seiner Bibliotheken) in Ihrem Kopf haben.
Systempuntoout
2
@ Zoomzoom83 Meine Pseudocodes haben begonnen und geendet
mbq
1
@mbq Und meine Pseudocodes haben geschweifte Klammern, aber das ist eine andere Geschichte;)
Chris sagt Reinstate Monica
26

Ich hoffe, das klingt nicht zu zynisch, aber IMO Python ist genau aus dem gleichen Grund wie Java, C # und Objective-C so beliebt. Nicht, weil die Sprachen selbst etwas Spektakuläres haben, sondern weil sie jeweils einen Firmensponsor haben, der viel Hype, viel Werbung und viele Bibliotheken und Unterstützung für ihre bevorzugte Sprache produzieren kann.

Mason Wheeler
quelle
6
C # ist etwas Besonderes, es hat linq
Daniel Little
39
Python hat ein großes Unternehmen dahinter? (echte Frage)
Jé Queue
11
Ja, das habe ich gemeint. Python war viel weniger "cool", bevor sich Google dafür interessierte.
Mason Wheeler
10
@Mason - aber es muss doch einen Grund geben, warum ein großes Unternehmen wie Google es "cool" machen würde?
Jas
7
Warum glauben die Leute, dass es Firmensponsoren für Python gibt? Hat jemand die Größe von Pycon im Vergleich zu den riesigen Java / j2ee-Konventionen bemerkt? Dies ist eine Geschichte von David und Goliath über Unternehmensfinanzierung.
rox0r
11

Ich habe die Erfahrung gemacht, dass die Leute, die wahre Freude am Programmieren haben, oft eine Sprache suchen, die besser zu ihnen passt als das, was sie in der Schule oder an der Universität gelernt haben. Grundsätzlich bedeutet dies, dass sie von PHP / Visual Basic / C ++ / Java / C # auf etwas Exotischeres (geschäftlich / beruflich) wie Python, Ruby, Haskell und sogar Perl umsteigen (wegen des enormen Hack-Werts und der Unbekanntheit).

Verstehen Sie mich nicht falsch, es gibt sehr erfahrene C # / VB.net-Programmierer, die sehr stolz auf ihre Arbeit und ihren Code sind Das haben sie dir in der Schule beigebracht. es muss deine eigene Entscheidung sein.

Ich glaube, Jeff Atwoord hatte einen Blog-Beitrag dazu, aber ich kann ihn nicht finden. Wenn ich es finde, aktualisiere ich diesen Kommentar.

Ivo van der Wijk
quelle
1
Python war die erste Sprache, die an meiner Schule für 101 unterrichtet wurde.
Morgan Herlocker
Fast jede Sprache hat einen Grund zu existieren und ist zumindest in etwas gut. Meiner Meinung nach heißt das nur "Ich mag es, weil andere es tun".
NtFreX
9

Im Vergleich zu Ruby, das wirklich cool ist und erstaunliche Code Golf-Offs produziert, hat Python die Kernphilosophie "Es sollte einen - und am besten nur einen - offensichtlichen Weg geben, [Dinge] zu tun", was den idiomatischen Python-Weg bedeutet. Ich habe festgestellt, dass dies ein großer Vorteil gegenüber Ruby ist.

Dan Rosenstark
quelle
4
..oder verglichen mit Perl mit einer scheinbar unendlichen Anzahl von Möglichkeiten?
Jé Queue
@Xepoch - Tatsächlich gibt es in Perl sehr oft weniger als unendlich gute / korrekte Methoden, und die meisten Leute mit einer Ahnung können Ihnen leicht sagen, welche Top-1-Liste (oder höchstens 2-Liste) zu unterschiedlich ist. sind. Wenn Sie mir nicht glauben, schauen Sie sich die Perl-Fragen zu SO an. Ja, einige Fragen haben 10 verschiedene Lösungen. Aber die meisten haben eine klar vereinbarte Lösung, die den Umständen am besten entspricht.
DVK
@ DVK, ich weiß, aber ich betrachte es von einem Design-Ziel.
Jé Queue 13.01.11
8

Ich habe Python aus dem gleichen Grund geliebt, den Eric S. Raymond beschreibt: Das Schreiben von Programmen in Python ist konzeptionell sehr ähnlich wie das Entwerfen von Code in meinem Kopf.

Das Lernen, ein guter Python-Programmierer zu sein, machte mich zu einem viel besseren C # -Programmierer. Zum einen hat es das Verständnis von LINQ erheblich erleichtert. Wäre ich nicht mit Klassen und Generatoren in Python Dictionary<string, Func<T>>umgegangen yield return, hätte ich mich vielleicht nie an einen Typ gewöhnt. AOP ist jetzt viel einfacher zu verstehen, da ich Python-Dekoratoren verwendet habe. Die Liste geht weiter.

Robert Rossney
quelle
6

Erstens sind kleine Sprachprobleme wie erzwungene Einrückungen in Python von geringer Bedeutung, wenn die Sprache selbst ausdrucksstark und nützlich ist. Anfangs wurde ich auch deswegen abgewiesen, lernte aber bald, daran vorbeizuschauen und empfinde es jetzt nicht einmal als Hindernis, weil die Sprache für mich so viel einfacher zu bearbeiten ist. Es ist wie Sigillen in Variablen in Perl Es ist eine harmlose Sprache, und jeder, der sich in der Sprache wohlfühlt, fühlt sich nicht gestört.

Um die Gründe zu verstehen, warum so viele Leute Python für großartig halten, versuchen Sie einfach, die Sprache zu lernen. Die Gründe sind größtenteils die gleichen wie in Perl. Ich finde, dass mir die Syntax in Python gefällt (z. B. Listenverständnis, OOP-Syntax usw.), aber das ist wirklich subjektiv und Ihre Meinung könnte abweichen. Ich bevorzuge Python für größere Projekte, während ich Perl für kleinere Skripte verwende.

Und das ist die Antwort auf Ihre Frage. Sie vergleichen Python mit Perl, bash und tcl. Die Sache ist, dass dies kein fairer Vergleich ist. Sprachen wie bash wurden zum Schreiben kleiner Skripte entwickelt, um allgemeine Aufgaben zu automatisieren. Einige Leute denken, dass Perl auch unhandlich wird, wenn der Code groß genug ist (gut geschriebenes Perl nicht, aber gut geschriebener Code ist in einem großen Projekt schwer zu bekommen). IMHO Python unterscheidet sich von anderen Skriptsprachen dadurch, dass es sowohl für große Projekte als auch für kleine einmalige Skripts sehr gut skalierbar ist. Ich denke, Ruby hat auch die gleiche Qualität.

MAK
quelle
6

Die Philosophie, dass der barmherzige Diktator seine Vorstellung von gutem Stil [1] durchsetzen sollte, seine Vorstellung von guter Programmierung, seine Vorstellung davon, wie man programmiert, frustriert mich regelmäßig. Ich denke nicht wie van Rossum. Seine Sprache widersetzt sich jedoch Versuchen, Nicht-Van-Rossum-Gedanken auszudrücken. Sein Denken funktioniert wirklich gut für viele ( die meisten?) Programmierer. Aber ich scheine nicht in sein Programmiermodell zu passen.

Deshalb glaube ich, dass Perl eine überlegene Sprache ist.

[1] Siehe seinen Blog über das Entfernen reduce.

Paul Nathan
quelle
Kannst du bitte deine Überlegungen zum Denkprozess erläutern, möchtest mehr hören.
Jé Queue 23.10.10
3
@Xepoch - eine Programmiersprache dient als Ausdrucksmittel. Redewendungen und Denkstile können in einem Kontinuum von Gedanken ausgedrückt werden, das von „passt“ bis „sehr schwer zu passen“ reicht. Zum Beispiel denke ich nicht in Listenverständnissen. Sie sind mir fremd, wie ich über Problemlösungen denke. Aber das Reduzieren von Common Lisp ist etwas, das mir ohne nennenswerte Schwierigkeiten in den Sinn kommt. Van Rossum ist jedoch offensichtlich das Gegenteil. Java erfordert, dass sich alle Dinge in Objekten befinden. Daher wird es sehr schwierig, in Java nicht objektorientierte Lösungen zu erstellen. Und so weiter -
Paul Nathan
5

Ich denke, bis zu einem gewissen Grad ist Python die einzige Programmiersprache, die Sie jemals brauchen werden, es sei denn, Sie möchten einen OS-Kernel schreiben. Es eignet sich für die interaktive Verwendung, zufällige Hacks, Systemadministration, wissenschaftliche Anwendungen, Betriebssystemtools, Webanwendungen, GUI-Anwendungen, Einbettung usw. usw. Es ist portabel, kostenlos und weit verbreitet. Keine andere Programmiersprache deckt wirklich all diese Bereiche in der Praxis ab. Es ist eine wirklich gute strategische Investition für eine Person und ein Unternehmen.

Peter Eisentraut
quelle
4
Zweifelt hier nicht an Python, aber ich denke, Perl passt ganz gut zu Ihrer obigen Beschreibung, wenn nicht sogar besser.
Warteschlange
Ruby kann das auch sehr gut.
ocodo
1
Ab 2015 ist Python die de facto Allzwecksprache des wissenschaftlichen Rechnens. Alles andere ist entweder das klassische Low-Level-Zeug (C, C ++, FORTRAN), das in einigen wenigen Nischen wettbewerbsfähig ist (MATLAB, Mathematica, R, Julia, Lua), das nur für Bibliotheken und Infrastrukturen verwendet wird (Java), zufällige Skriptwerkzeuge (Bash) , Perl) oder ... nun ... keines der oben genannten.
Paul
5

Seit 2004 habe ich mit Python Folgendes entwickelt:

  • GUIs
  • Erstellen von Skripten für Ray Tracer-Szenen mit Python zu C ++ - Bindungen
  • Plattformübergreifende automatisierte Build-Systeme
  • Testskripte
  • Allzweckwerkzeuge zur Lösung alltäglicher Probleme
  • Websites und Webanwendungen

Bereits im Jahr 2004 war Python die Sprache der Wahl, da Python-Skripte mit nur geringen Änderungen auf Windows, Linux und Mac portierbar sind.

Thierry Lam
quelle
4
Um einen Kommentar aus einer anderen Antwort zu zitieren: "Ich bezweifle nicht, dass Python hier ist, aber ich denke, Perl passt zu Ihrer obigen Beschreibung ziemlich gut, wenn nicht besser."
DVK
4

Für mich war Python ein lieber Freund. Es ist eine anständige Scripting- und Prototyping-Sprache. Die wichtigsten Dinge, an die ich denken kann, sind:

  • Saubere Syntax, sehr einfach und leicht zu verstehen
  • Multiparadigma, als Imperativsprache verwenden? Sicher. OOP? Kein Problem. Es hat auch einige leichte funktionale Sprachfunktionen, z. B. Lambda, Listenverständnisse usw.
  • Für grundlegende Computeranforderungen bietet es native Unterstützung für die wesentlichen Datenstrukturen, Arrays, Tupel, Wörterbücher (assoziative Arrays), Mengen usw.
  • Andere Funktionen können einen Programmierer sehr produktiv machen, z. B. Duck-Typing, Reflection, Meta-Programming, Decorators, Generators usw.
  • Umfangreiche Bibliotheksunterstützung
grokus
quelle
Lambda ist in Python gebrochen.
Paul Nathan
@Paul Es würde nicht schaden, einen Link zu setzen, der Ihre Meinung stützt.
Piotr Dobrogost
@Piotr: docs.python.org/reference/expressions.html#lambda Kann keine Anweisungen enthalten. Das verstößt gegen die mathematische Vorstellung einer anonymen Funktion.
Paul Nathan
Heißt das nicht, Lambda ist ungebrochen?
rox0r
4

Es ist elegant und sehr einfach zu erlernen, und sobald Sie mit den Grundtypen (insbesondere Listen) vertraut sind, sind Ihrer Produktivität keine Grenzen gesetzt. Es ist perfekt für Prototyping-Algorithmen oder zum Schreiben in einer Pseudocode-ähnlichen Sprache, die sich schließlich direkt auf eine Maschine übertragen lässt, und es eignet sich hervorragend als Skriptsprache für sich wiederholende Jobs oder lästige Vorgänge mit Dateien. Ich verwende es als Klebesprache, um Teilprozesse miteinander kommunizieren zu lassen: Nicht so mächtig wie Bash für einige einfache Aufgaben, aber um einiges einfacher, wenn Sie mehr als nur eine einzige Codezeile tun müssen.

Und dann unterscheidet es nicht zwischen Funktionen und Unterprogrammen, Sie wissen, was ich meine.

Lorenzo Stella
quelle
3

Viele Python - Liebhaber Ich sehe gerade eingeschaltet aus C Umgebung und waren mit Sachen beeindruckt wie "Hello "+ "World"ist "Hello World". Ich würde also sagen, dass dies die erste Skriptsprache ist, die keine esoterischen / spezifischen Tags sammelt und sich so unter Märtyrern verbreitet wie Feuer in einem trockenen Wald. Und so entstandene Mode lebt nun für sich.

mbq
quelle
2

Jetzt, wo ich ein bisschen weniger müde bin, die Frage neu angehen:

Python ist eine Sprache, die ich als besonders geeignet für wissenschaftliche Programmieraufgaben empfunden habe. Dies ist einer der Orte, an denen ihre Popularität ziemlich stark zunimmt. Ein paar Gründe warum:

  • Ziemlich starke Community-Unterstützung bedeutet, dass es einige starke Bibliotheken gibt, und Python ist ein guter Ersatz für MATLAB und einige der anderen populären Sprachen in diesem Bereich.
  • Es spielt gut mit C , wenn Sie tun Geschwindigkeit benötigen, aber oft Geschwindigkeit ist nicht wirklich notwendig, so Python interpretiert die Natur ist nicht so große Sache.
  • Ich habe festgestellt, dass es eine ziemlich ansprechbare Sprache ist, ohne eine große Anzahl von Regeln, die für Außenstehende seltsam willkürlich sind. Es ist ziemlich schnell, zwischen Pseudo-Code und Python zu übersetzen.
  • "Nimm es oder lass es OOP". Viele wissenschaftliche Programmierprojekte profitieren nicht so stark von umfangreichen OOP. Einige tun. Es ist schön, eine Sprache zu haben, die leicht zwischen den beiden hüpfen kann.
  • Starke plattformübergreifende Unterstützung. Vor allem, weil ich selten mit GUIs arbeite, kann ich mich darauf verlassen, dass ich ein Python-Programm an andere senden kann, ohne mir Gedanken darüber zu machen, welches Betriebssystem sie ausführen.

Es ist nicht das A und O aller Programmiersprachen, aber es ist eine anständige "Ja, ich habe wahrscheinlich ein Werkzeug, um jedes Problem zu lösen" -Sprache, weshalb sie sich im Moment wahrscheinlich großer Beliebtheit erfreut.

Fomite
quelle
Neben allen anderen von Ihnen aufgelisteten Elementen war eines der wichtigsten: "Ich kann mich ziemlich darauf verlassen, dass ich ein Python-Programm an jemand anderen senden kann, ohne mir Gedanken darüber zu machen, welches Betriebssystem sie ausführen." Dies ist auch sehr günstig, wenn Sie sich nicht mit einem Betriebssystem auseinandersetzen möchten.
Tarik
1

Python ist sowohl in den verfügbaren Frameworks (Django, Zope usw.) als auch in den leicht importierbaren Bibliotheken, die wiederum viele Webfunktionen abdecken, eine sehr 'webby'-Sprache.

Für Webentwickler, die sich nur von einem HTML-, CSS + JS-Skillset (das in den letzten Jahren mitunter eine große Anzahl neuer Programmierer war) verabschiedet haben, ist dies meiner Meinung nach ein sehr attraktives Angebot (dito Ruby).

Auch Google ist nicht Microsoft ....

Jon Hadley
quelle
Java ist nicht MS. Wenn Ihre Überlegungen also richtig sind, werden sie auf Java und nicht auf Python umgestellt. Es muss einen anderen Grund geben.
rox0r
0

Ich denke, einer der Hauptgründe ist, dass Google zu 90% aus Python besteht.

Python ist jedoch auch eine einfach zu erlernende, leistungsstarke Programmiersprache. Es verfügt über effiziente Datenstrukturen auf hoher Ebene und einen einfachen, aber effektiven Ansatz für die objektorientierte Programmierung. Die elegante Syntax und die dynamische Typisierung von Python machen Python zusammen mit seiner interpretierten Natur zu einer idealen Sprache für die Skripterstellung und die schnelle Anwendungsentwicklung in vielen Bereichen auf den meisten Plattformen.

Der Python-Interpreter und die umfangreiche Standardbibliothek sind in Quell- oder Binärform für alle wichtigen Plattformen auf der Python-Website http://www.python.org/ frei verfügbar und können frei verteilt werden. Die gleiche Site enthält auch Distributionen von und Verweise auf viele kostenlose Python-Module, -Programme und -Tools von Drittanbietern sowie zusätzliche Dokumentation.

Der Python-Interpreter kann problemlos mit neuen Funktionen und Datentypen erweitert werden, die in C oder C ++ (oder anderen von C aus aufrufbaren Sprachen) implementiert sind. Python eignet sich auch als Erweiterungssprache für anpassbare Anwendungen.

blackhat
quelle