KnowHow - Software - Python - Mein Hintergrund
Ich lerne Python. Oder genauer: Ich lerne Python jetzt etwas genauer kennen.
Python ist eine nette Sprache. Sie ist für alle mir wichtigen Plattformen verfügbar (Linux und Windows), kennt GUIs und gegenüber Perl haben Python-Scripte nicht die Tendenz in spätere Unverständlichkeit zu versinken.
Die Problemstellung
Um Python effektiv einsetzen zu können habe ich folgende Probleme:
Die hier beschriebenen Probleme habe ich in
jeder Programmiersprache und mit
jedem Programmiersystem. Es sind die "Essentials" die ich als Entwickler benötige. Schön wäre, wenn ich endlich mal etwas finden würde, das das
plattformübergreifend und einfach erledigen würde.
Bisher also mache ich das so:
- Deploy: Ich schreibe und veröffentliche derzeit nur Source-Code
- GUI: Per Web
- Tray: Per VB (das Ding bringt dann eine IE-Komponente hoch in der alles abläuft)
Das alles ist vollkommen unbefriedigend!
Lieber hätte ich eine Lösung, die mir die Sachen in mehrere Teile zerlegt:
- Ein GUI-Tray-Backend: Das ist ein Teil, das sitzt im Tray, und das liefert mir die GUI für Tool-Scripte. Der Trick ist dann, die Scripte brauchen selber keine GUI, die haben eine Beschreibung (z. B. HTML) die vom Script unabhängig ist. Das Script läuft dann ab und interagiert mehr oder weniger elegant mit der GUI.
- Ein Scripting-Frontend: Das ist ein Container, in dem die Scripte ablaufen. Als Threads, als Programme, als was auch immer. Dieser ist dann vollkommen unabhängig von der GUI. Wichtig ist, dass solche Scripts nicht wie Servlets ablaufen, sondern modal-artig. D. h. etwas berechnet etwas und "zeigt" einen Fortschrittsbalken an. Dazu updatet es nur die Fortschritts-Variable (Class), die denn in der GUI in einen Balken dargestellt wird, wobei beides vollkommen voneinander abgekoppelt ist (also hält man die GUI an läuft das Script weiter und umgekehrt).
Und ja, ich habe die Begriffe "Frontend" und "Backend" richtig herum verwendet. Das ist genauso "verdreht" wie bei X-Window, bei dem der Server das Display ist und der Client das Programm. Beides liegt daran, dass man es hier nicht aus User-Sicht sieht, sondern aus der Sicht des ablaufenden Programms.
Ich schreibe Tools, d. h. mir liegt nichts ferner als die GUI! Aus der Sicht von Tools ist die GUI ein Backend (eine Ausgabe) und nicht ein Frontend (die Eingabe).
Hoffnung Python
Python ist eine Scripting-Sprache, die man hoffentlich genau da hindrehen kann wo ich es haben will. D. h. man baut sich (mit der Zeit!) eine Klassenbibliothek zusammen, über die man dann "plötzlich" alles umdrehen kann ohne dass sich die Scripte verändern müssen.
In Perl geht das so nicht, oder nicht so einfach. Java ist der reine Abschuss in dieser Sache, das System wurde leider vollkommen falsch herum aufgesetzt. .NET ist nur eine Runntime, nettes Spielzeug, kann aber das nicht was ich eigentlich will und ist nicht portabel. Am besten skaliert in diesem Sinne HTML, d. h. der Output vom Script ist die GUI. Nicht ideal, aber vom Ansatz her brauchbar.
-Tino, 2007-03-30