Sie sind auf Seite 1von 14

Stefan Uhr

Web-Programmierung mit Python

Proseminar Webtechnologien
SoSe 2005

Technologien zur Web-Programmierung - Python


von Stefan Uhr Matrikel-Nr. 688435 Angewandte Informatik - Elektrotechnik

Zusammenfassung Diese Ausarbeitung ber Technologien zur Web-Programmierung soll in die Sprache Python einfhren. Hierbei wird ein besonderes Augenmerk auf das Konzept und die Architektur von Python gelegt. Auerdem wird Python mit den Sprachen PHP und Java verglichen. Zum Schluss wird aus den Ausfhrungen ein Fazit gezogen.

Stefan Uhr

Web-Programmierung mit Python

Inhalt
1 Einfhrung in Python
1.1 1.2 1.3 1.3.1 1.3.2 1.3.3 1.3.4 1.3.5 Was ist Python? Die Entwicklung von Python Eigenschaften von Python Objektorientierte Sprache Skriptsprache Interpretierte Sprache Plattformunabhngigkeit Verfgbarkeit

2 Konzept und Architektur


2.1 2.1.1 2.1.2 2.1.3 2.1.4 2.2 2.2.1 2.2.2 2.2.3 2.2.4 2.2.5 2.2.6 2.2.7 Konzept und Ziele von Python Einfache und bersichtliche Syntax Erweiterbarkeit durch Module Mchtigkeit durch umfangreiche Bibliotheken Untersttzung von verschiedenen Programmierformen Die Architektur von Python Dynamische Vergabe von Datentypen Formatierung durch Einrckung Elementare Datentypen Klassen und Methoden Vererbung Ausnahmebehandlung Speicherbereinigung

3 Anwendungsbereiche
3.1 3.2 3.3 3.4 3.5 Web-Applikationen mit Zope Internet-Protokolle Datenbanken Mathematik und Statistik GUI-Programmierung

4 Vergleich mit PHP und Java 5 Zusammenfassung

Stefan Uhr

Web-Programmierung mit Python

1 Einfhrung in Python
1.1 Was ist Python?
Python ist eine interpretierte, objektorientierte Programmiersprache. Sie wird hufig als Skriptsprache fr Webanwendungen eingesetzt. Python ist Open-Source Software und kann unter verschiedenen Plattformen eingesetzt werden. Alle bisherigen Implementierungen der Sprache bersetzen den Quelltext eine Python-Programmes in einen Zwischencode, auch Bytecode genannt, der dann von einem Interpreter ausgefhrt wird. Python kombiniert Mchtigkeit mit einer sehr klaren, einfachen Syntax und kann systematisch durch Module erweitert werden, welche entweder in Python selbst oder aber auch in einer kompilierten Sprache wie C oder C++ geschrieben werden knnen [1].

1.2 Die Entwicklung von Python


Python wurde Anfang der neunziger Jahre von Guido van Rossum in den Niederlanden entwickelt, als dieser eine Testumgebung fr ein Betriebssystem brauchte, an dem er gerade arbeitete. Ironischer weise erinnert sich heute kaum noch jemand an dieses Betriebssystem namens Amoeba. Die quasi als Nebenprodukt entwickelte Programmiersprache Python erfreut sich jedoch heute zunehmender Beliebtheit. Der Name "Python" stammt brigens von der englischen Comedy-Truppe "Monty-Python". Trotzdem wird als Symbol meist die bekannte Schlange verwendet, dies ist jedoch nicht offiziell. Python liegt aktuell in der Version 2.4.1 vom 30. Mrz 2005 vor.

1.3 Eigenschaften von Python


Die sogenannten High-Level-Sprachen der vierten Generation, zu denen auch Python zhlt, gelten als leicht erlernbar und bieten Ausnahmebehandlung, Fehlerverfolgung und Speicherverwaltung.

1.3.1 Objektorientierte Sprache Python wurde von Anfang an als objektorientierte Sprache entwickelt. Objektorientierung bedeutet grob gesagt, dass der Programmcode nicht hierarchisch (sequenziell) von oben nach unten abgearbeitet wird, sondern sich Teile des Programms in Klassen zusammenfassen lassen. Man definiert also fr eine sich fter wiederholende Funktion eine Klasse, die diese ausfhrt. In Python ist eine Klassendefinition jedoch nicht zwingend vorgeschrieben, wie dies beispielsweise in Java der Fall ist. Man kann also in Python auch prozedural programmieren.

