Python Ausarbeitung - Skript
Python Ausarbeitung - Skript
Proseminar Webtechnologien
SoSe 2005
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
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
3 Anwendungsbereiche
3.1 3.2 3.3 3.4 3.5 Web-Applikationen mit Zope Internet-Protokolle Datenbanken Mathematik und Statistik GUI-Programmierung
Stefan Uhr
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.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
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
Windows X X X X X X X
MacOS X X X X
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.
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
2.2
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
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
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
"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.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
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.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
PyQt ist der Wrapper fr Qt. Qt ist eine Grafikbibliothek, die vom KDE-Projekt verwendet wird.
Stefan Uhr
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
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