Pythonmania

Script Different!

Suchen in:
Suche:
In Partnerschaft mit Amazon.de
Startseite | Schockwellenreiter | Impressum
Anzeigen


Warum Python?

Python ist eine moderne, objektorientierte Programmiersprache. Sie wurde von Guido van Rossum entwickelt und nach der berühmten Comedy-Truppe "Monty Pythons Flying Circus" benannt (und nicht nach der - ebenfalls berühmten - Schlange) Smile.

Ja, warum Python?

Python als Programmiersprache ist aus mehreren Gründen attraktiv. Zum einen lassen sich Programme in Python in der Regel bedeutend schneller entwickeln als in traditionellen Programmiersprachen wie C(++), Pascal oder auch Java. Zum andern ist es eine echte plattformunabhängige Sprache, die auf fast allen Betriebssysten vorhanden ist. Neben den Versionen für die "großen" Betriebssysteme Windows, Macintosh und Unix gibt es auch Versionen für OS/2, BeOS und viele andere »kleinere« Betriebssysteme.

Mit Python lassen sich schnell und einfach kleine Programme entwickeln. Aber auch für große Entwicklungen ist Python aufgrund seiner Objektorienterung gut geeignet. Daher kann Python als »Rapid Application Development«-Tool (RAD) ebenso eingesetzt werden wie als Scriptsprache zur Systemverwaltung.

Python ist von Anfang an konsequent objektorientiert entwickelt worden. Daher gibt es nicht die Ungereimtheiten, die traditionelle Sprachen mitbringen, denen die Objektorientierung erst nachträglich »aufgepfropft« wurde (C++, Object Pascal, Perl). Aber - im Gegensatz zu Java oder Smalltalk - wird niemand gezwungen, objektorientiert zu programmieren. Python ist - wie Oberon-2 - auch eine hervorragende prozedurale Programmiersprache.

Irgendwie scheint Python auch Wurzeln im Bereich der Künstlichen Intelligenz zu haben. Funktionale Programmierkonstrukte, die Lisp, Scheme oder auch Mathematica beliebt gemacht haben, sind nämlich ebenfalls in Python integriert.

Und Python bringt mit Tkinter ein mächtiges und leicht zu benutzendes Werkzeug zur Programmierung grafischer Benutzeroberflächen mit - und das ebenfalls plattformübergreifend. (Es soll nicht verschwiegen werden, daß es auch noch andere GUI-Tools für Python gibt (Wpy, WinPy oder das MacOS-Toolkit) - diese sind aber in der Regel nicht mehr plattformübergreifend und werden daher hier nicht behandelt).

Und zum Schluß das Beste: Python ist freie Software, d.h. es ist kostenlos und im Sourcecode erhältlich.

Python versus...

»Ich gebe Ihnen die zwanzig Prozent unten und die zwanzig
Prozent oben. Was ich dafür möchte, sind die sechzig Prozent in der Mitte.«
- Andrew Carnegie

Mit Python lässt sich fast alles programmieren, was das Programmiererherz begehrt. Nun gut, Device-Treiber werden wohl weiterhin in C programmiert werden und auch große numerische Berechnungen auf Supercomputern werden auch in Zukunft die Domäne von Fortran bleiben. Aber alles, was dazwischen liegt, und das sind sicher mehr als sechzig Prozent, läßt sich gut in Python erledigen.

...C(++), Pascal, Oberon und Java

Programmierer, die schon einmal in C, Pascal, Java oder einer anderen traditionellen Sprache programmiert haben, werden es einfach finden, Python zu lernen. Alle Konstrukte klassischer, prozeduraler Programmiersprachen, wie etwa Schleifen oder Bedingungen sind vorhanden. Aber in Python ist alles etwas einfacher. Hier einige der wichtigsten Unterschiede.

  • Die Speicherverwaltung ist komplett automatisiert. Nie wieder Speicherlecks oder »wildgewordene« Zeiger (dangling pointer). Java und Oberon sind die einzigen traditionellen Programmiersprachen, die des ebenfalls anbieten. Allerdings zwingt der Garbage Collector bei Java oder Oberon-2 den Anwender schon einmal zu einer Gedenkminute, da er nach Murphy immer dann in Aktion tritt, wenn der Benutzer das gerade nicht brauchen kann. Dies ist in Python - mittels Referenzzähler - besser gelöst.
  • Typbindungen sind auf Objekte beschränkt und nicht auf Variablen. Dadurch entfällt das oft umständliche Typcasting, das dem Programmierer in Pascal, Oberon oder C (und manchmal auch in Java) das Leben so schwer macht.
  • Objektorientierte Programmiersprachen leben von ihrer Bibliothek (Library). Die Bibliothek von Python erlaubt die Abstraktion auf einem viel höheren Level als in den meisten traditionellen Programmiersprachen. Ein einfacher Webserver kann z.B. in wenigen Zeilen geschrieben werden!

