Lua C++ Binding
-
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üssliDeine 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.html0x0ERROR
-
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.
-
<link> schrieb:
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
Augen auf und lesen:
http://www.lua.org/manual/5.2/manual.html
http://docs.python.org/3/reference/abbba schrieb:
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.Was suchst du dann? Die ganze Sprache ist dort beschrieben. Inklusive der Standardbibliothek, der API, der Hilfs-API und am Ende sogar noch mit der EBNF Angabe für die Parser. Das ist sogar ausführlicher als der C++ Standard.
Falls da wirklich noch etwas unklar bliebe, kannst ja auch gerne die Referenz-Implementation anschauen gehen.
Grüssli
-
Ich habe mir vorhin den Spaß gemacht, LuaJit und LuaBind in mein Programm reinzufrickeln. Ich muss schon sagen, das geht echt wie geschmiert, Hut ab. Die Schattenseite ist allerdings, dass das alleinige includen von luabind Visual Studio fast in die Knie zwingt. Da geht der CPU-Lüfter meines alten Core 2 Duo los und das Tippen wird streckenweise auch verzögert. Intellisense muss man dann immer zweimal antippen, bis irgendwas kommt. Ich werde morgen mal probieren, dafür einen pch zu generieren...
Das liegt doch hauptsächlich an den ganzen Variadics, die da simuliert werden, hoffe ich? Wenn ja, wäre das mal ein weiterer Grund, warum Microsoft mal über eine Consumer Preview hinaus kommen sollte
-
Okay, luabind hat seine Stärken, aber wenn man die nicht braucht, sorgt es für zuviel Overhead, außerdem funktionieren seine Exceptions nicht so gut in Verbindung mit LuaJit. Ich hätte hier eigentlich zwei Verwendungen für Lua: Einmal eine nicht performance-kritische, bei der aber viel von meinem Programm erreichbar sein sollte, und eine performance-kritische "Echtzeit"-Sache. Nun wäre es toll, wenn ich für das eine LuaJit verwenden könnte und für das andere normales Lua + Luabind. Nun sind die beiden Drop-In-kompatibel. Kann man irgendwie zwei unterschiedliche C++-Übersetzungseinheiten an unterschiedliche Bibliotheken mit gleichem Interface binden? Sodass praktisch die obj-Datei, die der Compiler pro Übersetzungseinheit ausspuckt schon an die zu verwendende Bibliothek gebunden ist?
Andererseits glaube ich gelesen zu haben, dass man bei LuaJit angeben kann, dass es kein Jit machen soll, vielleicht funktionieren dann ja exceptions so, wie man es möchte, dann könnte ich mir Frickeleien ersparen.
-
Hier gibts eine Übersicht über C++-Bindings. LuaBridge sieht auf den ersten Blick auch recht nett aus.
Ich habe auch ein wenig mit LuaBind gearbeitet, bisher allerdings erst für Konfigurationsdateien (keine Skripts). Die Bibliothek gehört vergleichsweise schon eher zu den Schwergewichten, auch da sie viel Boost verwendet, was die Kompilierzeit teilweise recht in die Höhe treibt.
-
Okay, die pch-Datei meiner kompletten Anwendung, inklusive MFC-Gedöns, und all denn Windows-Headern liegt derzeit bei ungefähr 80mb. Eine pch-Datei, die nur luabind enthält kommt bei 46mb zum Liegen.
-
Wenn ich hier gerade schon rumlungere...
LuaBind + LuaJIT + Ausnahmen sind unter win32 x86 wirklich problematisch (also wenn eine exception fliegt in einem Aufruf aus Lua), aber das lässt sich beheben. Jetzt funktioniert das bei mir gut, sogar mit Ausnahmen.
-
Decimad schrieb:
Wenn ich hier gerade schon rumlungere...
LuaBind + LuaJIT + Ausnahmen sind unter win32 x86 wirklich problematisch (also wenn eine exception fliegt in einem Aufruf aus Lua), aber das lässt sich beheben. Jetzt funktioniert das bei mir gut, sogar mit Ausnahmen.Wird ja auch hier beschrieben:
http://luajit.org/extensions.html#exceptionsUnd gilt halt eben nur für LuaJIT.
Grüssli