Schnelle & gute embedding Scriptsprache

Es gibt 16 Antworten in diesem Thema. Der letzte Beitrag () ist von Fire.

    Schnelle & gute embedding Scriptsprache

    Guten Tag.
    Bin für ein Projekt auf der Suche nach einer Scriptsprache die sich leicht in ein Programm einbinden lässt.
    Ich habe dafür folgende Anforderungen:

    • komplett schwache oder komplett strikte Typisierung, irgendwas dazwischen ist unbrauchbar
    • Objektfähig ("OOP") oder Äquivalente
    • Dynamisch
    • Sehr schnell
    • Flexibel:
      • Lambda-Ausdrücke
      • Short Conditions (á la "eins() if 2 == 3 else zwei()")
      • ...

    • Exceptions (try'n'catch)
    • Syntax sollte eher wie C sein, nicht wie Pascal
    • Portabel (Linux und Windows)
    • Gewünscht: C++ API oder C++ Wrapper


    Bereits probiert habe ich:

    • Python - natürlich unschlagbar in Sachen Standardlib - dieser Vorteil ist auch gleichzeitig das größte Manko - wie soll man es sagen, es kommt überladen rüber. Trotzdem eine große Community, jedoch (m.M.n. veraltete) C-API, nicht gerade sehr schnell
    • V8 (JavaScript Engine von Google) - verdammt schnell, (m.M.n. jedoch) eine komische API die ich auch nach mehreren Wochen nicht verstehe
    • Pawn - kein OOP


    Ich habe bereits von LUA gehört (und dem neuen LuaJIT), jedoch ist die Sprache sowas von verdammt an Pascal orientiert, dass der Syntax damit gleich verdorben ist. Schade eigentlich.

    Vom Design her am brauchbarsten wäre JavaScript oder irgendwelche ähnlichen Sprachen. Die Prototype Idee gefällt mir sehr gut und macht das ganze besonders flexibel. Dank Web 2.0 ist JavaScript heute richtig schnell. V8 ist mir nur leider zu unklar um richtig damit arbeiten zu können, es fehlt die Community und Support. Andere Engines sind entweder zu lahm (TraceMonkey) und außerdem nicht einzeln verfügbar (zumindest habe ich dazu nichts gefunden) oder schlichtweg nicht Open Source (Opera).

    Bin dankbar für gute Tipps :)
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „Chrisber“ ()

    Ich muss sagen dass ich sehr skeptisch gegenüber Perl bin.
    So wirklich schnell kann diese Sprache nicht sein (jedenfalls nicht so schnell wie V8 oder Lua) und die Syntax gefällt mir auch nicht gerade so - die komisches $, @ und ! und was weiß ich machen das Ganze in meinen Augen recht unübersichtlich.

    Es ist nicht so, dass ich sie nicht wähle, weil ich sie nicht will, sondern weil ich es auch Anfängern erlauben möchte, Scripte für mein Programm zu schreiben. Und das geht mit Perl nicht wirklich gut (mit JavaScript schon :P).

    Gruß
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.
    Dazu habe ich keine Zeit. Und das ist sicher kein Pappenstil. Und schnell würde sie sicherlich auch nicht sein ^^

    Gruß
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.
    jenachdem was du machen willst, kannst du ja das ganze über ein Interface machen(und Assembly), damit hast du follgende vorteile:
    Wählbar zwischen VB, C#, J# und C++ .Net...VB = einfach ;)
    Probleme:
    entweder der Benutzer benötigt einen Compiler, oder du musst es beim starten des Programms kompilen...
    Wird durch das kompilieren(zu beginn) langsam...
    Ist wahrscheinlich nicht das was du willst/brauchst
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Gibt es in LUA denn Objekte und/oder Klassen? Ich dachte immer LUA ist prozedual.

    @ jvbsl: .NET ist nicht portabel (und jetzt sag bitte nicht Mono). Zu dem viel zu groß.

    Gruß
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.
    also ich kenn LUA nicht wirklich, hab mal 5min(nicht für mich) damit "programmiert"...

    ich versteh leider nicht ganz, für was du das brauchst, anscheinend nicht für ein .Net Programm, dann wären Interfaces ja sowieso nichts :P
    Wenn für ein .Net Programm, dann kannst du das ganze schön in eine .vb oder von mir aus txt Datei schreiben lassen, wenn es erst beim einbinden kompiliert wird(spätestens da benötigst du ja eh das .Net)...Für das schreiben der Textdatei wird kein .Net benötigt ;)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Nein, es geht tatsächlich nicht um .NET, sonst müsste das ganze ja auch nicht portabel sein.
    Eher darum dass ich einen Wrapper für ein Spiel erstellen möchte. Via Script soll man das Spiel beeinflussen und verändern können. Und etwas langsames kann ich da gar nicht gebrauchen ;)

    Gruß
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.
    C(++). Es geht um Counter-Strike Source (Source Engine). Dort kann man so gut wie alles manipulieren (via Plugin).

    Gruß
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.
    dann würde ich(jetzt nicht aus Erfahrung) auch LUA sagen, das hilft dir evtl.:
    debian-administration.org/articles/264
    lua.org/pil/25.html

    (wohl eher das zweite, weiß nicht obs Plattformübergreifend ist...)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Lua hat soweit ich weiss keine Klassen. Dafür kannst du aber das, was du willst includen.

    Für mein G-Workstation Applet, hab ich z.b diese Luafile geschrieben:

    Quellcode

    1. pluginname = "PluginTest"
    2. version = "1.0"
    3. creator = "Tsuyo"
    4. mail = "1@tsuyo.de"
    5. light = 0
    6. value = 0
    7. menu = false
    8. dofile("plugins/values")
    9. require "socket"
    10. function sleep(sec)
    11. socket.select(nil, nil, sec)
    12. end
    13. function load()
    14. sethandler(HANDLER_BUTTON,"buttonchanged")
    15. sethandler(HANDLER_DRAW,"draw")
    16. end
    17. function draw()
    18. if keyboard() == K_MONO then
    19. drawtext(now("HH:mm:ss"), "Arial", 255, 0, 0, 0, 7, -2, 0, 150, 150)
    20. drawtext(now("dd/MM/yyyy"), "Arial", 255, 0, 0, 0, 7, 112, 0, 150, 150)
    21. drawline(255, 0, 0, 0, 0, 10, LCD_M_WIDTH, 10)
    22. if menu then
    23. fillrectangle(255, 0, 0, 0, 0, 10, LCD_M_WIDTH, LCD_M_HEIGHT)
    24. end
    25. end
    26. end
    27. function buttonchanged()
    28. if button() == LCD_M_BUTTON1 then
    29. if menu then
    30. menu = false
    31. else
    32. menu = true
    33. end
    34. end
    35. end

    Es ist einfach super.. ^^
    Funktionen musst du natürlich im Programm selber schreiben. Wie bei mir z.b sethandler() oder now().
    Try'n'Catch hab ich mal iwo gesehen, musst du selbst kompilieren. Ausserdem hat lua ein "Uber" packet. HAt glaub ich 12 MB, damit kannst du sogut wie alles machen.
    Multithreading, "GDI", Verbindungen über TPC/IP erstellen usw.

    Falls du luacover brauchst, kannst du mich dann ja mal für dein Addon anfragen ;)
    Weil ES nicht meinen Prinzipien entspricht und einfach völlig überladen ist.
    Außerdem macht mir sowas Spaß ;D

    Gruß
    To make foobar2000 a real random music player, I figured out the only way to achieve this is to use Windows Media Player.

    At some point in time, you recognize that knowing more does not necessarily make you more happy.