Warum die Zukunft nicht für Python ist

Obwohl diese Programmiersprache natürlich noch viele Jahre gefragt sein wird.



Die Programmierergemeinschaft brauchte Jahrzehnte, um Python zu schätzen. Seit Anfang der 2010er Jahre boomt es - und übertrifft letztendlich C ++, C #, Java und JavaScript an Popularität.

Aber wie lange wird sich dieser Trend fortsetzen? Wann wird Python irgendwann durch andere Sprachen ersetzt und warum wird dies unvermeidlich sein?
EDISON Software - Webentwicklung
Die Übersetzung wurde von EDISON unterstützt.

Wir entwickeln Anwendungen in Python und führen Softwaretests durch .

Wir lieben und nutzen Python ausgiebig! ;-);

Was macht Python heute populär?


Die Popularität von Python kann anhand von StackOverflow beurteilt werden, wenn Sie sich die Anzahl der Tags in den Posts ansehen. Angesichts der Größe von StackOverflow ist dies ein ziemlich objektiver Indikator für die Popularität der Sprache.


Erwähnung einiger beliebter Programmiersprachen auf StackOverflow - die Dynamik der Änderungen im Laufe der Jahre. Die Leistung von Python wächst stetig, während die Konkurrenz abnimmt.

Während R in den letzten Jahren auf dem Plateau war und viele andere Sprachen stetig zurückgehen, scheint Pythons Wachstum nicht aufzuhalten. Fast 14% aller StackOverflow-Fragen tragen die Bezeichnung „Python“, und dieser Trend nimmt nur noch zu. Dafür gibt es eine Reihe von Gründen.

Zeitgeprüft


Python existiert seit den neunziger Jahren. Es ist nicht nur so, dass er viel Zeit für Wachstum hatte. Und auch, dass sich eine große und unterstützende Gemeinschaft gebildet hat.

Wenn Sie beim Schreiben von Python-Code auf Probleme stoßen, besteht daher eine hohe Wahrscheinlichkeit, dass Sie diese mithilfe der Google-Suche schnell lösen können. Nur weil jemand bereits auf ein ähnliches Problem gestoßen ist und etwas Nützliches darüber geschrieben hat.

Freundlich für Anfänger


Und es geht nicht nur darum, dass die Sprache seit mehreren Jahrzehnten existiert, für die Programmierer eine Reihe brillanter Lehrbücher geschrieben haben. Die Python-Syntax ist auch sehr gut lesbar.

Erstens muss kein Datentyp angegeben werden. Sie deklarieren einfach eine Variable - aus dem Kontext wird Python verstehen, ob es sich um eine Ganzzahl, einen Gleitkommawert, einen Booleschen Wert oder etwas anderes handelt. Dies ist eine große Hilfe für Anfänger. Wenn Sie jemals in C ++ programmieren mussten, wissen Sie, wie traurig es ist, wenn ein Programm nicht kompiliert wird, weil anstelle einer Gleitkommazahl eine Ganzzahl eingesetzt wird.

Und wenn Sie jemals Python- und C ++ - Code vergleichen mussten, wissen Sie, wie viel verständlicher Python aussieht. Trotz der Tatsache, dass C ++ unter Berücksichtigung der englischen Sprache entwickelt wurde, ist dies im Vergleich zum Python-Code eine sehr schwierige Lektüre.

Universal


Python gibt es schon seit langer Zeit, in der Entwickler viele Bibliotheken für alle Gelegenheiten erstellt haben. Heutzutage finden Sie für fast alles das erforderliche Werkzeug.

Viele Zahlen, Vektoren und Matrizen? NumPy zur Rettung.
Technische Berechnungen? Verwenden Sie SciPy .
Big Data Analyse? Pandas werden es herausfinden.
Maschinelles Lernen, neuronale Netze, KI? Warum nicht Scikit-Learn ?

