transpiler C++ rubrika: Programování: C/C++

8 Občan
položil/-a 31.12.2016

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.

odkaz Vyřešeno
Anonym
odpověděl/-a 31.12.2016
 
upravil/-a 1.1.2017

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"

Komentáře

  • Občan : Děkuji za tak obsáhlou odpověď. Prozkoumat zdroje mě ještě chvilku potrvá. Zatím jsem se pozastavil nad doporučením Rustu, který mě vždy přišel dost nízkoúrovňový, ale dnes ho prozkoumávám z funkcionálního úhlu pohledu a musím říct, že jsem se mýlil. Vypadá pefektně i v tomto směru. Faust je asi větší překvapení, sice si moc nedokážu představit jeho využití v praxi, ale ten algebraický Arrows koncept je natolik zajímavý, že s ním rozhodně začnu experimentovat. Tu část s Copilotem mě hodila naději, že by se dal přecijenom Haskell "nalinkovat". Jdu prozkoumávat dále. 31.12.2016

Pro zobrazení všech 2 odpovědí se prosím přihlaste:

Rychlé přihlášení přes sociální sítě:

Nebo se přihlaste jménem a heslem:

Zadejte prosím svou e-mailovou adresu.
Zadejte své heslo.