transpiler C++ rubrika: Programování: C/C++
Ve vodách C++ se moc neorientuju. Pohrávám si poslední dobou s herníma engine. Ovšem herní logiku není moc komfortní psát přímo v C++.
Pochopitelně znám Lua a Go. Ovšem hledám něco spíše funkcionálního. Něco co podobá Haskellu či Scale. Třeba i Swift mě přišel na funkcionální zápis perfektní, ale netuším, jak ho nalinkovat a pan Google moc nepomohl. Nějaký nápad? Nemusí to být tedy přímo transpiler.
Transpiler do C++/C je docela starý koncept. Např. Eiffel (staticky typováný OO jazyk) tohle dělá. Ale je to dnes minoritní jazyk, který asi těžko můžu doporučit.
Nim a FFI
Ale teď více prakticky. Podobně to dělá např. jazyk Nim, který je docela na vzestupu. http://nim-lang.org/. Nim má dobré FFI pro práci s C/C++ knihovnami.
Rust a FFI
Pak je Rust, asi se nemusím moc rozepisovat. Rust se mi zdá na game engine jak dělaný.
Zkuste https://github.com/tomaka/glium a https://github.com/tomaka/glutin, https://github.com/sebcrozet/nphysics; FFI také dost dobré.
Scala a ScalaJS
Scala snad bude v budoucnu kompilovatelná viz Scala Native projekt a Scala JS je dost použitelná už nyní. Tohle by se vám mohlo líbit: http://michaelshaw.io/game_talk/game.html; Zkusil bych pro začátek Scala + JWGL: https://github.com/dlpatri/scala-lwjgl;
C/C++ do JS
Pokud se zajímáte o JS, pak lze naopak psát v C/C++ a kompilovat do JS pomocí projektu https://github.com/kripken/emscripten.
Lua/Python
Lua i Python se dají dobře připojit (Lua asi lépe) k C/C++ programu. Pro Python je dobrá knihovna Boost Python, která trochu zpříjemňuje komunikaci mezi C++ a Pythonem.
Popravdě, myslím, že transpilace do C/C++ se v herním světě moc nenosí. Buď se to napíše v něčem co se k C/C++ připojí nebo se to rovnou píše v něčem jiném, ale výkon pak samozřejmě nesmí být priorita. Znám dost věcí, co se transpilují do C/C++ např. func. jazyk Faust na DSP "http://faust.grame.fr/", Haskell do C viz https://hackage.haskell.org/package/copilot, ale úplně nevím, jestli se mu dá nakonec vyhnout, pokud to má být opravdu udržovatelné respektive na takovém transpilátoru se dělá asi protože je to dost specializovaná věc a těžko to bude mít větší uživatelskou základnu.
Další divnosti co mne zaujali:
"http://www.abiezzi.com/Salim/publications/Docs/Functional%203D%20-%20eoog94.pdf"
"https://www.youtube.com/watch?v=rX0ItVEVjHc&t=1859s"
"https://www.youtube.com/watch?v=ZHqFrNyLlpA&t=1063s"
"https://www.youtube.com/watch?v=TH9VCN6UkyQ&list=PLmV5I2fxaiCKfxMBrNsU1kgKJXD3PkyxO"
Pro zobrazení všech 2 odpovědí se prosím přihlaste:
Nebo se přihlaste jménem a heslem:
Komentáře