Diese und andere Features von Python erlauben es, auch große Programme extrem schnell zu entwickeln. Auf der anderen Seite beruht die Flexibilität von Python darauf, daß zur Ausführung ein Interpreter benötigt wird. Ähnlich wie in Java ist es ein Bytecode-Interpreter - Python ist als eine semi-compilierende Sprache. Zwar sind einige der Bibliotheken, wie z.B. String-Parsing extrem optimiert und mindestens ebenso schnell (wenn nicht sogar schneller), als ähnliche C-Routinen, in den meisten Fällen sind Python-Programme langsamer als Programme in compilierten Sprachen. Jedoch ist für ca. 90 % der Applikationen die Geschwindigkeit irrelevant - die meiste Zeit verbringt das Programm damit, auf die Eingaben des Benutzers zu warten. Ich habe den Eindruck, daß Python zur Zeit schneller als Java ist - und Java wird für fast alles benutzt.

...Visual Basic, RealBasic

Visual Basic (RealBasic auf dem Macintosh) verfolgt einen ganz anderen Ansatz. Der Programmierer »klickt« sich die Benutzeroberfläche auf dem Monitor zusammen und schreibt nur den Code für die programmspezifischen Teile. Da ich einige Jahre mit HyperCard gearbeitet habe, ist mir dieser Ansatz sympathisch. Daher habe ich zuerst mit RealBasic geliebäugelt, bevor ich micht für Python entschieden habe. Dafür gibt es im wesentlichen drei Gründe:

  • In RealBasic oder Visual Basic lassen sich sehr schnell Benutzeroberflächen erstellen und etliche Fehler vermeiden, die in Python/Tkinter schon einmal auftreten. Da aber auf der anderen Seite der Code für die Programme hinter etlichen Schaltelementen versteckt sein kann, verliert ein Programmierer leicht die Übersicht. Auf der anderen Seite ist eine von »Hand gestrickte« Benutzeroberfläche flexibler als eine visuell erstellte. Jedoch ist dies m.E. eine Geschmacksfrage, es gibt sicher gute Gründe, sich für eine visuelle Programmierumgebung zu entscheiden.
  • Visual Basic ist auf Windows beschränkt, RealBasic auf den Macintosh. Nachdem ich mit meinen HyperCard-Anwendungen einige Jahre in der "Isolation" verbracht habe, habe ich gezielt nach einer Sprache gesucht, die auf allen wichtigen Plattformen (und das ist für mich MacOS, Windows und Linux) läuft.
  • Visual Basic wie auch RealBasic sind kommerzielle Produkte, Python ist frei. Smile

Eins vermisse ich jedoch schmerzlich. RealBasic bietet eine einfache Möglichkeit, auf das MIDI Musical Instruments Interface von QuickTime zuzugreifen und somit Töne zu programmieren. Wenn es so etwas plattformübergreifend und in Python gäbe ...

...Perl und Tcl/Tk

Perl und Tcl/Tk sind sicher die Sprachen, die die näheste Verwandschaft zu Python haben. Viele Python Programmierer haben früher in Perl programmiert, sich jedoch dann wegen der Klarheit und Eleganz für Python entschieden. Perl und Tcl/Tk waren ursrpünglich als Ersatz (und Weiterentwicklung) für UNIX-Shellscripte entworfen worden. (Wenn man Osterhout, dem Erfinder von Tcl/Tk glauben darf, stand beim Entwurf von Tcl/Tk HyperCard Pate.) Höhere Sprachkonstrukte sind erst nachträglich hinzugekommen und man merkt den dies den Sprachen an. So ist die Objektorientierung in Perl etwas merkwürdig, außerdem ist Perl voll von Seiteneffekten und magischen Variablen. Dies erlaubt es zwar, schnell ein kleines Script zusammenzuhacken, macht es in meinen Augen jedoch unbrauchbar für größere Projekte. Außerdem fehlt Perl eine plattformübergreifende GUI-Bibliothek (Perl/Tk ist nicht für den Mac verfügbar). Auf dem Gebiet der CGI-Programmierung ist Perl allerdings die mit Abstand meist genutzte Sprache und es gibt Mengen von freien Bibliotheken und Programmen gerade für diesen Zweck. Und auch die Regular Expressions von Perl sind so gut, daß sie, wenn auch mit Verspätung, seit der Version 1.5 in Python übernommen wurden.