1.3.2 Skriptsprache Python ist zwar nicht als reine Skriptsprache entwickelt worden, es eignet sich jedoch aufgrund seines modularen Aufbaus und der einfachen Syntax sehr gut als solche. Doch was genau sind Skriptsprachen? Historisch gesehen entstanden Skriptsprachen aus einfachen ShellProgrammiersprachen wie sh und awk. Skripte ermglichen Steueranweisungen zur 3

Stefan Uhr

Web-Programmierung mit Python

Automatisierung unterschiedlichster Aufgaben wie beispielsweise Systemverwaltung sowie Konfiguration und Erstellung von benutzerdefinierten Abrufen [2, S.12]. Vor allem im Bereich der Web-Anwendungen finden Skripte Verwendung. Hier hat sich Python in den letzten Jahren als zuverlssige, flexible Sprache behaupten knnen.

1.3.3 Interpretierte Sprache Interpretierte Sprachen wie Python werden im Gegensatz zu den kompilierten Sprachen nicht in reinen Maschinencode bersetzt, sondern von einem speziellen Programm - einem sog. Interpreter gelesen und ausgefhrt. Ein groer Nachteil ist dabei die Geschwindigkeit. Kompilierte Programme laufen in der Regel viel schneller, da sie nicht mehr Zeile fr Zeile interpretiert werden mssen. Eine interpretierte Sprache bringt jedoch auch viele Vorteile mit sich. So kann auf das zeitaufwndige Kompilieren verzichtet werden, was inbesondere bei groen Programmen sehr lange dauert. Auerdem ergibt sich die Mglichkeit Fehlerprfungen zur Laufzeit durchzufhren. Dies beschleunigt die Entwicklung meist erheblich.

1.3.4 Plattformunabhngigkeit Als weiterer Vorteil der Interpretersprachen gilt die Plattformunabhngigkeit. Weil der Programmcode nicht fr eine spezielle Umgebung bersetzt wurde, kann man das Programm auf eine beliebige andere Plattform transferieren, einen vorhandenen Interpreter vorausgesetzt. Interpreter fr Python gibt es fr beinahe jedes Betriebssystem, vor allem natrlich fr die wichtigsten, nmlich Windows, Linux/Unix und Mac OS. Mittlerweile existiert sogar eine Version fr einige PDAs.

1.3.5 Verfgbarkeit Python ist, wie bereits erwhnt, fr verschiedene Plattformen verfgbar. Bei Linux-Systemen ist es meist vorinstalliert, unter Windows muss man es zunchst herunterladen. Ein wichtiger Aspekt ist die Lizenz unter der Python steht. Dies ist die sog. "Python Licence", eine Open-Source Lizenz hnlich der bekannten GPL. Damit ist gewhrleistet, dass jeder Python einsetzen kann wo er will und das Recht hat, die Sprache beliebig zu erweitern. Auch fallen keine Lizenzkosten an. In der Grundausstattung liefert Python einen Interpreter fr die Kommandozeile mit - den selbst in Python geschriebenen Editor IDLE (Integrated DeveLopment Environment). Darber hinaus gibt es viele Editoren, die Syntax-Highlighting fr Python beherrschen, sowie einige Umgebungen mit erweiterten Fhigkeiten, die fr die Entwicklung mit Python benutzt werden knnen. Die meisten davon sind kostenlos (Freeware). Hier nun eine kleine bersicht, die keinerlei Anspruch auf Vollstndigkeit erhebt:

Stefan Uhr
Editoren SciTE UltraEdit Emacs Nedit IDEs Jedit PyPE DrPython Eric3 SPE Boa Constructor PythonWin Wing Linux X X X Linux X X X X X X X Windows X X MacOS

Web-Programmierung mit Python


Freeware X X X Freeware X X X X X X X

Windows X X X X X X X

MacOS X X X X

Tabelle1: IDE's fr Python

2 Konzept und Architektur


2.1 Konzept und Ziele von Python
Python wurde mit dem Ziel entworfen mglichst einfach und bersichtlich zu sein. Dies wird durch zwei Dinge erreicht: Zum einen enthlt die Sprache einen sehr mchtigen Funktionsumfang in nur wenigen Schlsselwrtern, zum anderen wurde die grammatische Syntax reduziert und auf bersichtlichkeit optimiert. Dies fhrt dazu, dass Python eine Sprache ist, in der man schnell, einfach und leicht programmieren kann. Sie ist daher besonders da geeignet, wo bersichtlichkeit und Lesbarkeit des Codes eine herausragende Rolle spielen - z.B. in der Teamarbeit, wenn man sich Code nach lngerer Zeit wieder anschaut, oder bei Anfngern des Programmierens [1]. "Nichts an Python ist grundstzlich neu. Das Geniale liegt in einer gelungenen Auswahl von Ideen, die aus zum Teil weit auerhalb des Mainstream verlaufenden Entwicklungen stammen." [3]

