Skriptsprache gesucht



  • Zur Performance kann ich nichts sagen, aber die C++-Integration ist mit luabind sehr hübsch.



  • Performance ist auch Hübsch.



  • Berufspenner schrieb:

    Bring mir mal, rein aus Neugierde, ein sinnvolles Beispiel, warum man eine (Script-)Sprache in C++ integrieren sollte? 😕

    du hast eins direkt vor der nase: dein browser.



  • Danke nochmal.
    Gibst es eigentlich noch andere Empfehlenswerte Skriptsprachen ausser Lua, Python und Lisp?
    Kann sich vielleicht mal jemand zu Lisp äußern?
    Und gibt es Performancetechnisch irgendwelche Vergleiche.
    Zu Guter letzt: Kann mir jemand vielleicht einmal eine direkte Gegenüberstellung von Phyon, Lua und was er sonst noch benutzt, geben?

    Wieder Danke 🙂



  • Ruby fehlt in der Liste noch. Ansonsten frag halt Wikipedia.
    Was willst du denn für eine Gegenüberstellung haben?



  • Wikipedia sagt, es gäbe noch Tcl, aber das ist für mich uninteressant.
    Ich habe also die Wahl zwischen Lua, Python, Ruby und LISP, richtig?
    Mit Gegenüberstellung meinte ich Performance, C++-integration, Erlernbarkeit der Skriptsprache, Features, Lizens.

    Danke.



  • Im MS .net Framework sind C# und Visual Basic Compiler integriert. Du kannst da also Code on the fly übersetzen und ausführen.
    http://www.code-magazine.com/Article.aspx?quickid=0211081
    http://msdn.microsoft.com/en-us/library/microsoft.csharp.aspx

    Ist soweit ich weiß MS only. Mono hat im Moment noch nix und .net und std C++ beißen sich eh. Die Compiler liegen dem .net Framework bei. VS braucht nicht dafür installiert zu sein.

    Hat halt alle Nachteile des .net Framework jedoch wenn es auf die Ausführungsgeschwindigkeit an kommt dann dürfte diese Lösung alle von dir bereits genannten Optionen in den Schatten stellen.



  • kann mir jemand einen Tipp geben, was ich für performante Skriptsprachen in C++ kostenlos integrieren kann

    Geht das nur managed oder funzt das auch mit unmanaged C++?
    Ist das wirklich so schnell?
    sry, aber ich dachet immer, .NET-FrameW wäre soooo langsam.
    Gibst da irgendwelche Benchmarks/direkte vergleiche?

    thx



  • Ich denke das kommt stark darauf an, wie groß die Skripte sind. Die .NET-VM ist ganz schön fett im Vergleich zu den anderen Vorschlägen (siehe ursprüngliche Startzeit der Powershell …) und einige von den anderen (Lua iirc) werden auch JIT-kompiliert und sollten deshalb in der Ausführungsgeschwindigkeit etwa auf einem Level mit .NET liegen.



  • (Lua iirc) werden auch JIT-kompiliert

    Lua wird JIT-Kompiliert?
    Nicht dass ich wüsste.
    Es gibt doch extra LuaJIT, oder?
    Na egal, beantwortet seine Frage nach Benchmarks ja nicht.



  • http://www.lua.org/about.html schrieb:

    runs by interpreting bytecode for a register-based virtual machine[...]Several benchmarks show Lua as the fastest language in the realm of interpreted scripting languages.

    Maschinencode dürfte schneller sein.

    C# ist in den Händen eines Programmierers der die Sprache beherrscht für die meisten Anwendungen nicht langsamer als C++. (Bitte jetzt nicht flamen, wer das möchte soll bitte einen eigenen Thread aufmachen.)

    Geht das nur managed oder funzt das auch mit unmanaged C++?

    Müsste eigentlich auch in unmanaged C++ gehen. Kann aber gut sein, dass du eine Art Adapter in einer .net Sprache schreiben musst. Ist aber nicht die Richtung in der MS es erwartet (unmanaged in managed aufrufen ist leicht) also könnte das schon frickelig werden.

    Wenn Geschwindigkeit nun doch nicht so wichtig ist dann ist Lua wahrscheinlich eine gute Wahl.



  • fairplay schrieb:

    Ich habe also die Wahl zwischen Lua, Python, Ruby und LISP, richtig?
    Mit Gegenüberstellung meinte ich Performance, C++-integration, Erlernbarkeit der Skriptsprache, Features, Lizens.

    Mit C++-Kenntnis finde ich Python am einfachsten zu lernen. Die Integration in C++ nimmt sich afaik nicht viel, in Python kannst du z.B. Funktionen und Klassen samt Methoden aus der jeweils einen Sprache in der jeweils anderen verwenden, was, soweit ich weiß, bei mindestens noch Lua genauso möglich ist. Mit Lizenzen wirst du m.E. keine Probleme haben, alles frei. Performance, nun ja, lange Berechnungen dauern halt; ich empfinde aber sowohl Python als auch Lua annehmbar schnell, also schnell genug.



  • Ben04 schrieb:

    C# ist in den Händen eines Programmierers der die Sprache beherrscht für die meisten Anwendungen nicht langsamer als C++. (Bitte jetzt nicht flamen, wer das möchte soll bitte einen eigenen Thread aufmachen.)

    Joah, wie gesagt, ich ging für Lua von JIT aus, aber dann hatte ich wohl nur diese andere Bibliothek im Gedächtnis (spricht ja auch nichts dagegen, die zu verwenden). Aber .NET haut im Vergleich zu den anderen Skriptsprachen vor allem dadurch rein, dass die VM halt für Größeres bestimmt ist 😉
    Wenn nun das ganze Programm mit .NET läuft ist das natürlich kein Problem (es gibt übrigens dafür dann mit IronPython und IronRuby schöne Möglichkeiten, diese beiden Sprachen einzubinden, für Lua gibt's mit Sicherheit auch was), aber dafür muss man halt die Nachteile von .NET auf sich nehmen (speicherintensiver, nur sehr bedingt plattformunabhängig, lahmer Start (wobei sich das glaub ich mittlerweile verbessert hat, oder?)).

    Mit Boost.Python hab ich schon einiges gemacht, das funktioniert soweit recht gut. Allerdings ist Python manchmal vielleicht „zu“ mächtig, denn es gibt zur Zeit keine Möglichkeit, das Skript davon abzuhalten die Festplatte zu formatieren (du kannst die VM nicht in einen Sandkasten sperren, selbst wenn du alle Module entfernst und alle möglichen weiteren Tricks anwendest, ein gewiefter Programmierer wird es trotzdem umgehen können). Vielleicht ist da Lua sicherer, aber damit hab ich noch nicht gearbeitet.



  • fairplay schrieb:

    Ich habe also die Wahl zwischen Lua, Python, Ruby und LISP, richtig?
    Mit Gegenüberstellung meinte ich Performance, C++-integration, Erlernbarkeit der Skriptsprache, Features, Lizens.

    was erlernbarkeit angeht, dürften Lua und Python ganz vorn sein, ruby ist schon etwas schwieriger, aber noch OK. Lisp ist jedoch, allein schon wegen dieser s-expressions, für anfänger absolut ungeeignet.
    🙂



  • [quote="~fricky]was erlernbarkeit angeht, dürften Lua und Python ganz vorn sein, ruby ist schon etwas schwieriger, aber noch OK. Lisp ist jedoch, allein schon wegen dieser s-expressions, für anfänger absolut ungeeignet.
    :)[/quote]
    was erlernbarkeit angeht, finde ich Ruby am einfachsten. gewöhnungsbedürftiger ist da schon Python (aber der OP schien ja was gegen zeilenumbrüche zu haben, also scheidet das aus).
    wüsste nicht, was an Lisp oder s-expressions für den anfänger ungeeignet ist. der Lisp-dialekt Scheme wir an unis gerne verwendet, um anfängern das programmieren beizubringen.
    🙂



  • Hier hast du mal einen Benchmark. Schade das da nix von C#, wie oben vorgeschlagen steht. Das Java so weit oben steht hat mich aba eher gewundert 😮 Java kann man doch auch in C++ benutzen(native sh|t).

    luaJIT



  • fricky schrieb:

    wüsste nicht, was an Lisp oder s-expressions für den anfänger ungeeignet ist.

    diese upn-schreibweise z.b. (* 3 6) für 3*6 ist schon mal für einen anfänger total doof, es sei denn, er ist fan von ollen hp-taschenrechnern.

    fricky schrieb:

    der Lisp-dialekt Scheme wir an unis gerne verwendet, um anfängern das programmieren beizubringen.

    das gehört wohl zur aussiebe-taktik.
    🙂



  • luaJIT schrieb:

    Das Java so weit oben steht hat mich aba eher gewundert

    na, weil Java oft ausgeführte teile des codes (sogenannte hot spots) zu maschinencode compiliert.

    luaJIT schrieb:

    Java kann man doch auch in C++ benutzen(native sh|t).

    das wird eher andersrum gemacht. dass 'grosse' programm wird in Java geschrieben und das benutzt dann in C geschriebene libraries.
    🙂



  • Das geht auch anders herum-> Java Native Invocation, hab ich mich aba noch nicht so mit beschäftigt.
    Zum Thema:

    ich will nicht von Zeilenumbrüchen abhängig sein.

    Das ist doch bei Python nicht so, da bedeuten Einrückungen doch was, oder?



  • Danke nochmal.
    Ich hab eigentlich keine Lust u Zeit mich mit "schweren" VMs wie Java oder C# zu beschäftigen, außerdem klauen die meinem Eigentlichen Proggie nur Performance, ich will lieber auf die leichtgewichtigen Lösungen eingehen, also Python und Lua.
    Im Benchmark hat Lua ja die Nase vorn, also suche ich jetzt erstmal nach Lua<->C++-Bindings.
    Aber wer mir Tipps zu Python geben kann, immer her damit.

    PS: Lohnt es sich Boost in sein Projekt zu integrieren?


Anmelden zum Antworten