Vorteile von Python

blanc

Lt. Junior Grade
Registriert
Jan. 2018
Beiträge
351
Hi,

ich frage mich, welche besonderen Vorteile Python bringt gegen andere Programmiersprachen wie C (C++) oder Java. Wieso ist Python heutzutage so beliebt?
 
Python schreibt sich viel schneller als gleiche Funktionalität in C/C++. Es steht eher in Konkurrenz zu Java.

C und C++ wird dann vermehrt für hardwarenahe Dinge eingesetzt bzw. wo die volle Kontrolle notwendig ist. Python für die oberen Schichten mit vielen Daten, Manipulationen etc. und darunter C++ wird auch eingesetzt.
 
Auf der einen Seite bringt Python schon viel mit, was man bei anderen Sprachen erst über weitere Libraries einbinden müsste, zum anderen gibt es eben auch viele Projekte, gerade wenn es um mathematische Formeln geht (Stichwort Machine Learning). Hat auch noch weitere Vorteile (Geschwindigkeit, Verbreitung, etc.)

Ist definitiv nicht verkehrt sich damit zu beschäftigen aber grundsätzlich hängt es vom Projekt und dem Erfahrungsgrad der Entwickler, ab, welche Sprache du einsetzt.
 
  • Gefällt mir
Reaktionen: Skysnake, M4ttX und Herrenlos
Zwei wesentliche Unterschiede zu C/C++
  • Garbage Collector: Du musst dich nicht darum kümmern, allokierter Speicher auch wieder ordnungsgemäß freizugeben
  • Python wird nur interpretiert und nicht compiliert. Damit ist es einfacher, das Programm auf unterschiedlichen Systemen/Architekturen auszuführen. Allerdings sind Fehler/Warnungen eines Compilers auch Gold wert. Bei Python tauchen die meisten Probleme dann erst zur Laufzeit auf
 
  • Gefällt mir
Reaktionen: Skysnake, nioyot und R O G E R
Python lebt vor allem von dem relativ einfachen Zugang zur Sprache und dem Vorhandensein unzähliger Bibliotheken für alle möglichen Anwendungsbereiche.
Damit erschöpfen sich aber auch schon die Vorteile. Denn als Sprache ist es eigentlich nicht so der Bringer. Für viele Sachen muss es das aber auch nicht, weils einfach gut genug ist.

Revan1710 schrieb:
Python wird nur interpretiert und nicht compiliert.
Das ist aber kein Gesetz. Es spricht nix dagegen Python in Maschinencode zu kompilieren.

Revan1710 schrieb:
Damit ist es einfacher, das Programm auf unterschiedlichen Systemen/Architekturen auszuführen.
Nicht unbedingt zwangsläufig einfacher als andere Sprachen. Zumindest Quellcode-kompatibel zu unterschiedlichen Plattformen zu sein bieten heute viele Sprachen.
 