2.1.1 Einfache und bersichtliche Syntax Python wurde von Anfang an bewusst mit einer sehr einfachen und damit bersichtlichen Syntax entworfen. Damit ist es besonders fr Anfnger in der Programmierung geeignet. Beispielsweise wird auf Klammern zur Abgrenzung von Blcken verzichtet. Ebenso entfallen Zeichen am Ende von Anweisungen wie z.B. das Semikolon. Darber hinaus besitzt Python sprbar weniger syntaktische Konstruktionen als viele strukturierte Sprachen wie C, Perl oder Pascal. Es kennt z.B. nur zwei Schleifenformen. Dadurch werden viele Programmierfehler bereits von Anfang an ausgeschlossen.

Stefan Uhr 2.1.2 Erweiterbarkeit durch Module

Web-Programmierung mit Python

Skriptsprachen arbeiten modular, Programme knnen in einzelne Teilmodule zerlegt werden. Bibliotheken bieten Modulsammlungen fr hufig wiederkehrende Aufgaben [2, S.13]. Die Sprache Python wird mit einer Menge von Modulen geliefert, die Python-Programmierern einen groen Funktionsumfang bereitstellen. Jedes Modul ist eine Sammlung von Python-Funktionen, Daten und Klassen zu einem bestimmten Zweck, wie beispielsweise mathematische Berechnungen oder regulre Ausdrcke [4]. Einige Module sind als Standard-Module fest eingebaut. Weitere kann man mit dem Befehl import einbinden. Es besteht auch die Mglichkeit selbst Module zu erstellen und diese zu verwenden. Damit ist Python hochgradig flexibel und lsst sich sehr gut auf die entsprechenden Bedrfnisse anpassen.

2.1.3 Mchtigkeit durch umfangreiche Bibliotheken Die von Python verwendeten Module werden in einer Bibliothek gespeichert. Python verfgt bereits ber eine umfangreiche Standardbibliothek, in der Module fr alle wichtigen Funktionen bis hin zur GUI-Programmierung vorhanden sind. Dies liegt an der sogenannten batteries-included -Philosophie von Python. Damit ist gemeint, dass man die Batterien, also die bentigten Module, mitliefert, um sofort mit sinnvollen Programmieraufgaben beginnen zu knnen. Die Bibliothek kann, wie bereits erwhnt, mit anderen Modulen erweitert werden, die nicht zum Standard-Umfang gehren. Diese Module knnen wahlweise in C oder Python selbst geschrieben sein [1]. Durch seine groe Bibliothek ist Python eine sehr mchtige und vielseitig verwendbare Sprache.

2.1.4 Untersttzung von verschiedenen Programmierformen Um die typische erste bung eines jeden Programmier-Kurses zu absolvieren, nmlich ein Programm zu schreiben, welches "Hello World" auf dem Bildschirm ausgibt, bedarf es bei Python keiner groen Anstrengung, denn dies ist denkbar einfach: print "Hello World" Dieses Beispiel zeigt, dass es in Python nicht zwingend notwendig ist, eine Klasse zu erzeugen; man kann stattdessen auch funktional programmieren. In Java she ein Programm mit dem selben Ergebnis wesentlich komplizierter aus, vom Zeitaufwand einmal abgesehen: public class HelloWorld { public static void main(String[] args) { System.out.println("Hello World"); } } Natrlich knnte man das Programm "Hello World" in Python ebenfalls objektorientiert realisieren, man wird jedoch nicht dazu gezwungen. Ob man dies eher als Vorteil oder als Nachteil sieht, ist jedem Programmierer selbst berlassen. 6

Stefan Uhr

Web-Programmierung mit Python

2.2

Die Architektur von Python

Im folgenden Abschnitt wird die grundlegende Architektur von Python kurz vorgestellt. Bei Python sind einige Dinge anders gelst als bei anderen bekannten Programmiersprachen. Diese Besonderheiten sollte man kennen.