Unabhängig davon, auf welche Rechenaufgabe Sie stoßen, besteht die Möglichkeit, dass ein Python-Paket dafür vorhanden ist. Dadurch bleibt die Sprache im Trend, was sich in der wachsenden Beliebtheit des maschinellen Lernens in den letzten Jahren bemerkbar macht.

Python-Fehler - und können sie die Sprache begraben


Inspiriert vom aktuellen Stand der Dinge kann man sich vorstellen, dass Python eine ernsthafte und langfristige Angelegenheit ist. Aber wie jede Technologie hat Python seine Schwächen. Lassen Sie uns die wichtigsten Mängel der Reihe nach untersuchen und bewerten, ob sie tödlich sind oder nicht.

Geschwindigkeit


Python ist langsam. Nein, sehr langsam. Im Durchschnitt läuft eine Aufgabe 2-10 Mal länger als in konkurrierenden Sprachen.

Dafür gibt es Gründe. Erstens, dynamische Typisierung - denken Sie daran, wir haben oben gesagt, dass es sehr praktisch ist, wenn Sie keine Datentypen wie in anderen Sprachen angeben müssen. Die Kehrseite der Medaille ist die Notwendigkeit, eine große Menge an Speicher zu verwenden, da das Programm genügend Speicherplatz für jede Variable reservieren muss, damit es trotzdem funktioniert. Und der Speicher „mit Rand“ führt zu einem höheren Rechenaufwand.

Zweitens kann Python jeweils nur eine Aufgabe ausführen. Dies ist auch eine Folge flexibler Datentypen - Python muss sicherstellen, dass jeder Variablen nur ein Datentyp entspricht, und parallele Prozesse können dies stören.

Im Großen und Ganzen ist die Geschwindigkeit jedoch nicht kritisch. Produktive Computer und Server sind so zugänglich, dass wir nur über Sekundenbruchteile sprechen können. Dem Endbenutzer ist es egal, ob seine Anwendung in 0,001 oder in 0,01 Sekunden geladen wird.

Sichtbereich


Python war anfangs dynamisch begrenzt. Dies bedeutet im Grunde, dass der Compiler zur Auswertung des Ausdrucks zuerst nach dem aktuellen Block und dann nacheinander alle aufrufenden Funktionen sucht.

Das Problem mit dem dynamischen Bereich besteht darin, dass jeder Ausdruck in allen möglichen Kontexten überprüft werden muss, was mühsam ist. Aus diesem Grund verwenden die meisten modernen Programmiersprachen statische Bereiche.

Python hat versucht, in den statischen Bereich zu wechseln, ist jedoch fehlgeschlagen. In der Regel können interne Bereiche, z. B. Funktionen innerhalb von Funktionen, externe Bereiche anzeigen und ändern. In Python können innere Regionen nur äußere Regionen sehen, aber nicht ändern. Dies führt zu viel Verwirrung.

Lambda-Funktionen


Trotz aller Flexibilität von Python ist die Verwendung von Lambda recht begrenzt. Sie können nur Ausdrücke in Python sein, keine Operatoren.

Variablendeklarationen und Operatoren sind dagegen immer Operatoren. Dies bedeutet, dass Lambdas nicht für sie verwendet werden können.

Diese Unterscheidung zwischen Ausdrücken und Aussagen ist eher willkürlich und kommt in anderen Sprachen nicht vor.


Durch strikte Einrückung wird der Code besser lesbar, aber ihre Unvermeidlichkeit beeinträchtigt die Unterstützung.

Leerzeichen und Tabulatoren


In Python werden Leerzeichen und Tabulatoren verwendet, um verschiedene Codeebenen anzugeben. Dies macht es optisch ansprechend und intuitiv.

In anderen Sprachen wie C ++ werden geschweifte Klammern mit Semikolons für verschachtelte Strukturen verwendet. Obwohl dies für Anfänger möglicherweise nicht so schön und unpraktisch ist, erleichtert es die Pflege des Codes. Mit dem Wachstum des Projekts steigt auch die Bedeutung dieses Ansatzes.