andy_m4 schrieb:
Denn als Sprache ist es eigentlich nicht so der Bringer.
Oh? Z.B. List Comprehensions sind in Python mit am elegantesten gelöst (Vergleich siehe https://en.m.wikipedia.org/wiki/Comparison_of_programming_languages_(list_comprehension) ), und C/C++ hat sowas gleich gar nicht.
andy_m4 schrieb:
Es spricht nix dagegen Python in Maschinencode zu kompilieren.
In der Praxis scheitert das meist (bei nicht-trivialen Projekten) daran, dass sich die benutzten Bibliotheken nicht kompilieren lassen.
M4ttX schrieb:
Es steht eher in Konkurrenz zu Java.
Python ist viel leichtgewichtiger, und das ganze Ökosystem um Python ist von der Community und vom Stil her wesentlich weniger von Corporate Bullshit befallen als das Java-Umfeld.

"Leichtgewichtiger" heißt aber nicht unbedingt "schneller". Reiner Java-Code ist im allgemeinen deutlich schneller als reiner von CPython ausgeführter Code. Aber man schreibt auch keine krassen geschwindigkeitskritischen Algorithmen in Python, sondern überlässt das dort (nativen) Bibliotheken.
 
  • Gefällt mir
Reaktionen: M4ttX
blanc schrieb:
Wieso ist Python heutzutage so beliebt?
Weil Python im Bereich Machine Learning sehr viele Bibliotheken (bzw. Bindings) hat und ML sehr trendy ist aktuell. Ansonsten gibt es keinen besonderen Grund, Python ist nicht einfacher oder einfacher zu erlernen als vergleichbare (Skript-)sprachen wie z.B. Ruby. Außerhalb von ML ist das Ökosystem, also Bibliotheken auch "nur" vergleichbar mit denen anderer Skriptsprachen.
Es gibt durch den ML Trend schlicht sehr viele Einsteiger, die Python lernen und daher sehr viele, die für Python werben.

C und C++ sind natürlich ganz andere Sprachen und Python ausgerechnet damit zu vergleichen ist nicht wirklich zielführend.
 
andy_m4 schrieb:
Nicht unbedingt zwangsläufig einfacher als andere Sprachen. Zumindest Quellcode-kompatibel zu unterschiedlichen Plattformen zu sein bieten heute viele Sprachen.
Es geht nicht um den Quellcode, sondern darum, dass ich ein kompiliertes C-Programm nicht einfach auf ein anderes System kopieren und dort ausführen kann - ich muss die Quellen entweder auf das Zielsystem schieben und dort kompilieren oder es cross-kompilieren. Für mein Python-Skript brauche ich nur den entsprechenden Interpreter auf dem Zielsystem.
 
Revan1710 schrieb:
Für mein Python-Skript brauche ich nur den entsprechenden Interpreter auf dem Zielsystem.
Das gilt für jede Skriptsprache. Davon abgesehen gibt es für viel mehr Architekturen C/C++ Compiler als Python-Interpreter. Von daher ist das ein eher fraglicher Vorteil.

An Python ist schlicht nichts besonderes, außer dem umfassenden ML Ökosystem.
 
  • Gefällt mir
Reaktionen: andy_m4
GrumpyCat schrieb:
Oh? Z.B. List Comprehensions sind in Python mit am elegantesten gelöst
Der Begriff elegant ist auch immer eine subjektive Angelegenheit. Insofern müsstest Du das schon näher spezifizieren.
Aber selbst wenn man das so gelten lässt, sind List Comprehensions ja nicht das einzige was eine Sprache ausmachen.

GrumpyCat schrieb:
In der Praxis scheitert das meist (bei nicht-trivialen Projekten) daran, dass sich die benutzten Bibliotheken nicht kompilieren lassen.
Ja. Das hat aber mit der eigentlichen Aussage nix zu tun. Also das interpretierte Sprachen per se leichter unter anderen Systemen ausführbar sind.

Revan1710 schrieb:
Für mein Python-Skript brauche ich nur den entsprechenden Interpreter auf dem Zielsystem.
Dein Python-Skript ist aber Quellcode. Und Du brauchst Python auf dem Zielsystem.
Wo ist denn jetzt der gravierende Unterschied zu einer "Compilersprache" wo ich den Quelltext auf die Zielmaschine schieben muss und auch ein Compiler dort installiert sein muss?
 
BeBur schrieb:
Das gilt für jede Skriptsprache. Davon abgesehen gibt es für viel mehr Architekturen C/C++ Compiler als Python-Interpreter. Von daher ist das ein eher fraglicher Vorteil.
Natürlich gilt das auch für andere Skriptsprachen, es wurde aber explizit nach Unterschieden zu C/C++/Java gefragt und nicht nach Alleinstellungsmerkmalen von Python.

Ich habe auch nicht gesagt, dass ein Vorteil von Python die Kompatibilität zu vielen Systemen ist, sondern dass es einfacher ist das Skript auch auf anderen Systemen auszuführen, weil ich es eben nicht nochmal kompilieren muss.

andy_m4 schrieb:
Wo ist denn jetzt der gravierende Unterschied zu einer "Compilersprache" wo ich den Quelltext auf die Zielmaschine schieben muss und auch ein Compiler dort installiert sein muss?
Weil die Quellen eben nicht nur rüberkopiert sondern dort auch kompiliert werden müssen.

Was ist das jetzt auch für eine bescheuerte Diskussion. Die Unterschiede sind da - ob man die als unwesentlich erachtet oder als Vor-/Nachteil sieht, sei jedem selbst überlassen.

Ich finde es jedenfalls einfacher, wenn ich mein Python-Skript auch einfach mal auf meinen Raspi kopieren und dort ausprobieren kann, ohne erstmal einen Arm-Compiler zu installieren oder remote im Schneckentempo zu kompilieren.
 
Revan1710 schrieb:
Weil die Quellen eben nicht nur rüberkopiert sondern dort auch kompiliert werden müssen.
Ja. Aber das ist ja eher ein Detail am Rande und nicht wirklich etwas Entscheidendes.
Ganz abgesehen davon das kompilieren ja nicht unbedingt ein expliziter cc-Aufruf sein muss. Also bei C wäre das jetzt üblicherweise so. Aber es gibt ja auch Sprachen wo Compilerdurchlauf und Starten sozusagen in einem Rutsch gehen.
Ist ja im Prinzip auch bei Python ein bisschen so. Auch das wird ja i.d.R. nicht direkt ausgeführt, sondern erst in Bytecode kompiliert.

Im Grunde ist diese Unterteilung in Interpretersprachen und Compilersprachen schon längst nicht mehr zeitgemäß. So richtig gestimmt hat es noch nie, da dies weniger eine Frage der Sprache ist, sondern eher eine Frage der Implementation.

Revan1710 schrieb:
Was ist das jetzt auch für eine bescheuerte Diskussion.
Du hast sie doch begonnen.
 
ich leg mein posting bewusst subjektiv an.

Vorteile aus meiner Sicht:
  • syntax mMn dodeleinfach, keine deppate Suche nach einem vergessenen ";" (siehe Nachteile)
  • dementsprechend schnell ist was für eine kleine automatisierung oder auswertung hingerotzt :)
  • ducktyping: ich muss mich im Regelfall für halbwegs einfache Sachen keine Gedanken datentypen udgl machen.
  • für datenanalyse in zusammenarbeit mit jupyter(lab) möcht ich es nicht mehr missen. ich sehe quasi sofort was ich da fabriziere.

