Lua C++ Binding


  • Administrator

    Shade Of Mine schrieb:

    Wie gesagt: ich starte auf eine gewisse Useraction sehr oft und sehr viele Lua-Scripte die jeweils minimal und trivial sind. Oft tun sie garnichts anderes als nur ein print() aufzurufen.

    Wirlich direkt ein print() aufrufen? Du hattest gesagt, dass du die Daten aus Lua danach weiterverarbeiten willst, oder? Wieso stellst du dann nicht eine API in Lua zur Verfügung? Über die API kann man Daten aus dem Programm holen, welche zur Verfügung gestellt werden, man kann aber auch wieder Daten zurückgeben.

    Die API kannst du über C++ Funktionen und Objekte per LuaBind den Lua Skripts zur Verfügung stellen.

    Grüssli



  • ok, also dann halt keinen eigenen interpreter 🙄

    allerdings könnten von der arbeit andere leute profitieren, wenn es anscheinend keinen gescheiten interpreter/parser gibt.

    mal schaun... der erste schritt wäre, dass man sich die sprache genau anschaut. gibt es eine art "sprach-standard" wie bei c?
    wo find ich den für lua? und wo für python? hab schon ein bissl gegoogelt, konnte aber nix in die richtung finden.

    Ethon schrieb:

    Ja, wenn ich ein Auto will, baue ich mir auch einfach selbst eins!

    Dravere schrieb:

    Gegenfrage: Wieso diese Menge an Zusatzaufwand betreiben, wenn man fix fertige Lösungen nehmen kann?

    Gegenfrage: Was mache ich mal in 30 jahren, wenn es keinen treiber/keine software mehr für meinen digitalen-"video-auf-pc-übertrag"-player mehr gibt? ich schreib mir selbst software. deshalb lernt man doch programmieren. um selbst was zu schaffen.



  • Im professionellen Bereich gibt es Deadlines. Und warum soll es fuer jeden scheiss einen Iso/IEEE/whatever-Standard wie bei C geben, wenn sowieso nur einer es implementiert?



  • Dravere schrieb:

    Wirlich direkt ein print() aufrufen? Du hattest gesagt, dass du die Daten aus Lua danach weiterverarbeiten willst, oder? Wieso stellst du dann nicht eine API in Lua zur Verfügung? Über die API kann man Daten aus dem Programm holen, welche zur Verfügung gestellt werden, man kann aber auch wieder Daten zurückgeben.

    Die API kannst du über C++ Funktionen und Objekte per LuaBind den Lua Skripts zur Verfügung stellen.

    Ein eigenes print natürlich.
    Und wie gesagt: die meisten Scripte brauchen da nicht viel. Aber es gibt wenige Scripte wo es dann notwendig ist die Daten zu transformieren und zu bearbeiten. Das kommt selten vor, ist aber wichtig dass es möglich ist.

    Prinzipiell generiert mir Lua Textdateien die weiter verarbeitet werden. Oft ist es ein Textblock der Fix ist, dann macht das Script nur print("Lorem ipsum...") aber ab und zu ist es notwendig dass es generierte Daten (die aus dem C++ teil kommen) als Ausgangsmaterial nutzen muss.

    So übergibt C++ zB eine liste an Lua, und Lua formt diese dann entsprechend um, um wieder reinen text zu bekommen. Da gibt es eine Menge an Infos die theoretisch Lua zur Verfügung stehen müssen - auch wenn nur ein sehr kleiner Teil der Scripte diese nutzen wird.


  • Administrator

    lua sprachstandard? schrieb:

    allerdings könnten von der arbeit andere leute profitieren, wenn es anscheinend keinen gescheiten interpreter/parser gibt.

    Wer sagt denn, dass es keinen guten Interpreter/Parser gibt?

    lua sprachstandard? schrieb:

    mal schaun... der erste schritt wäre, dass man sich die sprache genau anschaut. gibt es eine art "sprach-standard" wie bei c?
    wo find ich den für lua? und wo für python? hab schon ein bissl gegoogelt, konnte aber nix in die richtung finden.

    Deine Suchfähigkeiten sind ziemlich schlecht.
    http://www.lua.org/
    http://python.org/

    lua sprachstandard? schrieb:

    Gegenfrage: Was mache ich mal in 30 jahren, wenn es keinen treiber/keine software mehr für meinen digitalen-"video-auf-pc-übertrag"-player mehr gibt? ich schreib mir selbst software. deshalb lernt man doch programmieren. um selbst was zu schaffen.

    Das hat überhaupt nichts mit der aktuellen Aufgabenstellung zu tun. Und schreibst du alle Software selbst? Auch dein Betriebsystem? Oder nutzt du Bibliotheken, damit du nicht alles selbst machen muss?

    @Shade Of Mine,
    Wo genau liegt denn aktuell noch das Problem? Deine zwei Fragen sind somit:
    Wrapper verwenden?
    Welcher Wrapper verwenden?

    Um mehr geht es nicht, oder?

    Grüssli



  • Dravere schrieb:

    @Shade Of Mine,
    Wo genau liegt denn aktuell noch das Problem? Deine zwei Fragen sind somit:
    Wrapper verwenden?
    Welcher Wrapper verwenden?

    Um mehr geht es nicht, oder?

    Es geht um den generellen Ansatz. Keine konkreten Probleme. Eine Minimallösung mit direkt der Lua API und ein kleiner SWIG Test haben schon funktioniert.

    Mich interessiert hier lediglich was so die gängigen Varianten sind, das anzugehen. Ob sich so schwergewichte wie SWIG lohnen - oder ob man lieber alles direkt mit der Lua-C-API machen sollte.

    Ich habe noch nie Lua in C++ eingebettet und will daher eine Designtechnisch korrekte Lösung haben. Irgendwie zusammenpfuschen wäre ja kein Problem 😉



  • Es ist wie mit allem: Das erste Mal kriegt man es nie richtig hin.



  • knivil schrieb:

    Es ist wie mit allem: Das erste Mal kriegt man es nie richtig hin.

    exakt 😉
    deshalb der thread.
    damit die Lösung wenigstens keine ist, für die man sich schämen muss...



  • Gegenfrage: Was mache ich mal in 30 jahren, wenn es keinen treiber/keine software mehr für meinen digitalen-"video-auf-pc-übertrag"-player mehr gibt? ich schreib mir selbst software. deshalb lernt man doch programmieren. um selbst was zu schaffen.

    Programmierst du deine Treiber etwa selbst? Am Besten gleich dein ganzes OS?
    Für Lua einen eigenen Interpreter zu schreiben ist Mist da der Standardinterpreter extrem ausgereift, gut geschrieben und massiv getestet ist.



  • Dravere schrieb:

    Deine Suchfähigkeiten sind ziemlich schlecht.
    http://www.lua.org/
    http://python.org/
    Grüssli

    Deine Lesefähigkeiten sind ziemlich schlecht.
    ich schrieb bereits, dass ich über google gesucht hab. und JA, auf den webseiten hab ich zuerst geschaut.

    für arroganz und eitelkeit hab ich kein verständnis.
    wenn ich damit meine? keine ahnung.

    Ethon schrieb:

    Programmierst du deine Treiber etwa selbst? Am Besten gleich dein ganzes OS?
    Für Lua einen eigenen Interpreter zu schreiben ist Mist da der Standardinterpreter extrem ausgereift, gut geschrieben und massiv getestet ist.

    ich schlimmsten fall: ja.
    der begriff "os" ist weit gefasst. auch ein 5 zeiliger assemblercode, der nur code auf dem bildschirm ausgibt, ist ein betriebssystem.



  • hingerotzt& hingeschi schrieb:

    der begriff "os" ist weit gefasst. auch ein 5 zeiliger assemblercode, der nur code auf dem bildschirm ausgibt, ist ein betriebssystem.

    Nein, ist es nicht.

    Und was missfaellt dir an Lua.org? Warst du mit der Dokumentation unzufrieden? Was stoerte dich?



  • hingerotzt& hingeschi schrieb:

    ich schlimmsten fall: ja.
    der begriff "os" ist weit gefasst. auch ein 5 zeiliger assemblercode, der nur code auf dem bildschirm ausgibt, ist ein betriebssystem.

    Laut dem Christbaum:

    Ein Betriebssystem ist eine Sammlung von Computerprogrammen, die die Systemressourcen eines Computers wie Arbeitsspeicher, Festplatten, Ein- und Ausgabegeräte verwaltet und diese Anwendungsprogrammen zur Verfügung stellt. Das Betriebssystem bildet dadurch die Schnittstelle zwischen den Hardwarekomponenten und der Anwendungssoftware des Benutzers.



  • knivil schrieb:

    hingerotzt& hingeschi schrieb:

    der begriff "os" ist weit gefasst. auch ein 5 zeiliger assemblercode, der nur code auf dem bildschirm ausgibt, ist ein betriebssystem.

    Nein, ist es nicht.

    Und was missfaellt dir an Lua.org? Warst du mit der Dokumentation unzufrieden? Was stoerte dich?

    na das ich nirgends einen ausformulierten standard finde.

    irgendwo muss beschrieben sein, wie die sprache aussieht und aufgebaut ist.

    gilt sowohl für lua als auch für python.

    doch. ein os ist nicht definiert. nur weil man eine kommandozeile, und keinen bunten fensterchen hat, auf die jeder depp klicken kann (oder auch nicht...), heißt das noch nicht, dass das kein os ist.

    cli
    func1:
          jmp func1
    

    und da ist es schon, ein mini betriebssystem. es hat natürlich keine funktion, aber das bedeutet nix.



  • Offtopic: Damit das System auch booten kann findet man ein Tutorial
    hier: http://www.tutorials.de/content/171-ein-eigenes-kleines-betriebssystem.html

    0x0ERROR



  • der code oben lässt sich mit nasm kompilieren, außerdem funktioniert er, dafür brauch ich kein tutorial.

    einfach mit einem hexeditor einen usb-stick öffnen und die paar bytes manuell reinschreiben. dann system neustarten und vom usb-stick booten.

    läuft.

    also wo sind jetzt nochmal die standards von lua und python?



  • ja funktioniert schrieb:

    also wo sind jetzt nochmal die standards von lua und python?

    Als ob ein Standard soviel bedeuten würden. Das ist einfach ein falsches realitätsverständnis. Ein ISO Standard ist auch nur ein Dokument. Und eine genaue Beschreibung der Sprache gibt es sowohl für Python als auch für Lua. Und sowohl für Python als auch für Lua gibt es mehrere miteinander kompatible Implementierungen.

    Lua Implementierungen sind zB deutlich kompatibler zueinander als Implementierungen des offizielen C++11 ISO Standards.

    Lustig, nicht wahr?



  • Shade Of Mine schrieb:

    ja funktioniert schrieb:

    also wo sind jetzt nochmal die standards von lua und python?

    Als ob ein Standard soviel bedeuten würden. Das ist einfach ein falsches realitätsverständnis. Ein ISO Standard ist auch nur ein Dokument. Und eine genaue Beschreibung der Sprache gibt es sowohl für Python als auch für Lua. Und sowohl für Python als auch für Lua gibt es mehrere miteinander kompatible Implementierungen.

    Lua Implementierungen sind zB deutlich kompatibler zueinander als Implementierungen des offizielen C++11 ISO Standards.

    Lustig, nicht wahr?

    ja WO sind diese beschreibungen? WO ist der ISO-standard? darum gehts doch hier



  • WOOOOOO? schrieb:

    ja WO sind diese beschreibungen? WO ist der ISO-standard? darum gehts doch hier

    WOOOOO? Nur WOOOOO?? sind die lustigen trolle?
    Darum gehts doch hier.

    PS:
    Ein Standard ist keinen pfifferling Wert.
    Den Wert bekommt ein Standard durch die Umsetzung von Leuten. Und das ist das essentielle. Mit genug Geld kann alles ein ISO Standard werden, aber praktischen nutzen hat sowas nicht.

    Die Frage ob Python ISO Standardisiert werden soll, ist eine reine finanzielle Frage. Und ein ISO Standard wäre für Sprachen wie Python sehr schlecht.



  • Shade Of Mine schrieb:

    WOOOOOO? schrieb:

    ja WO sind diese beschreibungen? WO ist der ISO-standard? darum gehts doch hier

    WOOOOO? Nur WOOOOO?? sind die lustigen trolle?
    Darum gehts doch hier.

    PS:
    Ein Standard ist keinen pfifferling Wert.
    Den Wert bekommt ein Standard durch die Umsetzung von Leuten. Und das ist das essentielle. Mit genug Geld kann alles ein ISO Standard werden, aber praktischen nutzen hat sowas nicht.

    Die Frage ob Python ISO Standardisiert werden soll, ist eine reine finanzielle Frage. Und ein ISO Standard wäre für Sprachen wie Python sehr schlecht.

    ach ihr mit euren trollen, ich seid doch alle paranoid. 🙄

    sowohl lua als auch python sind sprachen unter freien lizenzen, warum sollte es keine öffentlichen standards geben? es gibt ja nichtmal irgendwelche beschreibungen, nichtmal das. nach welchen standards werden denn die parser und interpreter geschrieben? das würde mich mal interessieren.

    es MUSS irgendwo einen standard oder eine genaue beschreibung geben, sonst funktioniert das nicht. das ist mit allen dingen so. wenn alle ihr eigenes ding machen, dann funkioniert nix



  • das hier wäre z.b. was:

    http://www.lua.org/manual/5.2/manual.html

    ist aber halt nicht genau das, was ich suche.


Anmelden zum Antworten