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!