Das Simulation Tool, das ich in den letzten paar Jahren entwickelt habe, Pflücken, ist in C++ geschrieben und derzeit ein tcl interpretierte Front-End hat. Es wurde so geschrieben, dass es entweder in einer interaktiven Shell ausgeführt werden kann oder indem eine Eingabedatei übergeben wird. In beiden Fällen wird die Eingabedatei in tcl geschrieben (mit vielen zusätzlichen simulationsspezifischen Befehlen, die ich hinzugefügt habe). Dies ermöglicht recht leistungsfähige Eingabedateien (z. B. wenn monte-carlo-Sims ausgeführt werden, können zufällige Verteilungen als tcl-Prozeduren direkt in der Eingabedatei programmiert werden).ein Front-End/Interpreter für eine wissenschaftliche Code
Leider finde ich, dass der tcl-Interpreter etwas eingeschränkt wird immer im Vergleich zu dem, was modernere interpretierten Sprachen zu bieten haben, und seine Syntax scheint ein wenig obskur. Da die Rechenmaschine als Bibliothek mit einem c-kompatibelen API geschrieben wurde, soll es einfach sein, alternativen Frontends zu schreiben, und ich denke an einen neuen Dolmetscher zu bewegen, jedoch bin ich die Auswahl ein bisschen einer Zeit, die (meist weil ich keine bedeutende Erfahrung mit vielen interpretierten Sprachen habe). Die Optionen, die ich begonnen haben, zu erforschen sind wie folgt:
Rest mit tcl:
Pro:
- Keine Notwendigkeit, den vorhandenen Code zu ändern.
- Vorhandene Eingabedateien bleiben gleich. (Obwohl ich wahrscheinlich das tcl vordere Ende als Option halten würde)
- Mature Sprache mit vielen Unterstützung der Gemeinschaft.
Nachteile:
- Gefühl begrenzt durch die Sprachsyntax.
- Erhalten von Beschwerden von Benutzern über die Schwierigkeit des Erlernens von Tcl.
Python:
Vorteile:
- Moderne Interpreter, bekannt ziemlich effizient.
- Große, aktive Gemeinschaft.
- Bekannte wissenschaftliche und mathematische Module wie scipy.
- Häufig in der akademischen Scientific/Engineering Community (typische Nutzer von meinem Code) verwendete
Nachteile:
- ich habe es nie benutzt und somit Zeit, um die Sprache (dies ist auch ein Profi, wie ich lernen würde habe die Bedeutung gewesen python seit geraumer Zeit)
zu lernen - Strenge Formatierung der Eingabedateien (Einzüge, etc ..)
Matlab:
Vorteile:
- Sehr Macht und weit verbreitete mathematisches Werkzeug
- Leistungsstarke integrierte Visua Lokalisierung/Plotting.
- Extensible, durch Community-Code vorgelegt, als auch kommerzielle Toolbox.
- Viele in Wissenschaft/Technik Akademia ist vertraut und komfortabel mit Matlab.
Nachteile:
- Kann nicht als ausführbare Datei verteilt werden - müsste ein Add-on/Toolbox sein.
- Würde bedürfen der Matlab-Compiler (was teuer ist) (?).
- Benötigt Matlab, die auch teuer ist.
Diese Vor-und Nachteile sind, was ich in der Lage, zu kommen, obwohl ich sehr wenig Erfahrung mit interpretierten Sprachen im Allgemeinen habe.Ich würde gerne irgendwelche Gedanken zu den beiden Dolmetschern hören, die ich hier vorgeschlagen habe, wenn diese aufgeführten Pros/Contras legitim sind, und an alle anderen Interpreten, an die ich nicht gedacht habe (zB - wäre das für so etwas angemessen? Lua ?). Erfahrung mit der Einbettung eines Interpreters in Ihren Code ist definitiv ein Plus!
CoreMaster2? Klingt wie ein Code, den eine andere Abteilung in meiner Firma entwickelt. – Dave
Nein, es ist ein akademischer Fluss durch poröse Medien-Simulator, der meist von Absolventen und Post-Docs in der Forschungsgruppe, die ich bin, verwendet wird. – MarkD
Ich würde Python nicht als "effizient" bezeichnen. Python-Code ist ziemlich ineffizient, und das Zahlen-Crunching wird normalerweise durch C-Code ausgeführt, auf den über eine Python-API zugegriffen wird. Ich benutze es trotzdem, weil es einfach zu einfach ist. –