Nachteile aus meiner Sicht:
  • Wenn man dann mal so wie ich auch ein groovy/Java Fass aufmachen muss, ist jede andere Sprache "kompliziert" von der Syntax. ich meine, eh noch Glück zu haben (Groovy ist in meinen Augen eh ein pythonesques Java^^), aber man muss sich mehr umgewöhnen als wenn man zwischen anderen Sprachen wechselt.
  • Beispiel Java: ich schreibe was, compiliere und verteile es an Kollegen. für ein GUI Tool in Python freeze ich es mit pyinstaller, das ist aber auch ein steiniger Weg alles richtig zu freezen (abhängig von den verwendeten Modulen). und da quasi die Runtime/interpreter mitgeliefrt wird, unnötig großes Paket dann.
 
mercury schrieb:
syntax mMn dodeleinfach
Sehe ich anders. Die Syntax ist eher kompliziert. Gut. Kommt drauf an, womit man vergleicht. Guckt man in Richtung C++ ist Python natürlich easy. Guckt man in Richtung Smalltalk dann sieht die Sache anders aus. Smalltalk schafft es halt mit relativ wenig Sprachelementen ein breites Spektrum abzudecken weshalb ich da gar sprachlich gar nicht so viel lernen muss um weit zu kommen. Was ich spannend finde. Denn Python ist als Lehrsprache konzipiert und kam später als Smalltalk heraus.

Dann gibts noch ein paar andere Sachen die nervig sind. Insbesondere die semantic whitespaces sind immer mal wieder ein Quell von Fehlern. Also schnell mal was copy-pasten ist nicht.

mercury schrieb:
ducktyping: ich muss mich im Regelfall für halbwegs einfache Sachen keine Gedanken datentypen udgl machen.
Das Typ-System ist so ein bisschen Hit and Miss. Ja. Man muss nix deklarieren und es ist immerhin gut, das wir starke Typisierung haben. Auf der anderen Seite führt das halt auch dazu, das gewisse Fehler erst zur Laufzeit auftreten. Man hat das mit type-hints versucht ein bisschen zu entschärfen, damit wenigstens Dev-Tools ein paar Sachen erkennen können. Aber so richtig schön ist das nicht.
Für gewisse Dinge ist das ok. Wenn ich damit lediglich Blbiotheken anspreche oder ein bisschen Glue-Code haben will oder kurze Skripte habe.