2.2.1 Dynamische Vergabe von Datentypen In Python ist eine Zuweisung der Form Alter = 24 kein Problem. Es muss kein expliziter Datentyp angegeben werden. Die Sprache weist dem Wert selbst einen passenden Datentyp zu. Der Datentyp ist an den Wert gebunden und nicht an eine Variable, d.h. Datentypen werden dynamisch vergeben. Auch eine Typumwandlung findet automatisch statt. Addiert man beispielsweise zwei Zahlen mit unterschiedlichen Datentypen, so wird dem Ergebnis einfach der in der Rangfolge der Sprache festgelegte, hherwertigere Typ zugewiesen. Dieser Automatismus vereinfacht das Programmieren meist erheblich.

2.2.2 Strukturierung durch Einrckung In Python werden zusammengehrige Anweisungen (Blcke) nicht durch Klammern begrenzt, sondern durch Einrckung. Die Regel ist dabei denkbar einfach: alle nachfolgenden Zeilen, die tiefer eingerckt sind als die Kopfzeile gehren zum selben Block. Dabei muss die Einrcktiefe der Zeilen natrlich gleich sein. Dies begrenzt auch die Gltigkeit der in diesem Block verwendeten Namen. Durch diese strikte Einrckung zur Blockbildung bekommt man auch quasi automatisch ein schnes und bersichtliches Layout. Vor allem Anfnger tun sich hiermit oft leichter als mit undurchsichtigen Formatierungsregeln. Eine weitere Regel besagt, dass eine Anweisung immer mit dem Zeilenende endet. Daher braucht es kein spezielles Zeichen, wie etwa ein Semikolon um dem Interpreter das Ende der Anweisung mitzuteilen. Immer wenn zu einer Anweisung eine Folge von Anweisungen gehrt (z.B. bei einer Schleife), so endet diese Anweisung mit einem Doppelpunkt.

2.2.3 Elementare Datentypen In Python gibt es drei Sammelgruppen von Datentypen. Diese werden weiter unterteilt. Skalare Skalare haben als Untertypen alle Zahl-Typen. Zahlen werden unterteilt in ganze Zahlen (integer), Gleitkommazahlen (floating point numbers), beliebig groe ganze Zahlen (large integers) und komplexe Zahlen (complex numbers) [5, S.41]. Ganze Zahlen sind meist 32-Bit Zahle, whrend groe ganze Zahlen nahezu beliebig gro sein drfen. Gleitkommazahlen entsprechen dem Datentyp double aus C. Komplexe Zahlen wurden erst 7

Stefan Uhr

Web-Programmierung mit Python

nach lngerer Diskussion als elementarer Datentyp eingefhrt. Beispiele: zahl = 34 komma = 4.567 komplex = (4-5j) Sequenzen Sequenz ist ein Sammelbegriff fr Datentypen, die aus linear geordneten Elementen bestehen und auf die in identischer Weise zugegriffen wird. Hierzu zhlen Texte, Tupel und Listen, wobei Texte wiederum nur ein Oberbegriff fr die beiden Datentypen string und unicode ist. Diese Datentypen werden auch deshalb unter dem Oberbegriff Sequenz zusammengefasst, weil sie fast alle die gleichen Methoden kennen. Beispielsweise kann man sowohl ber die Zeichen einer Zeichenkette (string) als auch ber die Elemente einer Liste iterieren [1]. Python unterscheidet nicht zwischen Zeichen und Zeichenketten, jedes einzelne Zeichen ist eine Zeichenkette. Zeichenketten werden durch einfache oder doppelte Anfhrungszeichen eingefasst, das jeweils andere Zeichen darf innerhalb des Strings verwendet werden [2, S.46]: S1 = " Monty sagt Hallo. " S2 = Monty sagt "Hallo". Tupel sind Gruppierungen beliebiger Objekte zu einer festen, unvernderbaren Einheit. Sie kommen immer dann zum Einsatz, wenn ein Paar oder eine konstante Menge von Objekten gemeinsam verwaltet oder als Parameter bergeben wird. Hugstes Einsatzgebiet sind Vektoren und Positionsangaben [2, S.50]. Tupel sind nicht vernderbar. Wrterbcher Hier gibt es bei Python nur eine Form, nmlich die sog. assoziativen Feldern (dictionaries). Wrterbcher sind vernderbare Folgen von Objekten. Sie werden ber einen Schlssel angesprochen. Als Schlssel knnen beliebige Objekte verwendet werden auer vernderbaren Folgen und Dictonaries. Ein Dictionary ist also eine Menge von Schlssel-Wert-Paaren. Es wird in geschweiften Klammern notiert; ber die Schlssel wird auf die Werte zugegriffen. Zwischen Schlssel und Wert steht ein Doppelpunkt; die Paare werden durch Kommata getrennt. D = { 1: 'Hello', 2: 'World'} Die Wrterbcher sind mit den Hash-Tabels aus Java vergleichbar.

