Die Skriptsprache Python im Vergleich zu Perl und Tcl





Sven Goldschmidt
wi7502@fh-wedel.de
Fachhochschule Wedel
WS 99/00








Die Skriptsprache Python im Vergleich

[ Inhalt ] [ Allgemeiner Vergleich ] [ 2. Interpretierer ]

Allgemeiner Vergleich


1. Allgemeiner Vergleich

Um diese Sprachen gehts:

Python (Name von Monty Python's Flying Circus)
Autor: Guido van Rossum (Centre voor Wiskunde en Informatica (CWI) Amsterdam)
Python ist in C geschrieben, stammt aus der Modula-Familie und leiht sich Features aus Lisp, Smalltalk, FP und UNIX-Shells. Nichts wirklich neues. Rosinen aus vielen Kuchen zu einem uebersichtlichen Paket zusammengeschnuert.
Die "Python Software Activity" (PSA) (http://www.python.org) steuert die Weiterentwicklung und stellt im Internet umfangreiche Informationen zur Verfuegung.

Perl (Practical Extraction and Report Language)
Autor: Larry Wall
Ziel bei der Entwicklung war die Schaffung von Funktionen fuer allgemeine Anwendungsgebiete. Perl ist im Wesentlichen eine Synthese aus C und den UNIX-Funktionen sed und awk.
Unter http://www.perl.com laufen bei Perl die Faeden zusammen.

Tcl (Tool Command Language)
Autor: John Ousterhout (U.C. Berkeley / Sun Microsystems)
Die offizielle Tcl/Tk-Homepage findet man unter http://www.scriptics.com.


[ weiter ]   [ nach oben ]

1.1 Features

Die folgenden Fragen sollten bei der Auswahl einer Sprache gestellt werden:

  • Ist die Sprache portierbar?
    Alle drei Sprachen sind auf eine grosse Anzahl Plattformen portierbar.
  • Hat die Sprache grafische Benutzerinterfaces (GUIs)?
    Alle drei Sprachen koennen GUI-Anwendungen erstellen.
  • Ist die Sprache einfach zu erlernen / zu programmieren?
    Alle drei Sprachen sind relativ schnell zu erlernen und nehmen einem Low-Level-Aufgaben (z.B. Memory Management) ab.
  • Ist die Sprache fuer ein Spezialgebiet besonders geeignet?
    Perl konzentriert sich besonders auf die Unterstuetzung von allgemeinen Anwendungsgebieten (verfuegt ueber eingebaute regulaere Ausdruecke, Dateimanagement und Report-Funktionen).
    Python konzentriert sich auf Datenstrukturen, Objektorientierung und die Lesbarkeit des Codes und ist damit ein akzeptables Werkzeug des Software-Engineering.
    Das Steckenpferd von Tcl ist die grafische Benutzeroberflaeche.
    Alle diese Features werden aber von allen Sprachen in irgendeiner Form unterstuetzt.
    Besonders bei der Erstellung von Internet-Applikationen sind alle drei Skriptsprachen zu empfehlen.
  • Existierten bereits Programme / Module die verwendet werden koennen?
    Fuer alle Sprachen existieren eine Reihe von Modulen, die im Internet zur Verfuegung stehen. Sei es, um den ein oder anderen Schwachpunkt von implementierten Funktionen gegenueber anderen Sprachen auszugleichen oder neue Anwendungsgebiete zu erschliessen. Bevor man beginnt mehr oder minder grundlegende Funktionen zu programmieren, sollte man die entsprechenden Server und Newsgroups konsultieren (siehe Quellen).
  • Wie gross ist die Usergemeinde?
    Perl hat die groesste Usergemeinde. Python erfreut sich immer groesserer Beliebtheit. Man hat aber bei keiner der Sprachen Probleme eine Newsgroup oder Homepage zu finden, bei der man sich Rat holen kann.
  • Performance?
    Python wird die beste Performance nachgesagt. Tcl hat frueher alle Datentypen ausschliesslich als String gespeichert. - Performancetechnisch ein echter Klotz am Bein, muessen diese doch fuer die meisten Operationen zuerst umgewandelt werden. Seit der Version 8.0 ist dieses Problem behoben. Mehr zu diesem Thema unter dem Punkt 9. Performance.
  • Koennen vorhandene Applikationen eingebunden werden?
    Tcl wurde dafuer konstruiert in andere Applikationen eingebunden zu werden. Es ist ausserdem moeglich Code aus anderen Applikationen (z.B. aus C oder C++) in Tcl einzubinden. - Eine Frage der Performance.
    Python und Perl verfuegen ebenfalls ueber diese Moeglichkeiten.
  • Was kostets?
    Alle drei Sprachen sind frei verfuegbar. - Das soll sich in naher Zukunft auch bei keiner der Sprachen aendern.
  • Auf den ersten Blick gibt es also keinen wirklich zwingenden Grund, die Sprache zu wechseln, wenn man sich erstmal fuer eine entschieden hat.
    Diesen Eindruck gewinnt man auch im Internet. Im Bereich Skriptsprachen argumentiert man mit betont objektiven Statements. - Meistens.


    [ weiter ]   [ nach oben ]

    1.2 Python-Philosophie

    Python ist eine relativ junge Sprache und deckt dieselben Bereiche ab, auf die Tcl und Perl spezialisiert sind. Es stellt sich die Frage nach dem Sinn einer weiteren Skriptsprache. - Die Devise beim Design von Python lautete: Weniger ist mehr.
    Python ist eine minimalistische Sprache, die auf Erweiterbarkeit setzt.
    Guido van Rossum konzentrierte sich beim Design auf wenige Prinzipien:

  • Sparsamkeit durch Orthogonalitaet: begrenzte Zahl von Konstrukten, Grunddatentypen und Standardfunktionen
  • Abgestufte Strukturierungsmittel: Module, Klassen, Funktionen, Codeblocks
  • Programmkomponenten: dynamische Datenobjekte. Die struktuerellen Einheiten von Programmen sind selbst solche Objekte. Sie lassen sich inspizieren, manipulieren, zur Laufzeit erzeugen und generell wie andere Daten handhaben.
  • Konsistente Erweiterbarkeit: Erweiterungsmodule realisieren Werkzeuge fuer spezielle Anwendungsgebiete. Vorhandene Konstrukte und Standardfunktionen werden auf die neuen Objektklassen uebertragen.

  • Humor kommt nicht zu kurz (A Tale Of Five Languages von James Logajan). In Dokumentationen ist die Verwendung von Monty Python-Seitenhieben nicht nur erlaubt, sondern sogar empfohlen.




    [ nach oben ]



    [ Inhalt ] [ Allgemeiner Vergleich ] [ 2. Interpretierer ]







    Die Skriptsprache Python im Vergleich

    [ Inhalt ] [ 1. Allgemeiner Vergleich ] [ 2. Interpretierer ] [ 3. Datenstrukturen ]

    Interpretierer


    2. Interpretierer

    Sowohl Python als auch Perl und Tcl verfuegen ueber einen "interaktiven Modus". Die Zeilenediereigenschaften sind im Allgemeinen nicht sehr fortgeschritten, der "interaktive Modus" ist aber hilfreich, um Codesemente zu testen oder um ein Skript zu debuggen.

    Auf den meisten Systemen koennen Skripte aehnlich wie ein Shell-Skript ausgefuehrt werden, indem zu Beginn des Skriptes der Interpretierer angegeben wird und die Datei ausfuehrbar gemacht wird.


    [ weiter ]   [ nach oben ]

    2.1 Bedienung

    Die Interpretierer koennen mit oder ohne Parameter aufgerufen werden. Die Bedienung der Interpretierer im "interaktiven Modus" aehnelt sich sehr. Alle liefern einen primaeren Prompt zurueck und verhalten sich dann aehnlich wie eine UNIX-Shell. Sie lesen Kommandos und fuehren sie interaktiv aus. Quellcode kann importiert und getestet werden.

    Tcl und Python bieten zusaetzlich einen Interpretierer als Fensteranwendung mit Namen "wish" bzw. "idle" an. Sie nutzen die Vorteile des GUI.


    [ nach oben ]



    [ Inhalt ] [ 1. Allgemeiner Vergleich ] [ 2. Interpretierer ] [ 3. Datenstrukturen ]







    Die Skriptsprache Python im Vergleich

    [ Inhalt ] [ 2. Interpretierer ] [ 3. Datenstrukturen ] [ 4. Kontrollstrukturen ]

    Datenstrukturen


    3. Datenstrukturen

    Python und Perl kommen mit einer Fuelle eingebauter Typen daher. Auch Tcl verfuegt ueber eingebaute Typen, diese wurden allerdings bis zur Version 8.0 alle als Strings implementiert - immernoch ein beliebter Kritikpunkt an dieser Skriptsprache, denn die Umwandlung der Strings verursacht eine im Vergleich niedrige Geschwindigkeit. Seit der Version 8.0 unterstuetzt Tcl einen internen Datentyp, der Tcl-Objekte nicht nur als Zeichenkette, sondern zusaetzlich als Zieltyp speichert.

    Eine Zuweisung kopiert in Python keine Werte, sondern nur Referenzen. Sie bindet Namen an Objekte - was einschliesst, dass mehrere Namen an dasselbe Objekt gebunden sein koennen. Das faellt bei unveraenderlichen Objekten nicht weiter auf. Bei veraenderlichen Objekten (Dictionaries, Listen) kann es aber Quelle unangenehmer Ueberraschungen werden.

    Python ist wie Tcl und Perl deklarationsfrei. Variablen muessen in Python (wie auch in Perl) nicht besonders referenziert werden.
    Python assoziiert mit jeder aktiven Programmkomponente einen Namensraum (Namespace), der den ihr angehoerenden Namen Objekte zuordnet.


    [ weiter ]   [ nach oben ]

    3.1 Zahlen

    Die Syntax von Ausdruecken in Python ist simpel. Die Operatoren +, -, * und / funktionieren wie in den meisten anderen Sprachen, ebenso Vergleichsoperatoren. Klammern koennen zum Gruppieren verwendet werden. Ein Wert kann mehreren Variablen gleichzeitig zugewiesen werden und auch Mehrfachzuweisungen sind in Python moeglich. Es gibt volle Unterstuetzung fuer Fließkommazahlen und auch komplexe Zahlen werden unterstuetzt.

    Python Perl Tcl
    a = 10
    b = 3*(3+2)
    c = d = 2
    e,f = 7,8
    g = 7/8
    h = 7.0/8
    i = (1+2j)/(1+1j)
    $a = 10;
    $b = 3*(3+2);
    $c = $d = 3;

    $g = 7/8
    $h = 7.0/8
    set a 10
    set b [expr $a+2]
    set c [set d 3]

    set g [expr 7/8]
    set h [expr 7.0/8]



    [ weiter ]   [ nach oben ]

    3.2 Strings

    Es gibt in Python diverse Varianten, einer Variablen einen String-Wert zuzuweisen. Auch mehrzeilige String-Literale koennen zugewiesen werden. Ausserdem gibt es Operatoren zum Vervielfaeltigen und Zusammensetzen, sowie ausgefeilte Teilbereichsoperatoren.

    Python Perl Tcl
    s1 = 'spam eggs'
    s2 = 'waer\''
    s3 = '"Ich wollt\'," wuenscht sie.'
    s4 = "\"...ich "+s2+"\" meint sie."
    s5 = '"Is\' nich\'" ruft er.'
    $s1 = 'foo bar';
    $s2 = 'waer\'';
    $s3 = '"Ich wollt\'," wuenscht sie.';
    $s4 = "\"...ich $s2\" meint sie.";
    $s5 = '"Is\' nich\'," ruft er.';
    set s1 "foo bar"
    set s2 waer'
    set s3 "\"Ich wollt',\" wuenscht sie."
    set s4 "\"...ich $s2\" meint sie."
    set s5 "\"Is' nich',\" ruft er."

    Python-Quelltext: strings.py

    Auch Perl und Tcl verstehen sich sehr gut auf die Verarbeitung von Zeichenketten. Perl ist bekannt fuer seine regulaeren Ausdruecke, die bereits implementiert sind. Tcl kennt diese ebenfalls. Fuer Python existiert ein entsprechendes Modul zur Auswertung von regulaeren Ausdruecken.


    [ weiter ]   [ nach oben ]

    3.3 Listen

    Die vielseitigste Art, in Python Werte zu gruppieren sind Listen. Sie besteht aus von Kommata getrennten Werten innerhalb von eckigen Klammern und kann Listenelemente verschiedenen Typs enthalten. Wie bei Strings, kann auch bei Listen in Python ein indizierter Zugriff mit ausgefeilter Teilbereichsnotation genutzt werden. Zusaetzlich wird fuer Listen eine erschoepfende Auswahl interner Methoden und Werkzeuge angeboten, die keine Wuensche offen lassen.

    Listenelemente lassen sich (im Gegensatz zu Strings und Tupeln, welches unveraenderbare (immutable) Typen sind) veraendern (mutable).

    Python-Quelltext: listen.py

    Da Listen eine sehr gaengige Datenstruktur sind, gibt es sie natuerlich auch in Tcl und in Perl (da heissen sie dann auch gerne "anonyme Arrays").


    [ weiter ]   [ nach oben ]

    3.4 Tupel und Sequenzen

    Ein Tupel besteht in Python aus einer Anzahl von Werten, die durch Kommata getrennt sind. Sie koennen durch Nutzung runder Klammern verschachtelt werden. Auf einzelne Elemente eines Tupels kann nicht schreibend zugegriffen werden. Durch das sogenannte "Tupeleinpacken" (tuple packing) ist es moeglich, einem Tupel mit einer Zuweisung mehrere Werte zuzuweisen. Das "Tupelauspacken" (tupel unpacking) weist einer Liste von Variablen die Elemente eines Tupels zu.

    Python-Quelltext: tupel.py

    In Tcl und Perl heisst dieser Datentyp "Array" (gerne werden auch "mehrdimensionale Arrays" gebastelt).


    [ weiter ]   [ nach oben ]

    3.5 Woerterbuecher (Dictionaries)

    Im Gegensatz zu Sequenzen, die mit Zahlenintervallen indiziert werden, werden Dictionaries ueber unveraenderliche Schluessel indiziert ("assoziativer Speicher"). Eine durch Kommata getrennte Liste von Schluessel:Werte-Paaren innerhalb geschwungener Klammern fuegt initiale Schluessel:Wert-Paare in das Woerterbuch ein.

    Die Methode items gibt die Schluessel:Wert-Paare, die Methode keys allein die Schluessel eines Woerterbuches in einer Liste zurueck. Es gibt ausserdem verschiedene Methoden um z.B. Wertepaare zu loeschen oder zu sortieren.

    Python-Quelltext: dictionaries.py

    In Perl heisst dieser Datentyp "Hash" (eine assoziative Liste skalarer Werte).

    Sequenz-Objekte duerfen mit anderen Objekten vom gleichen Sequenztyp verglichen werden. Unterstuetzt werden die Vergleichsoperatoren in und not in, die Operatoren is und is not sowie die Booleschen (Abkuerzungs-)Operatoren and und or. Vergleiche koennen verkettet und geklammert werden. Ausdruecke werden von links nach rechts (verkuerzt) ausgewertet. Der Vergleich basiert auf lexikographischer Ordnung.


    [ nach oben ]



    [ Inhalt ] [ 2. Interpretierer ] [ 3. Datenstrukturen ] [ 4. Kontrollstrukturen ]







    Die Skriptsprache Python im Vergleich

    [ Inhalt ] [ 3. Datenstrukturen ] [ 4. Kontrollstrukturen ] [ 5. Objektorientierung ]

    Kontrollstrukturen


    4. Kontrollstrukturen

    Zur Gruppierung von Anweisungen werden keine Klammern oder Schluesselworte genutzt. Die Gruppierung erfolgt durch Einruecken.


    [ weiter ]   [ nach oben ]

    4.1 Bedingte Verzweigungen

    Python kennt die Befehle if, elif und else. Es darf keine oder mehrere elif-Teile geben, und das else ist optional. elif ersetzt die switch- oder case-Anweisungen in anderen Sprachen.


    [ weiter ]   [ nach oben ]

    4.2 Schleifen

    Bei der for-Schleife in Python wird nicht (wie in Perl und Tcl) ueber eine Folge von Zahlen sondern ueber Elemente einer Sequenz iteriert. In Perl stellt die foreach-Funktion die Iteration ueber Elemente zur Verfuegung.
    Auch fuer die for-Schleife gibt es in Python eine else-Anweisung. Sie tritt ein, wenn eine Schleife vollstaendig durchlaufen wurde.

    Mit der break- und continue-Anweisung kann aus Schleifen "ausgebrochen" werden.

    Sehr nuetzlich: Die range-Funktion erzeugt eine Liste, die einer arithmetischen Aufzaehlung entspricht. =)
    In Kombination mit der len-Funktion kann man dann zum Beispiel ueber die Indizes einer Sequenz iterieren.

    Ausserdem gibt es noch eine pass-Anweisung. Sie tut nichts und soll benutzt werden, wenn eine Anweisung syntaktisch notwendig ist.


    [ weiter ]   [ nach oben ]

    4.3 Funktionen

    Das Schluesselwort def leitet in Python die Definition einer Funktion/Prozedur ein (Perl: sub; Tcl: proc). Es folgt der Funktionsname und eine Liste von formalen (Werte-)Parametern (call by value).

    Argumente koennen mit Vorgabewerten spezifiziert werden. Auch der Aufruf mit Schluesselwort-Argumenten ist moeglich. Der Aufruf kann auch mit variabel vielen Parametern erfolgen.

    Tcl-Quelltext: fib1.tcl
    Perl-Quelltext: fib1.pl
    Python-Quelltext: fib1.py


    [ weiter ]   [ nach oben ]

    4.4 Funktionale Programmierung

    Python unterstuetzt sowohl den prozeduralen als auch den funktionalen Programmierstil und stellt dafuer einige aus Lisp bekannte Werkzeuge zur Verfuegung:

    map wendet eine Funktion auf alle Elemente einer Sequenz an und liefert die Reihe der Ergebnisse in einer Liste zurueck.

    filter extrahiert die Elemente einer Sequenz, die einem Praedikat genuegen.

    reduce faltet eine Squenz, indem es deren Elemente mit einer binaeren Operation verknuepft.

    Mit dem lambda-Schluesselwort koennen kleine anonyme Funktionen erzeugt werden.

    Auch die apply-Funktion (ebenfalls von Lisp stammend) sei hier erwaehnt. Sie ermoeglicht es Funktionsaufrufe zur Laufzeit zu konstruieren (Dynamik). Die Funktionen eval und exec werten Ausdruecke und fuehren Anweisungen aus, die man zur Laufzeit in Zeichenketten uebergibt.

    Python-Quelltext: dmap_f.py


    [ nach oben ]



    [ Inhalt ] [ 3. Datenstrukturen ] [ 4. Kontrollstrukturen ] [ 5. Objektorientierung ]







    Die Skriptsprache Python im Vergleich

    [ Inhalt ] [ 4. Kontrollstrukturen ] [ 5. Objektorientierung ] [ 6. Ein- und Ausgabe ]

    Objektorientierung


    5. Objektorientierung

    Python ist eine objektorientierte Sprache. Klassen sind Pythons hauptsaechliches OOP-Werkzeug. Sie erlauben mehrfache Kopien, Attributvererbung und das Ueberladen von Operatoren.


    [ weiter ]   [ nach oben ]

    5.1 Klassen

    Eine Klasse beginnt mit dem Schluesselwort class, gefolgt vom Klassennamen, einem Doppelpunkt und dann (eingerueckt) den Anweisungen. Durch jede Klassendefinition wird ein neuer Namensraum erzeugt und als lokaler Geltungsbereich verwendet.

    Klassenobjekte unterstuetzen zwei Arten von Operationen: Attributreferenzen und Instanziierung. Attributreferenzen verwenden die gaengige Attributierungssyntax (obj.name). Zur Instanziierung von Klassen wird die Funktionsnotation verwendet (x = MyClass()).

    Instanzobjekte koennen mit Attributreferenzen operieren. Diese Attributreferenzen koennen "Datenattribute" ("Klassen- oder Instanzvariablen") oder "Methoden" (Funktionen, die zu einem Objekt gehoeren) sein.

    Um eine Klasse von einer anderen Klasse erben zu lassen, wird die zu erbende Klasse als Parameter in der Klassendefinition angegeben.
    Zur Mehrfachvererbung wird einfach eine Sequenz von Klassen als Parameter uebergeben. Die Aufloesung geschieht mit einer Tiefensuche von links nach rechts.

    Klassen koennen hilfreich sein, um Datentypen zu schaffen, die eine Anzahl mit Namen versehener Daten gruppiert (Record in Pascal, Struct in C). Ausserdem sind benutzerdefinierte Ausnahmen nicht auf Stringobjekte beschraenkt - es koennen auch Klassen sein.

    Python-Quelltext: class_b.py


    [ weiter ]   [ nach oben ]

    5.2 Module und Pakete

    Python wird mit einer Reihe Standardmodulen verbreitet. Diese Module sind im Interpretierer eingebaut.
    Eine Datei, in der in Python-Definitionen und -Anweisungen abgelegt sind, ist in Python ein Modul. Diese Module (sie sollten die Endung .py haben) koennen in anderen Modulen oder im Hauptmodul importiert werden.

    Zur Strukturierung des Namenraums in gibt es in Python die Moeglichkeit, aus mehreren Modulen sogenannte Pakete zu "schnueren", die dann komplett oder teilweise importiert werden koennen. Die dir-Funktion liefert eine Liste der Namen zurueck, die in einem Modul definiert sind.


    [ weiter ]   [ nach oben ]

    5.3 Objektorientierung in Perl und Tcl

    Die Perl-Regeln objektorientierter Programmierung lauten wie folgt:

  • Ein Objekt ist einfach eine Referenz, die weiss, welcher Klasse sie angehoert. Objekte werden ueber bless "abgesegnet", Referenzen nicht.
  • Eine Klasse ist einfach ein Paket, das Methoden zur Arbeit mit Objektreferenzen bereitstellt. Kann ein Paket eine Methode nicht zur Verfuegung stellen, werden die in @ISA aufgefuehrten Basisklassen durchsucht.
  • Eine Methode ist einfach eine Subroutine, die eine Objektreferenz (oder bei statischen Methoden einen Paketnamen) als erstes Argument erwartet. Methoden koennen wie folgt aufgerufen werden:

    objref -> methode parameter
    oder
    methode objref parameter

    In Tcl wird Objektorientierung ueber die [incr Tcl]-Erweiterung realisiert.


    [ nach oben ]



    [ Inhalt ] [ 4. Kontrollstrukturen ] [ 5. Objektorientierung ] [ 6. Ein- und Ausgabe ]







    Die Skriptsprache Python im Vergleich

    [ Inhalt ] [ 5. Objektorientierung ] [ 6. Ein- und Ausgabe ] [ 7. Fehlerbehandlung ]

    Ein- und Ausgabe


    6. Ein- und Ausgabe

    Python bietet einige nuetzliche Methoden um eine Reihe von Strings in Tabellenform auszugeben.

    Python-Quelltext: einausgabe.py

    Auch das Einlesen und Manipulieren von Dateien ist unkompliziert. Geeignete bereits implementierte Methoden fuer Dateiobjekte stehen zur Verfuegung.

    Python bietet zusaetzlich ueber das Pickle-Modul die Moeglichkeit persistente Objekte zu erzeugen.
    Komplexe Datenstrukturen werden dabei durch das "Pickling" (Einlegen, haltbar machen) in eine String-Repraesentation umgewandelt und als Dateiobjekt gespeichert. Durch spaeteres "Unpickling" kann das Objekt dann weiterverwendet werden.


    [ nach oben ]



    [ Inhalt ] [ 5. Objektorientierung ] [ 6. Ein- und Ausgabe ] [ 7. Fehlerbehandlung ]







    Die Skriptsprache Python im Vergleich

    [ Inhalt ] [ 6. Ein- und Ausgabe ] [ 7. Fehlerbehandlung ] [ 8. GUIs ]

    Fehlerbehandlung


    7. Fehlerbehandlung

    Bei Syntaxfehlern und Ausnahmen, die bei der Ausfuehrung von Programmen auftreten, meldet Python aussagekraeftige Fehlermeldungen und bezeichnet die Stelle des Fehlers mit Zeilennummer und Wort oder mit dem Namen der aufgetretenen Ausnahme sowie dem Kontext in dem der Fehler aufgetreten ist.

    Zur Ausnahmebehandlung stellt Python ein try-except-Konstrukt zur Verfuegung, das auftretende Ausnahmen, die auch selbst definiert werden koennen, abfangen kann. Die try-except-Anweisung hat eine optionale else-Klausel. Sie bietet Platz fuer Code, der ausgefuehrt wird, wenn die try-Klausel keine Ausnahme ausloest.

    Python-Quelltext: exceptions.py

    Ausnahmen koennen auch Klassen sein. Die Ausloesung von Ausnahmen kann erzwungen werden.


    [ nach oben ]



    [ Inhalt ] [ 6. Ein- und Ausgabe ] [ 7. Fehlerbehandlung ] [ 8. GUIs ]







    Die Skriptsprache Python im Vergleich

    [ Inhalt ] [ 7. Fehlerbehandlung ] [ 8. GUIs ] [ 9. Performance ]

    GUIs


    8. GUIs

    Das Tk-Toolkit ist das bekannteste Toolkit zur Darstellung grafischer Frontends. Tcl/Tk hat es zu seiner Popularitaet verholfen - und auch in Perl und Python soll es an Fenstern nicht fehlen.

    Python liefert mit dem Paket Tkinter das Pendant zu Perls Perl/Tk. Tkinter wird standardmaessig mit Python mitgeliefert und bietet ein objektorientiertes Interface zur Nutzung aller Tk-Widgets.
    Es gibt aber auch noch andere GUI-Frameworks: Z.B. wpy oder wxPython.

    Python-Quelltext: tkinter_bsp.py


    [ nach oben ]



    [ Inhalt ] [ 7. Fehlerbehandlung ] [ 8. GUIs ] [ 9. Performance ]







    Die Skriptsprache Python im Vergleich

    [ Inhalt ] [ 8. GUIs ] [ 9. Performance ] [ Anhang: Quellen ]

    Performance


    9. Performance

    Tcl wird immernoch die schlechteste Performance nachgesagt. Seit der Version 8.0 (1997!) nutzt aber auch Tcl einen Bytecode-Interpretierer (speichert ausserdem nicht mehr alle Daten als Zeichenkette) und kann nach eigenen Aussagen mit Perl gut mithalten.
    Geschwindigkeitsmessungen sind aber immer abhaengig vom Testgebiet.
    Python ist z.B. im folgenden Test schneller als Tcl:

    Python-Quelltext: performance.py
    Tcl-Quelltext: performance.tcl


    [ nach oben ]



    [ Inhalt ] [ 8. GUIs ] [ 9. Performance ] [ Anhang: Quellen ]







    Die Skriptsprache Python im Vergleich

    [ Inhalt ] [ 9. Performance ] [ Anhang: Quellen ]

    Quellen

    World-Wide-Web:
  • Python-Homepage (http://www.python.org) mit zahlreichen Verweisen:
    Python-Tutorial, Dokumentationen, Vergleiche mit anderen Skriptsprachen (u.a. von ), ...
  • Python-Tutor-Newsletter (tutor@python.org)
  • Perl-Homepage (http://www.perl.com) mit zahlreichen Verweisen:
    ActivePerl Online Help, Dokumentationen
  • Perl-Online-Dokumentation von Eike Grothe
  • Die offizielle Tcl/Tk-Homepage (http://www.scriptics.com) mit Verweisen:
    u.a. zum Tcl8.1/Tk8.1 Manual.
  • Newsgroups:
  • comp.lang.python.misc sowie weitere comp.lang.python.*
  • comp.lang.perl.misc, de.comp.lang.perl.misc sowie weitere comp.lang.perl.*
  • comp.lang.tcl
  • Literatur:
  • iX
  • O'Reillys Taschenbibliothek:
    • Python - kurz & gut, Mark Lutz (ISBN 3-89721-216-1)
    • Perl 5 - kurz & gut, Johan Vromans (ISBN 3-89721-201-3)



    Ein kontroverser Banner-Add:



  • [ nach oben ]



    [ Inhalt ] [ 9. Performance ] [ Anhang: Quellen ]


    Sven Goldschmidt
    wi7502@fh-wedel.de
    Fachhochschule Wedel
    WS 99/00