Warum ist Python so beliebt?                (C) 2019-2021 T.Birnthaler OSTC GmbH
============================

* 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)

* Vereinheitlichtes Programmiermodell:
  + ALLES ist ein OBJEKT (auch Werte elementarer Datentypen,
                          Funktionen, Datentypen, Klassen, Module)
  + 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 NAMENSKONVENTION geregelt
  + Einrückung ist Teil der Syntax und wird 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.

* Darf durch Einbau neuer Fähigkeiten und Eigenschaften nicht langsamer werden
  (lehrreiche Erfahrung aus dem Übergang von Python 2 nach 3).

* 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).

* Systematische Programm-Dokumentation per "Docstring" eingebaut (pydoc).

* Ü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 gar nicht, dass man Fremdcode aufruft).

* "Lingua Franca" zur Nutzung vieler Bibliotheken.
  ("Glue Language" = Bindeglied zwischen allem).

* 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 System wie Matlab und Labview.

* Kritische Masse an Verwendern ist erreicht.

* War einfach zur rechten Zeit am rechten Ort!