2.2.4 Klassen und Methoden Klassen werden in Python mit dem Schlsselwort class gefolgt von einem frei whlbaren Namen und einem Doppelpunkt definiert. Anschlieend folgt in der nchsten Zeile eingerckt die eigentliche Definition. Der Konstruktor __init__ (man beachte die Unterstriche) erzeugt eine neue Instanz. Die Verbindung von Objektinstanz und Klasse geschieht dabei implizit.

Stefan Uhr

Web-Programmierung mit Python

Die Methoden sind Funktionen der Klasse, sie werden mit Hilfe des Schlsselwortes def definiert. Methoden haben mindestens einen Parameter, dies ist das Objekt selbst. Meistens wird dieser Parameter self genannt, es kann natrlich auch ein anderer Name gewhlt werden. Die Parameter werden in runden Klammern durch Kommata getrennt angegeben. Ein Destruktor findet selten Verwendung, da er aufgrund der in Python eingebauten Speicherbereinigung meist unntig ist. Sollte er doch einmal gebraucht werden, kann man ihn mit def __del__ erzeugen. Python ist objektorientiert, doch gibt es keine alle Typen umfassende Klassenhierarchie. Alle Daten und Programmkomponenten sind Objekte, ohne notwendigerweise einer Klasse angehren zu mssen. Auch ganz unterschiedliche Typen knnen sich konform verhalten und die selben Funktionen gewhrleisten. Die Objekte sind also nicht klassenzugehrig. Innerhalb der Methoden ist der Zugriff auf Klassenattribute (zu denen auch die Methoden gehren) nur durch Qualifikation mit dem Klassennamen, auf Attribute der Klassenausprgungen (Instanzen) nur durch Qualifikation mit dem self-Parameter mglich [3].

2.2.5 Vererbung Eine Klasse kann ihre Eigenschaften und Methoden an eine andere Klasse vererben. Dieser Mechanismus wird in der Objektorientierung hufig angewandt. Wird eine Klasse von einer anderen abgeleitet, so wird der Name der Basisklasse in Klammern hinter dem Namen der abgeleiteten Klasse angegeben. Eine Methode der Basisklasse kann in einer abgeleiteten Klasse berschrieben werden. Die aufgerufene Methode wird zunchst in der Klasse des Objektes gesucht. Wenn sie dort nicht vorhanden ist, wird die Suche in der zugehrigen Basisklasse fortgesetzt. Eine abgeleitete Klasse kann wiederum die Basisklasse fr eine weitere Klasse sein. Dadurch ergibt sich eine Vererbung ber mehrere Ebenen. Eine Klasse kann auerdem von mehreren Basisklassen abgeleitet sein. Damit ist in Python eine Mehrfachvererbung ausdrcklich erlaubt.

2.2.6 Ausnahmebehandlung Python untersttzt (und nutzt ausgiebig) die Ausnahmebehandlung (Exception Handling) als ein Mittel, um Fehlerbedingungen zu testen. Dies ist so weit in Python integriert, dass es sogar mglich ist, Syntaxfehler abzufangen und zur Laufzeit zu behandeln. Wenn das System einen Fehler feststellt, wird eine Ausnahme generiert. Nun wird nach der Behandlung der Ausnahme gesucht. Rechnet man in einem Programmstck mit einer Ausnahme, kann man dieses Stck in einen tryexcept-Block einschlieen. In Python gibt es drei Arten von Ausnahmen: Strings, Klassen und Instanzen. Die Suche nach der richtigen Behandlung hngt vom Ausnahmetyp ab. Falls die Ausnahmen Klassen oder Klasseninstanzen sind, bercksichtigt die Suche auch die Vererbungshierarchie [5, S.34 ff].

2.2.7 Speicherbereinigung Die Speicherbereinigung (Garbage Collection) ist bei Python ebenso wie bei Java weitgehend automatisiert. Dies bedeutet, dass sich der Programmierer im Normalfall keine Gedanken ber nicht mehr bentigte Attribute und Objekte machen muss. Ohne dass der Programmierer etwas davon merkt, wird regelmig eine Speicherbereinigung durchgefhrt. 9

Stefan Uhr

Web-Programmierung mit Python

