Tcl/Tk: Programmieren auf dem PocketPC

Richard Suchenwirth, Konstanz 2003 This Wiki's language shall remain English, but as I had this article ready but never published, I put it up here for people whose German is better than their English ;)


WikiDbImage ifile01.jpg WikiDbImage ifile4.jpg

Die Power eines mittelguten Desktop-PC von vor zehn Jahren steckt man heute locker in die Hemdtasche. PocketPCs werden oft nur als aufgemotzte Organizer betrieben, erfüllen aber mit einem erträglichen Betriebssystem und einem hierarchischen Dateisystem (Ordner, die wieder Ordner enthalten können) grundsätzlich die Anforderungen an einen vollwertigen Computer.

Als leidenschaftlicher Programmierer seit 30 Jahren habe ich mir zu Sylvester einen iPaq 3760 zugelegt, und seitdem geniesse ich es, im Liegestuhl auf dem Balkon Programme zu schreiben - in Tcl/Tk.

Tcl (Tool Command Language, ausgesprochen "tickel") ist eine Scripting-Sprache, etwa vergleichbar mit Basic/Perl/Python usw. - und doch unvergleichlich. Man kann Tcl als eine Kreuzung aus C, LISP und Shells charakterisieren - immer einfacher, aber fast genauso mächtig wie jede von diesen. "Scripting" bedeutet, dass ein Laufzeitsystem ein Programm ("Script": eine Textdatei) direkt, oder "on the fly" in Bytecode compiliert, ausführt. Vorteile: bei der Entwicklung kann man sehr schnell testen, was man geändert hat; ausserdem kann man Scripte ohne Änderungen auf "grossen" Windows-, Unix-/Linux- oder Mac-Rechnern laufen lassen. Tcl ist portabler als Java. Mehr auf Einfach Tcl, Übersetzung der man-Page auf Einfach man Tcl.

Tk (Tool kit) ist die wichtigste Erweiterung zu Tcl: extrem einfache, aber mächtige Komponenten für grafische Benutzeroberflächen mit allen Schikanen, sowie Bearbeitung von Bildern. Auch Tk ist auf allen gängigen Plattformen verfügbar. Tcl und Tk sind seit einigen Jahren auch auf PocketPC portiert - natürlich kostenlos herunterzuladen (siehe https://wiki.tcl-lang.org/WindowsCE ). (? broken link :-( )

Zu meinen Leidenschaften gehören exotische Sprachen - Arabisch, Chinesisch, Koreanisch, ... Die Kombination von Tcl/Tk (wo alle Zeichen Unicodes sind, also fast alle lebenden Sprachen zulassen) und Windows/CE (das normale TrueType-Fonts gut darstellen kann) macht es ziemlich leicht, etwa chinesische E-books zu lesen (iRead: a Gutenberg eBook reader), oder arabische Wörterbücher zu bearbeiten und zu durchsuchen (iDict: a multilingual dictionary). Für die Eingabe schreibt man sich einfach selbst virtuelle Tastaturen, die der standardmässigen kaum nachstehen und ebenso einfach mit dem Stift benutzt werden können (siehe iKey: a tiny multilingual keyboard).

Aber auch ohne sehr fremde Sprachen bietet Tcl/Tk viel, was mit der Windows/CE-Grundversorgung einfach nicht möglich ist - so kann man beim Umbenennen von Dateien auch deren Extension (die letzten drei Buchstaben hinter dem Punkt) ändern, oder Grösse und Änderungsdatum auf Byte bzw. Sekunde genau erfahren. Eigentlich macht Tcl/Tk erst Windows/CE zu einem voll nutzbaren Betriebssystem: CE hat keine Konsole ("DOS-Prompt")? Dann schreibt man sich halt eine, in einer Viertelseite Tcl... PocketWord kann zwar HTML-Dateien editieren, aber nur, wenn sie schon existieren? Eine Zeile Tcl löst das Problem, indem sie eine neue leere Datei anlegt:

 close [open test.htm w]

Im letzten halben Jahr habe ich Dutzende von Tcl/Tk-Programmen (Spiele, Lernspielzeug, Tools) auf dem iPaq erstellt, und die gelungenen auch ins Web gestellt (https://wiki.tcl-lang.org/rs ) - meist nur wenige Seiten lang, kommentiert und mit Screenshot - bis hin zu einem (Instrumenten-)Flugsimulator iFly, der gerade mal zwei Seiten Code braucht. Oder eine Stoppuhr, auf 1/100 sec genau, in 21 Zeilen...

Das besondere an dieser Form von Open Source Software ist, dass der Programmcode voll sichtbar ist und von jedem, der etwas Tcl versteht, leicht nach persönlichen Ideen geändert werden kann. Das "Herunterladen" von solchen Skripten geschieht einfach, indem man mit der Maus über den Quellcode zieht, ihn kopiert und mit einem einfachen Editor (z.B. Notepad) in eine Datei (*.tcl) speichert.

Zum Bearbeiten von Tcl-Skripten auf dem iPaq selbst nehme ich am liebsten PocketWord im simplen Nur-Text-Modus (*.txt). Um so ein Programm, nennen wir es foo.txt, zum Laufen zu bringen, starte ich es entweder aus dem Tcl-Explorer iFile 1.1 (Menu/File/Run), oder kopiere ins gleiche Verzeichnis eine Datei foo.tcl, die immer so aussieht:

 set argv0 [file root [info script]].txt
 source $argv0

An diesem kleinen Beispiel kann man Tcl ein wenig kennenlernen:

  • Kommandos in eckigen Klammern werden zuerst ausgeführt
  • info script gibt den Namen der aktuellen Quelldatei zurück: foo.tcl
  • file root entfernt die Extension (.tcl), bleibt: foo
  • set argv0 .. weist das letzte Wort der Variablen namens argv0 zu - an dies letzte Wort habe ich die Zeichen ".txt" einfach angefügt: foo.txt
  • $argv0 wird ersetzt durch den Wert der Variablen argv0
  • source .. liest die angegebene Datei, also foo.txt, und führt die enthaltenen Kommandos aus.

Es mag überraschen, dass Tk bekannter ist als Tcl - weil auch die Kollegen von Perl, Python usw. gern seine Vorteile nutzen. Tcl ist eine Art Geheimtip - aber es gibt eine freundliche und sehr hilfsbereite Anwendergemeinschaft, die in der Gruppe news:comp.lang.tcl gerne Fragen beantwortet und diskutiert. (Englisch ist dort allerdings die Umgangssprache). Die grösste freie Tcl-Softwaresammlung ist unter https://wiki.tcl-lang.org verfügbar und wächst ständig - von mir kommen meist (und von anderen auch) Programme, die auf PocketPC und aufwärts laufen... Links auf die PocketPC-geeigneten Programme gibt's natürlich auf https://wiki.tcl-lang.org/PocketPC .

Meine aktuelle "Taschenentwicklungsumgebung" ist der Sepp.


Arts and crafts of Tcl-Tk programming - Category Mobile