Wenns mal etwas mehr sein soll wirds dann auch schnell mal unpraktisch. Ich würde das der Sprache aber nicht unbedingt zum Vorwurf machen. Denn in ihrer Domäne funktioniert das gut. Ich beschwere mich ja auch nicht über den Schraubenzieher, wenn ich damit nur schlecht nen Nagel in die Wand kriege.
 
  • Gefällt mir
Reaktionen: Skysnake, foo_1337, KitKat::new() und 2 andere
Revan1710 schrieb:
Natürlich gilt das auch für andere Skriptsprachen, es wurde aber explizit nach Unterschieden zu C/C++/Java gefragt und nicht nach Alleinstellungsmerkmalen von Python.
Ich glaube der TE hat die Sprachen erwähnt, weil diese ihm gerade im Kopf waren, seine Formulierung klingt jedenfalls allgemeiner. Die Frage nach der Beliebtheit weist auch darauf hin.
Von daher nochmal der Hinweis, dass es keinen technischen Grund gibt, dass Python so beliebt ist. imHo war JS kürzlich wegen web und nodejs noch deutlich beliebter. Das Ökosystem bei Python ist ausgereift, aber afaik nicht herausragend, auch nicht für eine Skriptsprache - außer für ML.
 
  • Gefällt mir
Reaktionen: andy_m4
GrumpyCat schrieb:
Oh? Z.B. List Comprehensions sind in Python mit am elegantesten gelöst (Vergleich siehe https://en.m.wikipedia.org/wiki/Comparison_of_programming_languages_(list_comprehension) ), und C/C++ hat sowas gleich gar nicht.
Naja, diese eigentümlichen und etwas schrägen "list comprehensions" in Python haben mir (von Perl kommend) am Anfang doch etwas Stirnrunzeln bereitet. Warum?

Aus Deinem Link:
in Python - S = [2 * x for x in range(100) if x ** 2 > 3]
das in Perl - @S = map 2*$_, grep $_**2>3, 0..100;

Aber man gewöhnt sich bekanntlich am Ende an fast Alles ;)
 
  • Gefällt mir
Reaktionen: foo_1337
blöderidiot schrieb:
Aber man gewöhnt sich bekanntlich am Ende an fast Alles
Was willst du sagen? Also abgesehen davon, dass du map verwendest und keine list comprehension ist die Perl-Syntax doch richtig gruselig.

In Julia sieht eine list comprehension btw. nahezu identisch aus:
S = [2*x for x in 1:100 if x^2 > 3]
Julia hat allerdings dankenswerter weise first level support von map/reduce/..., im Gegensatz zy Python.

PS.:
andy_m4 schrieb:
Die Syntax ist eher kompliziert. Gut. Kommt drauf an, womit man vergleicht.
Die Syntax von Ruby ist auch deutlich einfacher und eingängier als die von Python. Julia ist imHo diskutabel (die Sprache ist halt auch deutlich ausdruckssärker als Python).
 
Zuletzt bearbeitet:
  • Gefällt mir
Reaktionen: andy_m4
Die Sprache mag noch so einfach und noch soviele (Fremd)-Bibliotheken haben: Semantic Whitespaces sind ein no-go für mich :D

Ich bin da aber wohl einfach zu sehr an den C/C++ Style gewöhnt.
 
  • Gefällt mir
Reaktionen: gymfan
andy_m4 schrieb:
Ja. Aber das ist ja eher ein Detail am Rande und nicht wirklich etwas Entscheidendes.
Für mich war es das einzig Entscheidende, mich überhaupt etwas mit Python zu beschäftigen (genauso wie auf einer anderen Plattform mit der PowerShell).

Bevor ich mir für meinen Dreambox einen Crosscompiler aufsetze, gewöhne ich mich für die paar kleinen Aufgaben lieber an Python.

Auf meinem Windows-PC komme ich nicht auf die Idee, Dinge in Python zu schreiben. Allerdoings auch nur noch extrem selten, etwas in C/C++ zu schreiben.
 
blanc schrieb:
Hi,

ich frage mich, welche besonderen Vorteile Python bringt gegen andere Programmiersprachen wie C (C++) oder Java.

Keine. Nur Nachteile.

blanc schrieb:
Wieso ist Python heutzutage so beliebt?

Weil irgendwer mal damit angefangen hat, und jetzt jeder dabei sein will.
Eigentlich müsste man den Python-Patient-0 via Zeitreise ausschalten.
 
  • Gefällt mir
Reaktionen: BeBur
Zurück
Oben