"Die Speicherverwaltung arbeitet verglichen mit Java schnell und macht sich auch bei speicherintensiven Anwendungen nicht durch lange Programmpausen, wie sie etwa in Java oft zu beobachten sind, bemerkbar." [2, S.93]

3 Anwendungsbereiche
Python kann dank seiner o.g. Funktionen und Leistungsmerkmale in vielen Bereichen eingesetzt werden. Eine der bekanntesten Anwendungen drfte der vollstndig in Python geschriebene Webanwendungsserver (Application Server) Zope sein. Aber es gibt noch vielfltige weitere Anwendungsgebiete.

3.1 Web-Applikationen mit Zope


Zope stellt eine Plattform fr die Realisierung von Internetanwendungen dar und eignet sich sehr gut zum Erstellen von dynamischen Webauftritten, da es prinzipiell darauf ausgerichtet ist, den Inhalt von der Gestaltung der Website zu trennen. Leistungsmerkmale von Zope sind unter anderem die Erweiterbarkeit durch sog. Produkte, eine Objekt-Datenbank fr dynamisch-vernderliche Inhalte, die Integration verschiedener Entwicklungssprachen, ein ausgefeiltes SicherheitsFramework, der eigene Webserver Zserver, welcher auch hinter einem Apache-Webserver betrieben werden kann, sowie die Multithreading-Fhigkeiten [7]. Bekannte Anwender von Zope sind die Wochenzeitung "Die Zeit", die US Navy, die NATO, die Volkswagen AG, Lufthansa sowie mehrere Universitten. In Kombination mit dem ContentManagement-System Plone steht dem Anwender eine erstklassige Applikation zur Verfgung.

3.2 Internet-Protokolle
Die schnelle und einfache Entwicklung von Speziallsungen fr Netzwerk- und Internetanwendungen ist heute ein wichtiges Einsatzgebiet von Skriptsprachen. Noch ist Perl die derzeit meist eingesetzte Sprache, jedoch entdecken immer mehr Entwickler die von Python gebotenen Mglichkeiten. Python besitzt eine breite Untersttzung fr die folgenden Internet-Protokolle:

TCP / IP FTP NNTP HTTP E-Mail (POP, SMTP, IMAP) Parser fr HTML, MIME, E-Mail SGML- / XML-Verarbeitung Kommunikation mit Webbrowsern CGI-Entwicklung

10

Stefan Uhr

Web-Programmierung mit Python

3.3 Datenbanken
Zur Nutzung von Datenbanken steht dem Entwickler eine gute Auswahl an Bibliotheken zu Verfgung. Es gibt zahlreiche Varianten an Schnittstellen zu einfachen Objektspeichern und relationalen Datenbanken, wie MySQL, DBASE, Oracle oder Informix [2, S.79 f]. Die Programmier-Schnittstelle ist von der Datenbank vorgegeben und muss lediglich an Python angepasst werden. Aufgrund der sehr guten XML-Untersttzung, wird Python auch oft als Bindeglied fr die XML-Datenverarbeitung und Visualisierung eingesetzt. Obwohl die Benutzung von relationalen Datenbanken zusammen mit Python nicht schwer ist, wre es manchmal schn, das ganze mehr objektorientiert zu gestalten und sich nicht mit Tabellen und SQL beschftigen zu mssen. Hier hilft PyORQ. Es ermglicht das Speichern und Abfragen von Python-Objekten in relationalen Datenbanken. Man kann mit Python-Ausdrcken Datenbanken abfragen und braucht so kein SQL mehr zu verwenden. Momentan werden SQLite, MySQL und PostgreSQL untersttzt.

3.4 Mathematik und Statistik


Fr mathematische und statistische Aufgabenstellungen sind einige hundert freie Bibliotheken vorhanden, beispielsweise stats fr statistische Funktionen, disipy zur Visualisierung. Das Angebot ist insgesamt sehr gro und deckt weite Bereiche der Mathematik, Physik, Chemie und weiterer Naturwissenschaften ab. Ebenso sind Schnittstellen zu verbreiteten Programmen wie Mathematica und Gnuplot erhltlich. Einen besonderen Bekanntheitsgrad hat die Bibliothek numeric erlangt. Numeric ist in C implementiert und erweitert Python um hocheffiziente Funktionen fr Berechnungen an Feldern und Matrizen. Damit lt sich die Interaktivitt und die elegante Syntax von Python mit der ntigen Performance fr umfangreiche mathematische Berechnungen kombinieren. Mit diesen Bibliotheken wird im professionellen Umfeld gearbeitet, beispielsweise vom Fermilab [2, S.80].