Neue (relativ) Sprachen wie Haskell lösen dieses Problem: Sie basieren auf Leerzeichen, bieten jedoch eine alternative Syntax für diejenigen, die auf sie verzichten möchten.

Mobile Entwicklung


Da es eine massive Verlagerung von Desktop-PCs zu Smartphones gibt, ist es offensichtlich, dass ein zunehmender Bedarf an zuverlässigen Sprachen für die Erstellung mobiler Software besteht.

Aber mobile Anwendungen in Python etwa zweimal und falsch berechnet. Dies bedeutet nicht, dass dies überhaupt nicht möglich ist - dafür gibt es ein Paket namens Kivy.

Python wurde nicht für mobile Geräte erstellt. Auch wenn es akzeptable Ergebnisse für die Lösung grundlegender Probleme in diesem Bereich liefern kann, ist es am besten, eine Sprache zu verwenden, die auf die Entwicklung mobiler Anwendungen zugeschnitten ist. Einige häufig verwendete mobile Programmierplattformen umfassen React Native, Flutter, Iconic und Cordova.

Natürlich werden Laptops und Desktop-PCs noch viele Jahre verwendet. Mobile Geräte haben jedoch den Desktop-Verkehr längst übertroffen. Man kann mit Sicherheit sagen, dass das Erlernen von Python nicht ausreicht, um als erfahrener, umfassender Entwickler zu gelten.

Laufzeitfehler


Zuerst separat kompilieren, dann ausführen - in einigen anderen Sprachen, aber nicht in Python. Stattdessen erstellt der Code , wenn er ausgeführt wird, so dass jeder Fehler im Code erscheint während der Programmausführung. Dies führt zu einer verringerten Leistung, unnötiger Zeitverschwendung und der Notwendigkeit einer großen Anzahl von Tests. Weitere Tests für den Gott der Tests!

Dies ist ideal für Anfänger, da das Testen allein viel lehrt. Für erfahrene Entwickler macht das Debuggen eines komplexen Programms in Python sie jedoch falsch. Dieser Leistungsmangel ist der schwerwiegendste Faktor dafür, dass Python in absehbarer Zeit erfolgreich sein wird.

Was könnte Python in Zukunft ersetzen - und wann?


Auf dem Markt für Programmiersprachen sind mehrere neue Wettbewerber aufgetaucht:

  • Rust , Python — . . StackOverflow Insights, .
  • Go , Python. , . : Go — .
  • Julia ist eine sehr neue Sprache, die direkt mit Python konkurriert. Es füllt die Lücke bei umfangreichen technischen Berechnungen: Normalerweise können Sie Python oder Matlab verwenden und einen Teil der Aufgaben (manchmal einen sehr wichtigen Teil) mithilfe von C ++ - Bibliotheken ausführen. Anstatt mit zwei Sprachen zu jonglieren, können Sie jetzt einfach Julia verwenden.

Obwohl es andere Sprachen auf dem Markt gibt, beheben Rust, Go und Julia Python-Schwächen. Alle diese Sprachen eignen sich hervorragend für zukünftige Technologien, insbesondere für künstliche Intelligenz. Obwohl ihr Marktanteil immer noch gering ist (was sich in der Anzahl der StackOverflow-Tags widerspiegelt), ist der Trend für jeden von ihnen offensichtlich: auf und ab.


Erwähnung von StackOverflow für Go / Rust / Julia - Dynamik der Veränderungen im Laufe der Jahre. Die Indikatoren sind immer noch bescheiden, aber diese Sprachen haben einen stetigen Aufwärtstrend.

Angesichts der weit verbreiteten Popularität von Python wird es ein halbes Jahrzehnt, vielleicht sogar ein ganzes Jahrzehnt dauern, bis eine dieser neuen Sprachen es ersetzt.

Es ist schwer zu sagen, welche Sprache es sein wird - Rust, Go, Julia oder eine andere neue Sprache der Zukunft. Angesichts der Leistungsprobleme, die für Python aufgrund seiner Architektur von grundlegender Bedeutung sind, wird das Unvermeidliche früher oder später eintreten.

All Articles