Karl hat geschrieben:Mir fällt immer wieder auf, dass es so viele Programme gibt, die ihre eigene Scriptsprache speziell für das Programm entwickelt haben, wie zum Beispiel mIRC. Warum benutzen die nicht einfach Sprachen wie zum Beispiel Python, die sich (nach dem was ich gehört habe) ja auch relativ problemlos als Scriptsprache einbinden lassen?
Bei mIRC schätze ich mal, hat Khaled Mardam-Bey sich nicht sonderlich viele Gedanken gemacht, dementsprechend grausam ist die Sprache dann auch geworden. Außerdem waren damals, wie du sagtest, solche Sprachen nicht so der Hit. Python einzubetten ist außerdem von der größe nicht ganz so simpel: der Interpreter + Stdlib könnte sogar größer als mIRC selbst werden.
Karl hat geschrieben:Aber nehmen wir mal ein Spiel, zum Beispiel Warcraft 3. Das hat einen eigenen Editor mit einer eigenen Scriptsprache (Jass), die absolut scheiße ist.
Was hindert Spieleentwickler daran, Sprachen wie Python als Scriptsprache in ihren Editoren zu benutzen?
Es gibt ja anscheinend einige (OpenSource-)Programme, die Python als Scriptsprache benutzen.
Wenn man die Sprache selbst schreibt, kann man sie so anpassen, dass sie für den Zweck am besten geeignet ist, also dass sie für häufig nötige Dinge bereits Abstraktionen bereitstellt. Also eine spezielle DSL.
Es gibt durchaus einige Spiele die Lua als Skriptsprache verwenden, weil es extra dafür gedacht wurde. Bei Sachen wie Linden Skript habe ich auch das Gefühl, dass es eher darum ging das Rad neu zu erfinden. Freie Software verwendet öfter etablierte Sprachen, weil es sie gibt und die Programmierer sich nicht die Mühe machen müssen das selbst machen zu müssen. Etwa eben Guile, Lua und Python.
Es gibt aber auch durchaus Sprachen, die extra für freie Software entwickelt worden sind, wie Emacs Lisp (das ist ein Lisp-Dialekt, nicht ganz eine neue Sprache und historisch bedingt) oder Vim-Script (hier geht es wohl darum, dass Vim-Script klein und schnell sein soll). Beide können aber auch mit Python gebediehnt werden, Vim unterstützt darüber hinaus auch Perl und Scheme.