3.5 GUI-Programmierung
Kaum ein kommerzielles Programm kommt heute ohne grafische Benutzeroberflche aus. Python bietet dem Entwickler viele Mglichkeiten, um ein Programm mit einer grafischen Benutzeroberflche auszustatten. Im Folgenden werden einige bekannte Bibliotheken kurz erlutert: Tkinter Tkinter ist das Standard GUI Toolkit, das bei Python mitgeliefert wird. Es ermglicht GUI Programme zu schreiben, die das Tk von Tcl benutzen. wxPython wxPython ist der Python Wrapper fr wxWidgets. wxWidgets ist ein Framework, dass neben GUI auch andere praktische Dinge kann.

11

Stefan Uhr PyQt

Web-Programmierung mit Python

PyQt ist der Wrapper fr Qt. Qt ist eine Grafikbibliothek, die vom KDE-Projekt verwendet wird.

4 Vergleich mit PHP und Java


Nun folgt ein Vergleich zwischen den Programmiersprachen Python, PHP und Java, wobei man eigentlich an einigen Stellen mit Java-Script vergleichen muss.

4.1 Vergleich zwischen PHP, Java und Python


Die beiden Sprachen Java und Python wurden bereits von vorn herein als objektorientierte Sprachen entworfen und sind deshalb sehr vielseitig einsetzbar. Bei PHP ist dies nicht der Fall. Es wurde ursprnglich nur als Skriptsprache entwickelt und bekam erst mit der aktuellen Version 5.0 akzeptable, jedoch keinesfalls fr die professionelle Programmierung ausreichende, objektorientierte Implementierungen. Durch diese Einschrnkung wird PHP fast ausschlielich als Skriptsprache im Bereich der Web-Anwendungen eingesetzt. PHP konnte sich durch seine vielfltigen Mglichkeiten und seine einfache und schnell erlernbare Syntax sehr schnell verbreiten und geniet heute einen guten Ruf, wenn es um die Erstellung dynamischer Webseiten geht. Die bekannte Abkrzung LAMP, bestehend aus den Komponenten Linux (Betriebssystem), Apache (Webserver), MySQL (Datenbank) und PHP (Skriptsprache) zeigt die groe Akzeptanz vom PHP im Bereich der Web-Programmierung. Das P von LAMP wird jedoch auch zunehmend mit Python bersetzt, da Python sich in den letzten Jahren ebenfalls stark verbreitet hat. Auch bei der Ausfhrung ergeben sich wichtige Unterschiede. So werden Java-Skripte und PythonSkripte auf dem Client, d.h. dem Rechner des Internet-Nutzers ausgefhrt, whrend PHP auf dem Server interpretiert wird. Dieses Verfahren hat Vor- und Nachteile. Bei einer Ausfhrung auf dem Server hat man den Vorteil, dass die Seite bei jedem Benutzer, in Abhngigkeit vom verwendeten Browser, gleich aussieht. Jedoch steigt gerade bei stark frequentierten Servern die Belastung an, da das Skript bei jeder neuen Anfrage erneut ausgefhrt werden muss. Diese Belastung fllt natrlich bei einer Client-seitigen Ausfhrung weitgehend weg. Dadurch erhht sich auch die Geschwindigkeit. Auerdem ist zu beachten, dass bei einer clientseitigen Ausfhrung zustzliche Software (Interpreter) auf dem Rechner installiert sein muss. PHP hat bislang keinen Applikations-Server. Das heit, alle Variablen mssen bei jedem Aufruf wieder neu geladen bzw. berechnet werden [8]. Python dagegen hat in der Kombination mit Zope einen starken und leistungsfhigen Applikations-Server, der sich auch international bereits durchgesetzt hat. PHP und Python sind freie Software (Open-Source), whrend Java von Sun vermarktet wird. Da es mehrere Java Compiler und Interpreter gibt, kommt es immer wieder zu Problemen mit der Lauffhigkeit von Programmen. So warnt beispielsweise Richard Stallman, der Grnder der FSF (Free Software Foundation) vor der Java-Falle. Wenn Entwickler nun Java-Programme schreiben und dazu das SDK von Sun einsetzen, dann kann es leicht passieren, da sie Features verwenden, 12

Stefan Uhr

Web-Programmierung mit Python

