Das Simulationsprogramm, das ich in den letzten Jahren entwickelt habe, ist in C++ geschrieben und verfügt derzeit über ein tcl-interpretiertes Front-End. Es wurde so geschrieben, dass es entweder in einer interaktiven Shell oder durch Übergabe einer Eingabedatei ausgeführt werden kann. In beiden Fällen ist die Eingabedatei in tcl geschrieben (mit vielen zusätzlichen simulations-spezifischen Befehlen, die ich hinzugefügt habe). Dies ermöglicht recht leistungsfähige Eingabedateien (z.B. können bei Monte-Carlo-Simulationen Zufallsverteilungen als tcl-Prozeduren direkt in der Eingabedatei programmiert werden).
Leider stelle ich fest, dass der tcl-Interpreter im Vergleich zu moderneren interpretierten Sprachen etwas eingeschränkt ist, und seine Syntax erscheint mir ein wenig obskur. Da die Rechenmaschine als Bibliothek mit einer c-kompatiblen API geschrieben wurde, sollte es ein Leichtes sein, alternative Front-Ends zu schreiben, und ich denke darüber nach, auf einen neuen Interpreter umzusteigen, allerdings fällt mir die Auswahl etwas schwer (vor allem, weil ich mit vielen interpretierten Sprachen nicht viel Erfahrung habe). Die Optionen, die ich zu erkunden begonnen habe, sind wie folgt:
Bleiben Sie bei tcl:
Vorteile:
- Der bestehende Code muss nicht geändert werden.
- Vorhandene Eingabedateien bleiben unverändert. (obwohl ich wahrscheinlich das tcl-Frontend als Option beibehalten würde)
- Ausgereifte Sprache mit viel Unterstützung der Gemeinschaft.
Nachteile:
- Sie fühlen sich durch die Syntax der Sprache eingeschränkt.
- Beschwerden von Benutzern über die Schwierigkeit, tcl zu lernen.
Python:
Vorteile:
- Moderner Interpreter, der als sehr effizient bekannt ist.
- Große, aktive Gemeinschaft.
- Bekannte wissenschaftliche und mathematische Module, wie z.B. scipy.
- Üblicherweise in der akademischen Wissenschafts-/Ingenieurgemeinschaft verwendet (typische Nutzer meines Codes)
Nachteile:
- Ich habe es noch nie benutzt und würde daher Zeit brauchen, um die Sprache zu lernen (das ist auch ein Vorteil, denn ich wollte schon seit einiger Zeit Python lernen).
- Strenge Formatierung der Eingabedateien (Einrückung, etc..)
Matlab:
Vorteile:
- Sehr leistungsfähiges und weit verbreitetes mathematisches Werkzeug
- Leistungsstarke integrierte Visualisierung/Plotting.
- Erweiterbar durch von der Gemeinschaft eingereichten Code sowie durch kommerzielle Toolboxen.
- Viele Akademiker aus dem Bereich Wissenschaft/Ingenieurwesen sind mit Matlab vertraut und können damit umgehen.
Nachteile:
- Kann nicht als ausführbare Datei verteilt werden - müsste ein Add-on/Toolbox sein.
- Dazu wäre der (teure) Matlab-Compiler erforderlich.
- Erfordert Matlab, das ebenfalls sehr teuer ist.
Diese Vor- und Nachteile sind das, was ich bisher herausfinden konnte, obwohl ich nur sehr wenig Erfahrung mit interpretierten Sprachen im Allgemeinen habe. Ich würde gerne Meinungen sowohl zu den Interpretern, die ich hier vorgeschlagen habe, als auch zu anderen Interpretern, an die ich noch nicht gedacht habe, hören (z.B. wäre php für so etwas geeignet? lua?). Erfahrungen aus erster Hand mit der Einbettung eines Interpreters in Ihren Code sind definitiv von Vorteil!