12. Das Python Ökosystem#
Als Python
-Ökosystem bezeichnen wir den Zusammenschluss aus dem was die Softwareentwicklung mit Python
ermöglicht.
Dazu zählen wir unter anderem
bestehenden Quellcode (Module, Pakte),
Entwicklungsumgebungen und Werkzeuge,
Paketverwaltungsprogramme wie
pip
undconda
,Dokumentationen,
andere Technologien, die mit
Python
gut integrierbar sindund vorallem die Gemeinschaft bzw. Unterstützer:innen
Lernziel
Wie nutze ich das Python
-Ökosystem?
Wie bringe ich Python
„zum Laufen“?
Wie nutze ich Pakte und Module (fremden Code) und die Jupyter Notebooks?
Dieses Kapitel soll Sie in der Praxis „in Gang“ setzen, sodass Sie mit dem Python
-Programmieren loslegen können.
Der Inhalt ist daher sehr Python
spezifisch und hat nur wenig mit dem eigentlichen Computational Thinking zu tun.
Sie werden feststellen, dass das Python
-Ökosystem reich, erwachsen und breit aufgestellt ist.
Es wird täglich erweitert und verbessert.
Blicken wir nur einmal auf einen Auszug bestimmter Pakete, welche wir nach deren Anwendungsbereich sortiert haben:
Maschinelles Lernen: Scikit-learn, TensorFlow, Theano, Caffe, PyTorch …
Computerlinguistik: Natural Language Toolkit (NLTK), Gensim, …
Wissenschaftliches Rechnen: NumPy, SciPy, StatsModels, Pandas, …
Datenvisualisierung: Matplotlib, Seaborn, …
Internet der Dinge (IoT): Raspberry Pi, PyBoard mit MicroPython, MQTT mit paho, …
Generative Kunst: Pillow, samila, Python Modus für Processing, …
Notebooks und deren Ökosystem: Jupyter
Spieleentwicklung (begrenzt geeignet): PyGame, Pyglet, PyOgre, …
…
Die eine, objektiv beste Programmiersprache existiert nicht. Die Bewertung einer Sprache ist immer ein subjektives Maß und sollte immer auch das Ökosystem einer Sprache beinhalten. Und ja: Die Popularität einer Sprache ist ebenfalls ein wichtiger Faktor. Was nutzt uns die perfekte Programmiersprache, wenn sie niemand sonst benutzt?
Durch die gestiegenen Ansprüche an Software ist deren Komplexität gestiegen.
Wollen Sie heute eine Webseite erstellen, die den Ansprüchen der heutigen Standards entspricht, werden Sie nicht damit beginnen reines Python
, HTML
, CSS
und JavaScript
zu schreiben.
In der Praxis werden Sie sich mit Frameworks wie Django, jQuerry, Bootstrap, Vue und mehr beschäftigen.
Diese Frameworks haben bereits viele wesentliche und sich immer wiederholende Probleme der Webentwicklung für Sie gelöst.
Auf stackshare.io können Sie nachlesen, welche Technologien hinter vielen bekannten Webanwendungen wie
Instagram:
Python
,JavaScript
,Java
,ObjectiveC
, Django, React, …WhatsApp:
Erlang
,PHP
, …Google:
Python
,Java
,Go
,C++
,Dart
, AngularJS, Kubernetes, ……
stecken.
Selbstverständlich ändern sich die Ökosysteme ständig. Zu meiner kurzen Zeit als Webentwickler, um das Jahr 2006, war der sog. LAMP-Stack (Linux, Apache, MySQL, PHP/Perl) einer der gängisten Bündelungen an Technologie, die zur serverseitigen Webentwicklung genutzt wurde. Das hat sich mittlerweile geändert.
Ein anderes Beispiel ist die Entwicklung neuer Algorithmen aus dem Bereich des maschinellen Lernens. Sie werden im Normalfall das Rad in der Praxis nicht neu erfinden. Sie werden stattdessen analysieren welche Module (z.B. Scikit-learn, TensorFlow) Ihren Ansprüchen genügen und diese nutzen bzw. erweitern.
Als Entwickler*innen müssen wir in der Praxis unser reiches Ökosystem kennenlernen und effektiv nutzen. Dazu gehört insbesondere auch der bedachte Verzicht aufgeblähter Frameworks, die für unseren Anwendungsfall bzw. unser Ziel ungeeignet sind. Aus Sicht der Anwender*innen spielt es am Ende keine Rolle, welche tollen Technologien hinter Ihrer Anwendung stecken. Wichtig ist stattdessen, ob Ihre Anwendung das zu lösende Problem löst und ob die Anwender*innen eine gute Erfahrung mit Ihrer Anwendung machen, seien es Kunden einer Webanwendung oder Entwickler*innen, die Ihr Modul verwenden wollen.