die in freien Implementierungen noch nicht existieren. Damit ist das Programm in der Java-Falle gefangen. Es lt sich nicht nutzen ohne die proprietre Software von Sun. Die Situation lt sich verallgemeinern auf alle Programme, die von unfreien Komponenten abhngen. So ist ein freies Programm, das unter Windows luft, von geringem Nutzen fr die Anwender freier Betriebssysteme [9]. Die Sprachen PHP, Python und Java haben jedoch auch viele Gemeinsamkeiten. Alle drei Sprachen sind plattformunabhngig und laufen auf nahezu jedem System. Sie gelten alle als leicht erlernbar und besitzen eine einfache Syntax. Wobei ich subjektiv sagen wrde, dass die Syntax von Python noch um einiges leichter zu lernen ist als die von PHP oder Java. Es gibt aber noch mehr Gemeinsamkeiten. Alle drei Sprachen sind interpretierte Sprachen, die von einem Interpreter ausgewertet werden. Sie verfgen ebenfalls alle ber eine groe Bibliothek, wobei die von Java die grte sein drfte. Auerdem sind alle drei sehr gut dokumentiert und es finden sich unzhlige Seiten mit hilfreichen Anleitungen im Internet. Fr Java, Python und PHP gibt es fr jede Plattform mehrere Entwicklungsumgebungen, die dem Programmierer die Arbeit erleichtern.

5 Zusammenfassung
Bei der Beschftigung mit der Programmiersprache Python kommt man zu dem Schluss, dass dies eine sehr ausgereifte, durchdachte Sprache ist, die sich bei weitem nicht nur fr ProgrammierAnfnger eignet. Jedoch sind gerade die einfache Syntax und der Zwang zu einer logischen Struktur fr Neulinge sehr empfehlenswert. Die Sprache macht aber auch generell eine gute Figur, da sie durch ihr modulares Konzept und die groe mitgelieferte Bibliothek sehr mchtig ist und in vielen Bereichen von Web-Anwendungen bis zu mathematisch-technischen Bereich zum Einsatz kommen kann. Gerade im Vergleich mit PHP und Java (Script) zeigt sich, dass Python einige Vorteile bietet, die die Konkurrenten nicht aufweisen knnen. Hier sind z.B. die Integration von komplexen Zahlen als Basistyp und die dynamische Typzuweisung und -Umwandlung zu nennen. Durch die Mglichkeit der interaktiven Arbeit mit dem Python-Interpreter ist eine schnelle und leistungsfhige SoftwareEntwicklung mglich. Auch in den Punkten Mchtigkeit, Funktionsvielfalt, Dokumentation und Verbreitung, drfte Python den beiden anderen bald nicht mehr hinterher hinken. Der Vorsprung von PHP und Java auf diesen Gebieten ist bereits jetzt denkbar knapp. Zudem scheint Python weniger Sicherheitsprobleme zu haben. Fazit: Wer Programmieren lernen will, oder nach einer interessanten Alternative zu Java oder C++ sucht, der sollte sich Python einmal nher ansehen.

13

Stefan Uhr

Web-Programmierung mit Python

Literaturverzeichnis

[1]

Auszge aus Wikipedia - die freie Enzyklopdie: Python <http://de.wikipedia.org/wiki/Python_%28Programmiersprache%29> Linkweiler, Ingo: Eignet sich die Skriptsprache Python fr schnelle Entwicklungen im Softwareentwicklungsprozess ? - Diplomarbeit - Siegen, 2002 <http://www.icc-computer.de/ingo/diplom/Diplomarbeit.pdf> Fischbach, Rainer: Beschrnkung aufs Wesentliche - iX 11/1999, S. 184 <http://www.heise.de/ix/artikel/1999/11/184/> Python Module - Icoya OpenContent by struktur AG <http://www.icoya.com/documentation/PageTemplates/de/advanced_templates_15.html> von Lwis, Martin; Fischbeck, Nils: Python 2 - Einfhrung und Referenz der objektorientierten Skriptsprache - 2.Auflage - Addison-Wesley, Mnchen, 2001 Arnold, Werner: Lieben Sie Python? - Log-in Ausgabe 2/2001 <http://www.log-in-verlag.de/wwwredlogin/Archiv/2001/2/Thema/> Auszge aus Wikipedia - die freie Enzyklopdie: Zope <http://de.wikipedia.org/wiki/Zope> Auszug aus Wikibooks - Website-Entwicklung mit PHP <http://de.wikibooks.org/wiki/Websiteentwicklung:_PHP:_Beschreibung> Pro-Linux.de - Richard Stallman warnt vor der Java-Falle <http://www.pro-linux.de/news/2005/8006.html>

[2]

[3]

[4]

[5]

[6]

[7]

[8]

[9]

14