Perl/Tk PM-Treffen 11.7.05
Steffen Ullrich <steffen@genua.de>
GeNUA mbH
http://www.genua.de
Meine GUI-Kenntnisse
- ein bißchen MOTIF ca. 1994/1995
- seit 1995 immer mal wieder oberflächlich mit Tk zu tun gehabt
- 1997-2001 Web-Entwicklung
- seit 2001 bei GeNUA Weiterentwicklung eines Perl/Tk/Postgres basierten SAP-Ersatz
und auch ein wenig Web-GUI Entwicklung
- 'privat' kleinere produktive Tk-Apps
- mache eigentlich lieber was anderes als GUI
TNT: Perl/Tk bei GeNUA
- CRM, Trouble-Ticket-System, Auftragsverwaltung, Projektmanagment, Zeiterfassung u.v.m
- Geld in Eigenentwicklung statt in SAP Consultants gesteckt
- 1996 Rewrite von Tcl/Tk nach Perl/Tk mitPostgreSQL als Backend
- d.h. der Code ist 'gewachsen' (use strict kam 2001 etc)
- ca. 100.000 Zeilen Perl
TNT: Perl/Tk bei GeNUA II
- nutzt kaum advanced Features von Tk
- für häufige Sachen (Dialoge etc) i.A. Wrapperfunktionen statt eigener Widgets
- immer mal wieder Probleme mit pack und bindings, die defaults der eigenen
Convienience-Funktionen sind da im Wege
wie sieht es aus
wie sieht es aus II
Vorteile von Perl/Tk
- (halbwegs) gut dokumentiert (sogar Bücher)
- aktiv gepflegt
- kompakter Code, d.h. gut les- und wartbar
- stabiles API
- halbwegs stabile Implementation
- funktioniert auf X11 (Unix,Mac) und Windows
- unterstützt von PAR und perlapp (ActivePerl)
Nachteile von Perl/Tk
- Look+Feel uralt, keine Unterstützung für Themes
- nur elementare Komponenten in der Distribution:
- kein Applikation Framework, d.h. alle Anwendungen sehen anders aus
- kein Helpbrowser, d.h. jeder macht was Eigenes, wenn überhaupt
- FileDialog nicht in gängige Desktops integriert (Ausnahme Windows?)
- kein GUI Builder, zumindest nicht als Standard
- hat durchaus Probleme, z.B. memory leaks
Alternativen
- perlQt
- wxPerl
- Gtk2-Perl
- Tcl::Tk
perlQt
- kann GUI Builder von Qt nutzen
- theoretisch Cross-Plattform
- 1:1 Übernahme des C++ Interface, Code ziemlich verbose
- Dokumentation ist Qt Dokumentation
- keine stabile Integration in KDE
- letzte Release 09/2003
- letzte Nachrichten aus der perl.qt newsgroup:
- Maintainer hat keine Lust mehr
- Diskussionen wegen Memory Leaks
wxPerl
- Cross-Plattform
- aktiv weiterentwickelt, letzte Release 07/2005
- Framework sehr umfangreich
- bundled mit Mac OSX 10.4!
- C++ style, d.h. OO und keine named Arguments, Code verbose aber schwerer lesbar
- Dokumentation fast ausschließlich Doku von wxWidgets
Gtk2-Perl
- aktive Weiterentwicklung
- Framework sehr umfangreich
- offensichtlich praxistauglich, d.h. Mandrake/Mandriva hat die GUI-Tools damit geschrieben
- C style, d.h. keine named Arguments, Code verbose (für jedes eine eigene Funktion), aber schwer lesbar
- wenn man Gtk2 kann und dieses Wissen auch mit perl nutzen will
Tcl::Tk
- embedded Tcl/Tk in perl
- verspricht Nutzung des aktuellsten Tk (Look+Feel!)
- versucht den Perl/Tk Syntax zu mappen
- vorhandenes Perl/Tk Wissen übertragbar
- aktive Weiterentwicklung
- die gleichen Limits wie Perl/Tk bzgl. Framework
und außerhalb Perl?
- Java hat AWT (naja), Swing (besser) und SWT (Eclipse)
- python hat ebenfalls Interfaces zu Tk, Qt, Gtk2, WxWidgets
- zumindest das Qt Interface scheint besser zu sein, LPhoto von Linspire
ist damit geschrieben, gibt auch Buch dazu
- seit kurzem hat python auch SWT binding (in progress)
Zusammenfassung
- Perl/Tk ist einfach, verständlich, aber häßlich und arg limitiert
- bzgl. der Häßlichkeit könnte Tcl::Tk einen Ausweg schaffen
- die anderen Toolkits sind von der Benutzung her C/C++
- perlQt scheint keine große Zukunft zu haben
- Dokumentation ist überall ein Problem, Perl/Tk fast am besten
- sollte man die Sprache wechseln?