Ich bin ein pensionierter Biologe, der sich mit digitalen Mikrofotografien befasste und ein Bildverarbeitungs- und Analysepaket (technisch gesehen keine Bibliothek) schreiben musste, um auf einem SGi-Computer ausgeführt zu werden. Ich habe den Code in C geschrieben und Tcl für die Skriptsprache verwendet. Die GUI, so wie sie war, wurde mit Tk erstellt. Die in Tcl angezeigten Befehle hatten die Form "extensionName commandName arg0 arg1 ... param0 param1 ...", dh einfache durch Leerzeichen getrennte Wörter und Zahlen. Als Tcl den Teilstring "extensionName" sah, wurde die Steuerung an das C-Paket übergeben. Dadurch wurde der Befehl über einen Lexer / Parser (in lex / yacc ausgeführt) ausgeführt und anschließend nach Bedarf C-Routinen aufgerufen.
Die Befehle zum Bedienen des Pakets konnten einzeln über ein Fenster in der GUI ausgeführt werden. Stapeljobs wurden jedoch durch Bearbeiten von Textdateien ausgeführt, die gültige Tcl-Skripte waren. Sie würden die Vorlage auswählen, die die gewünschte Operation auf Dateiebene ausgeführt hat, und dann eine Kopie bearbeiten, die das tatsächliche Verzeichnis und die Dateinamen sowie die Paketbefehle enthält. Es funktionierte wie ein Zauber. Bis um ...
1) Die Welt wandte sich PCs zu und 2) die Skripte wurden länger als etwa 500 Zeilen, als die zweifelhaften organisatorischen Fähigkeiten von Tcl zu einer echten Unannehmlichkeit wurden. Zeit verging ...
Ich habe mich zurückgezogen, Python wurde erfunden und es sah aus wie der perfekte Nachfolger von Tcl. Jetzt habe ich den Port nie ausgeführt, weil ich mich nie den Herausforderungen gestellt habe, (ziemlich große) C-Programme auf einem PC zu kompilieren, Python mit einem C-Paket zu erweitern und GUIs in Python / Gt? / Tk? /? ?. Die alte Idee, bearbeitbare Vorlagenskripte zu haben, scheint jedoch immer noch praktikabel zu sein. Es sollte auch keine allzu große Belastung sein, Paketbefehle in einer nativen Python-Form einzugeben, z.
packageName.command (arg0, arg1, ..., param0, param1, ...)
Ein paar zusätzliche Punkte, Parens und Kommas, aber das sind keine Showstopper.
Ich erinnere mich, dass jemand Versionen von Lex und Yacc in Python erstellt hat (versuchen Sie: http://www.dabeaz.com/ply/ ). Wenn diese also noch benötigt werden, sind sie da.
Der Punkt dieses Streifens ist, dass es mir so vorgekommen ist, als ob Python selbst das gewünschte "leichte" Frontend ist, das von Wissenschaftlern verwendet werden kann. Ich bin neugierig zu wissen, warum du denkst, dass es nicht so ist, und das meine ich ernst.
später hinzugefügt: Die Anwendung gedit geht davon aus, dass Plugins hinzugefügt werden, und auf ihrer Website finden Sie die klarste Erklärung für ein einfaches Plugin-Verfahren, das ich in wenigen Minuten gefunden habe. Versuchen:
https://wiki.gnome.org/Apps/Gedit/PythonPluginHowToOld
Ich würde Ihre Frage immer noch gerne besser verstehen. Ich bin mir nicht sicher, ob Sie 1) möchten, dass Wissenschaftler Ihre (Python-) Anwendung ganz einfach auf verschiedene Arten verwenden können, oder 2) möchten, dass die Wissenschaftler Ihrer Anwendung neue Funktionen hinzufügen. Wahl Nr. 1 ist die Situation, mit der wir mit den Bildern konfrontiert waren, und die dazu führte, dass wir generische Skripte verwendeten, die wir an die Bedürfnisse des Augenblicks anpassten. Ist es Wahl 2, die Sie zur Idee von Plugins führt, oder ist es ein Aspekt Ihrer Anwendung, der die Ausgabe von Befehlen an Plugins unmöglich macht?