Tcl/Tk auf der anderen Seite ist die Sprache, die sich wie Python mit externen C-Prgrammen erweitern läßt oder es erlaubt, den Interpreter in C-Programmen einzubinden. Außerdem gibt es Tcl/Tk auf jeder Plattform auf der es auch Python gibt (schließlich benutzt Python ja die Tk-Bibliothek von Tcl Smile. Tcl kennt jedoch nur einen Datentyp, den String, und ich persönlich finde die Syntax etwas krude. Das Angebot an Bibliotheken und zusätzlicher Software für GUI-Programmierung ist für Tcl/Tk (unter UNIX) zur Zeit noch größer als für Python.

...Lisp und Scheme

Lisp und Scheme sind die führenden funktionalen Sprachen und im Bereich der KI immer noch weit verbreitet. Mir reichen allerdings die funktionalen Konstrukte in Python völlig und in Lisp oder Scheme werde ich erst programmieren, wenn das Klammerschlußgesetz in Kraft getreten ist. (Um mir nicht den Zorn der Lispianer zuzuziehen: Dies ist natürlich eine rein persönliche Geschmacksfrage!) Smile

Und da selbst Mark Watson, einer der Scheme Gurus, zu Java geschwenkt ist...

Woher nehmen und nicht stehlen?

Die beste Anlaufstelle für alle Python betreffenden Fragen ist natürlich die Python Homepage. Hier gibt es Links zu den »Special Interst Groups« ebenso, wie Tutorials, Bibliotheken und sonstige Informationen zu Python. Und hier kann man natürlich legal und völlig kostenlos die jeweils neueste Version von Python herunterladen.

Weitere Informationen zu Python kann man in folgenden Büchern erhalten:

  • Matthias Kalle Dahlheimer: Linux. Wegweiser zur Programmierung & Entwicklung, Köln (O'Reilly) 1997, zitiert als [DAHL97]
  • Martin von Löwis, Nils Fischbeck: Das Python-Buch: Referenz der objektorientierten Skriptsprache für GUIs und Netzwerke, Bonn (Addison-Wesley) 1997, zitiert als [LOEW97]
  • Kenneth M. McDonald: The Quick Python Book, 1998 (beta-Version im WWW - Die URL muß ich noch raussuchen Smile, zitiert als [McDO1998]
  • Mark Lutz: Programming Python, Cambridge MA (O'Reilly) 1996, zitiert als [LUTZ96]
  • Guido van Rossum: Python Tutorial Release 1.5, 1997, zitiert als [ROSS97]
  • Aaron Watters, Guido van Rossum, James C. Ahlstrom: Internet Programming with Python, New York (M&T Books) 1996, zitiert als [WATT96]

Die den Büchern beiliegenden CD-Roms enthalten zum Teil allerdings veraltete Python-Versionen. Aktuell ist Version 2.0 und die Beispiele dieses Kurses habe ich mit der Version 2.0 für den Macintosh erstellt und unter 2.0 unter Windows 95 (auf einem Toshiba Libretto Smile und Linux (SuSe Distribution 7.0) getestet.

Da wir intensiv mit der Tk-Bibliothek für grafische Benutzeroberflächen arbeiten, sollten sie auf Ihrem Rechner auch Tcl/Tk in der neuesten Version installiert haben. Auf dem Mac erledigt der Installer das für Sie mit.

Installation

Auf dem Macintosh ist die Installation sehr einfach. Sie wählen je nach Ihrem Macintosh aus, ob Sie die PPC oder die 68k-Version von Python vom Server ziehen wollen. (Falls Sie Ihren Mac in den letzten vier Jahren gekauft haben, ist es ein PowerMac und sie benötigen die PPC-Version Smile. Nach dem Download müssen Sie zuerst (falls Ihr Downloadprogramm das nicht schon für Sie erledigt hat) die Datei mit StuffIt-Expander oder einem ähnlichen Programm entpacken entpacken. Danach erhalten Sie einen Installer, den Sie einfach doppelklicken. Den Rest erledigt der Installer für Sie - inklusive der bei früheren Distributionen noch notwendigen Konfiguration der SharedLibs.

Auch unter Windows erledigt ein Installer die gesamte Arbeit für Sie. Aber auch hier müssen Sie mit WinZIP oder einem ähnlichen Programm die Distribution erst entpacken.

Und unter Linux habe ich die Instalation mit dem SuSE-Paket Yast vorgenommen.






Werbung: