Softwareentwicklung mit Python

Sprecher: Klaus Rohe (Microsoft Deutschland)

Python gibt es nicht nur für Mac OS, Linux oder UNIX, sondern auch für Windows. IronPython ist eine leistungsfähige Implementierung von Python.

Historie

Python wurde Anfang der 1990er Jahre durch Guido van Rossum am Zentrum für Mathematik und Informatik in Amsterdam als Nachfolger für die Lehrsprache ABC entwickelt.

Python ist im Gegensatz zu C, C#… nicht standardisiert. Aktuell ist die Version 2.6, die vollständig abwärtskompatibel ist, während in der bereits verfügbaren RC1 von Python 3.0 ein Bruch stattgefunden hat, so dass diese Version nicht mehr abwärtskompatibel ist.

Python-Programme werden interpretiert und unterstützen sowohl die prozedurale, objektorientierte sowie eingeschränkt die funktionale Programmierung. Python wird als dynamische Programmiersprache betrachtet. Das bedeutet keine explizite Definition von Variablentypen, die Sprache wird interpretiert und die Sprache ermöglicht Modifikationen des Programmcodes zur Laufzeit.

Python verfügt über eine klare und einfache Syntax und ist auf alle Plattformen mit C-Compiler portabel, also auf Windows, Mac OS, UNIX, Linux…

Weshalb sollte man Python einsetzen? Die Sprache ist einfach zu lernen und zu benutzen. Sie ermöglicht eine schnelle Entwicklung sowie Prototyping. Außerdem stehen für die Sprache viele Frameworks und Klassenbibliotheken zur Verfügung (für die Webentwicklung und für technisch-wissenschaftliche Anwendungen). Zusätzlich wird Python häufig verwendet, um andere Anwendungen skriptbar zu machen.

Die originale Version von Python wird auch als CPython bezeichnet. Jython ist eine Implementierung von Python in Java. PyPy ist eine Implementierung von Python in Python. IronPython wurde in C# für .NET implementiert. IronPython und JPython haben gleiche Ziele.

Python enthält eine fünfstufige Hierarchie mit 15 Datentypen, die ich hier aber nicht alle aufzählen möchte. Informieren Sie sich darüber bitte auf anderen Sites im Internet.

Eigenarten der Python-Syntax

Python erzwingt eine sehr lesbare Formatierung der Programme. Ohne Einrückung durch Tabs erzeugt Python einen Syntaxfehler (kennen wir so etwas nicht aus der guten alten Zeit, als wir noch mit COBOL programmiert haben?)

Die Syntax von Python

Dies ist mein allererster Kontakt mit der Pythonsyntax. Legen sie daher nicht jedes Wort auf die Goldwaage. Ich beschreibe hier halt nur meinen ersten Eindruck. Python kennt nur die For- und die While-Schleife sowie eine Verzweigung mit IF und ELSE und konditionale Ausdrücke. Python erlaubt auch verschachtelte Funktionsdefinitionen sowie rekursive Funktionen.

Die Generatorfunktionen sind in Python eine elegante Methode, um Sequenzen von Werten zu verarbeiten. Dabei erinnert die Syntax doch stark an C, so dass man sich in dieser Sprache schnell zu Hause fühlen dürfte. Allerdings fehlen die geschweiften Klammern, die Codeblöcke einfassen. Diese Klammern empfinde ich in C# als sehr angenehm, da sie helfen, den Code übersichtlich zu halten. Aber da Python eine lesbare Formatierung des Codes erzwingt, ist dieses Fehlen kein Manko.

Python unterstützt einfache anonyme Funktionen, auch Lambda-Ausdrücke genannt, die auf Ausdrücke beschränkt sind und keine Kontrollanweisungen enthalten dürfen.

Python ist objektorientiert

Das bedeutet, dass wir in Python Klassen definieren können und dass Vererbungskonzepte unterstützt werden, sogar die Mehrfachvererbung. Anders als C# enthält Python aber kein Schnittstellenkonzept.

Ausnahmebehandlung in Python

Das Konzept von TRY und CATCH dürfte mittlerweile allgemein bekannt sein, so dass ich mich darüber hier nicht auslassen muss.

Andere Sprachkomponenten

Mit List Comprehension wird aus den Elementen einer bestehenden Liste eine neue Liste erzeugt.

Alle diese Angaben gelten für alle Python-Implementierungen.

IronPython

Aktuell ist die Version IronPython 1.1.2 Kürzlich ist der Release Candidate 1 von IronPython 2.0 erschienen. In IronPython 2.0 wurde die Dynamic Language Runtime implementiert. Sie können IronPython unter www.codeplex/IronPython herunterladen. Sie erhalten wahlweise eine ZIP-Datei oder ein MSI-Installationspaket. Auch der Quellcode von IronPython steht zum Download bereit.

Wenn Sie IronPython installiert haben, finden Sie in Ihrem Installationsverzeichnis zwei Programme:

Ipy.exe für das Ausführen von IronPython Skripten mit interaktiver Console. Ipyw.exe für Skripte ohne interaktive Console. Sie benötigen zwei Umgebungsvariablen: IRONPYTHONPATH und IRONPYTHONSTARTUP. Achten Sie darauf, dass diese Umgebungsvariablen korrekt gesetzt sind.

Wie schnell ist IronPython? Lt. dem Standard-Benchmark Pystones ist IronPython etwa um die Hälfte schneller als CPython.

Die Dynamic Language runtime

Dies ist eine Plattform zur Implementierung von dynamischen Sprachen auf .NET. Sie basiert auf den Erfahrungen von Jiom Hugunin bei der Implementierung von IronPython 1.0 auf .NET. Die DLR ist ein Aufsatz auf dem .NET Framework und wurde in C# implementiert. Sie nutzt die Dienste und Eigenschaften des .NET Frameworks.

Microsoft plant, IronPython in Visual Studio 10 zu implementieren. Außerdem gibt es auf Codeplex ein Programm namens IronPython Studio.

Benutzung von .NET-Datentypen und Bibliotheken in IronPython

Die .NET-Datentypen und Bibliotheken müssen in IronPython bekannt gemacht werden. Die Umgebungsvariable IRONPYTHONPATH muss die Verzeichnisse enthalten, in denen sich die referenzierten Assemblies befinden.

Es gibt einige Unterschiede zwischen C# und IronPython. In Python gibt es keine Generics und es stehen dort auch keine .NET-Attribute zur Verfügung. In IronPython können aber sämtliche Klassenbibliotheken des .NET Frameworks verwendet werden. Die .NET-Namespaces können in IronPython wie Python-Pakete eingesetzt werden. Selbst auf WPF und LINQ kann IronPython zugreifen, auch wenn es etwas ungewöhnlich ist, aus einer Skriptsprache heraus eine grafische Oberfläche aufzubauen und über diese auf eine Datenbank zuzugreifen.

Einbetten von IronPython in .NET-Anwendungen

Auf diese Weise können Sie Ihre Anwendungen mit Skriptingfunktionen ausrüsten. Dadurch erstellen Sie flexible Anwendungen, die auf einfache Weise an geänderte Anforderungen angepasst werden können. Das einbetten von Skript-Engines ist eine der Kernfunktionalitäten der DLR. Sie benötigen dafür die Namespaces Microsoft.Scripting und Microsoft.Scripting.Hosting.

 

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.