Warum ist Python so beliebt? (C) 2019-2025 T.Birnthaler OSTC GmbH
============================
--> Why Python? Eric Raymond
* Ursprünglich als LEHRSPRACHE konzipiert, daher leicht zu erlernen
(auch für technisch Orientierte ohne formale Programmierausbildung).
* Syntax ist relativ einfach lesbar/schreibbar und konsistent
(verglichen mit anderen Programmiersprachen wie z.B. C++)
+ Nur 35 Schlüsselworte (--> Bedeutung aller anderen Bezeichner änderbar)
* Stark VEREINHEITLICHTES Programmiermodell (analog SmallTalk, LISP):
+ ALLES ist ein OBJEKT (auch Werte elementarer Datentypen,
Funktionen, Datentypen, Klassen, Module)
+ Es gilt immer: NAME --> REFERENZ --> OBJEKT = TYP + WERT + REFCNT
(NAME ist neutral, REFERENZ ist auch neutral, OBJEKT enthält alle Daten)
+ Kein Unterschied zwischen eingebauten Datentypen und neu erzeugten Klassen
(KLASSE == DATENTYP)
+ Variablen sind IMMER INITIALISIERT
+ Es gibt nur CALL BY REFERENCE und RETURN BY REFERENCE
+ Automatische Speicherverwaltung per REFERENCE COUNTING + GARBAGE COLLECTION
+ DUCK TYPING ("if it looks and behaves like a duck, it's a duck")
+ Vieles per NAMENS-KONVENTION geregelt
+ EINRÜCKUNG ist bedeutungstragender Teil der Syntax (def. Verschachtelung)
und wird somit erzwungen (BLOCK INDENTATION)
* Nichts wird verboten,
alles ist möglich,
weniges wird erzwungen,
vieles per Konvention geregelt (PEP 8).
* Ausgezeichnete Fehlermeldungen zur Übersetzungs- und zur Laufzeit
(werden mit jeder Python-Version sogar noch verbessert).
* Darf durch Einbau neuer Fähigkeiten und Eigenschaften nicht langsamer werden
(lehrreiche Erfahrung aus dem Übergang von Python 2 nach 3,
P3 war wg. UTF8 bei String-Verarbeitung zunächst 3-mal langsamer als P2).
* Multiparadigmensprache: Unterstützt strukturierte, objektorientierte,
funktionale, deklarative und aspekteorientierte Programmierung.
* Viele moderne Programmierkonzepte werden unterstützt:
+ Iteratoren, Generatoren und Koroutinen
+ Metafunktionen / Higher-order Funktionen
+ Closures
+ Dekorateure
+ lambda, map, filter, reduce
+ Asynchrone Programmierung
+ Introspection, Reflection, Selfdescription
+ Descriptoren
+ Name Spaces
+ Kontext Manager
+ Operator Overloading
+ Properties
+ Wrapper-Funktionen und Currying
+ Abstract Base Classes
+ Metaklassen
+ Dynamische Klassen (Monkey Patching)
+ (Multiple) Inheritance
+ Traits und Mixins
+ Type Annotation / Type Hints
+ Comprehensions
+ Dynamic Typing
+ Meta-Programming
+ Positional and Keyword Arguments
+ Exception Handling
+ Domain Specific Languages (DSL)
+ ...
* Umfangreiche und ausgereifte Standardbibliothek wird mitgeliefert
("Batteries included").
* Python und seine Standardbibliothek sind portabel.
* Umfangreiche und ausgezeichnete Online-Dokumentation der eigentlichen
Sprache, der Standardbibliothek sowie des Entwicklungsprozesses (PEPs).
* Quellcode-Dokumentation per "Docstring"-Verfahren in Code integrierbar und
per "help"-Funktion oder "pydoc"-Kommando aus Quellcode extrahierbar.
* Über 30 Jahre weiterentwickelt und gereift.
* Lizenz ist sehr freizügig (MIT),
Community agiert sehr vernünftig,
eine Kommerzialisierung ist nicht zu befürchten.
* Der Umfang der Python-Laufzeitumgebung ist relativ klein (etwa 200 MB),
sie lässt sich somit leicht ausliefern und in andere Systeme einbetten.
* In anderen Programmiersprachen geschriebene Bibliotheken lassen sich
relativ leicht mit einer Python-Schnittstelle ausstatten und nutzen
(man merkt nicht, dass man in einer anderen Sprache erstellten Code nutzt).
* "Lingua Franca" zur Nutzung vieler Bibliotheken.
("Glue Language" = Bindeglied).
* Zentrales Repository PyPi mit frei verfügbaren Bibliotheken, aus dem diese
einfach inkl. Abhängigkeiten installiert werden können (pip, easy_install).
* Viele frei verfügbare Bibliotheken für aktuell relevante Themen vorhanden:
+ AI/KI (Artificial Intelligence/Künstliche Intelligenz)
+ ML (Machine Learning)
+ Neuronale Netze (Deep Learning)
+ Data Science
+ Statistik
+ Simulation
+ Number Crunching (NumPy)
+ Symbolische Mathematik (SymPy)
+ Configuration Management
+ Container Management
+ Software Deployment
+ Ticket Systeme
+ TDD (Test Driven Development)
+ BDD (Behaviour Driven Development)
+ IoT (Internet of Things)
+ Controller (RaspberryPi)
+ Web Frameworks
+ GUI Toolkits
* Ersetzt zunehmend kommerzielle Systeme wie
Matlab, R, Stata, SAS, Excel, Labview, ...
* Kritische Masse an Verwendern ist schon lange erreicht.
* War einfach zur rechten Zeit am rechten Ort!