Je C++ dobrá volba na větší projekt?

perceptron

Re:Je C++ dobrá volba na větší projekt?
« Odpověď #45 kdy: 05. 08. 2015, 12:05:32 »
Citace
Nevsim jsem si, ze by se poradne hry delaly treba v Jave.
minecraft trololo

inak mate pravdu javu zavriete na x serverov a nechate ju riesit linkedin, na hry hru zvolite c++


Re:Je C++ dobrá volba na větší projekt?
« Odpověď #46 kdy: 05. 08. 2015, 13:24:05 »
Citace
Nevsim jsem si, ze by se poradne hry delaly treba v Jave.
minecraft trololo

inak mate pravdu javu zavriete na x serverov a nechate ju riesit linkedin, na hry hru zvolite c++

Len PC verzia Minecraft-u je pisana v Jave, vsetky ostatne (PS3, PS4, X360, XONE, PSVita, Pocket Edition) su napisane v C++.

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Je C++ dobrá volba na větší projekt?
« Odpověď #47 kdy: 05. 08. 2015, 13:33:18 »
Nevsim jsem si, ze by se poradne hry delaly treba v Jave.

Prosim o definici "poradne hry". Minecraft je (alespon podle wiki) nejvice prodavanou PC hrou. Ma po dekompilaci ~180k loc (udaj je logicky pouze kod, bez komentaru), Quake 3 (vcetne enginu) s komentari mel ~300k loc. Jestli ani tohle neni poradna hra, tak uz nevim co je.

Co jsem tak sledoval, hodne indie her je nyni psanych v C# ci Jave (i 3d her, ne uplne jednoduchych). A enginy, ktere tvorily prave vetsinu kodu, se uz prestavaji psat na kolene a radeji se pouzivaji hotove vytunene.

PS: Je tady jeste problem srovnavani loc Javy a C++.

Re:Je C++ dobrá volba na větší projekt?
« Odpověď #48 kdy: 05. 08. 2015, 14:00:47 »
Ake datove typy su ten flag a b? A teda v com bol problem?

b je bool, flag byl int

problem byl v tom, že překladač předpokládá, že boolean je reprezentován jako true=1, false=0. Výše uvedený zápis se tedy v optimalizované verzi na úrovni -O3 vůbec nepřeložil, v kódu byl na tom místě obyčejný mov proměnné do proměnné. Což je v pořádku, pokud je opravdu dodrženo výše zmíněné kódování. Jenže proměnná b neobsahovala 1 jako true, ale číslo 52. Při testu if (b) to pořád funguje správně (testuje se na nulu). Ale operátor ?: už dopadl špatně díky jeho nepřeložení... Chybou bylo, že proměnná b nebyla inicializovaná

_________

Re:Je C++ dobrá volba na větší projekt?
« Odpověď #49 kdy: 05. 08. 2015, 14:02:56 »
Nevsim jsem si, ze by se poradne hry delaly treba v Jave.

Prosim o definici "poradne hry". Minecraft je (alespon podle wiki) nejvice prodavanou PC hrou. Ma po dekompilaci ~180k loc (udaj je logicky pouze kod, bez komentaru), Quake 3 (vcetne enginu) s komentari mel ~300k loc. Jestli ani tohle neni poradna hra, tak uz nevim co je.

Co jsem tak sledoval, hodne indie her je nyni psanych v C# ci Jave (i 3d her, ne uplne jednoduchych). A enginy, ktere tvorily prave vetsinu kodu, se uz prestavaji psat na kolene a radeji se pouzivaji hotove vytunene.

PS: Je tady jeste problem srovnavani loc Javy a C++.

Jo, Minecraft je napsaný v Javě a taky to podle toho vypadá. A prodávanost opravdu není dobrým indikátorem výběru vhodného jazyka. To by jste rovnou mohl tvrdit že Windows je skvěle navržený operační systém...


nula

Re:Je C++ dobrá volba na větší projekt?
« Odpověď #50 kdy: 05. 08. 2015, 14:17:25 »
Nevsim jsem si, ze by se poradne hry delaly treba v Jave.

Prosim o definici "poradne hry". ....

Poradne hry myslim Ackove hry. To ze je jedna uspesna hra, minecraft, psana v Jave jeste neznamena, ze v tom muzes udelat 99% i vsech ostatnich Ackovych her.
Uznavam, ze u her, kde technicke zpracovani jde stranou mozna se Java pouzit da. Tam kde je treba ale z HW vymacknout maximum, tak tam fakt ne.

Jann

Re:Je C++ dobrá volba na větší projekt?
« Odpověď #51 kdy: 05. 08. 2015, 14:19:19 »
Chybou bylo, že proměnná b nebyla inicializovaná

A to mi neříkej, že tě překladač nevaroval, že testuješ hodnotu neinicializované proměnné.

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Je C++ dobrá volba na větší projekt?
« Odpověď #52 kdy: 05. 08. 2015, 14:25:56 »
Jo, Minecraft je napsaný v Javě a taky to podle toho vypadá.
Jestli narazite na vykonost, tak vanilla Minecraft je hratelny na beznem kancelarskem orezavatku. Nebo podle ceho "to vypada"? Pokud se vam nelibi estetika, tak to je ciste subjektivni a IMO bez toho unikatniho vzhledu by MC nikdy neprorazil.

A prodávanost opravdu není dobrým indikátorem výběru vhodného jazyka. To by jste rovnou mohl tvrdit že Windows je skvěle navržený operační systém...
A co je tedy "poradna" hra? Uspesna, dobre hodnocena, prodavana, ziskova, s hodne radky kodu, originalni v nejakem aspektu, s odehranymi miliardami hodin, nebo s vyhozenymi miliony v grafice jako vetstina nynejsich 3A? Jen jsem reagoval na to, ze na "poradnou" hru si nevyberu Javu. Pritom ale tu nepopiratelne je Minecraft... (A dokonce, jak tu nekdo poznamenal, jeho porty nejedou nad JVM.)

Mel jsem pocit, ze zrovna Winy jsou v C++, takze ani volba jazyka je nezachranila ;D.

(Po dopsani textu dosla dalsi odpoved, rovnou tedy zareaguji.)

Nevsim jsem si, ze by se poradne hry delaly treba v Jave.

Prosim o definici "poradne hry". ....

Poradne hry myslim Ackove hry. To ze je jedna uspesna hra, minecraft, psana v Jave jeste neznamena, ze v tom muzes udelat 99% i vsech ostatnich Ackovych her.
Uznavam, ze u her, kde technicke zpracovani jde stranou mozna se Java pouzit da. Tam kde je treba ale z HW vymacknout maximum, tak tam fakt ne.


Jak jsem psal vyse, myslim ze ten trend uvidime vice a vice. Tezkou praci odedrou enginy napsane v C++, ale na herni logiku (tj. to, v cem jsou hry psane) bude "stacit" i Java/C#. Uz nyni jsou cim dal vetsi casti her psany v nejakem skriptovacim jazyce ala Lua nebo JS. Navic i s tim vykonem je to znacne diskutabilni, videl jsem hodne benchmarku, kde Java (po nekolika stovkach iteraci) porazela C++.


Daniel Kozak

Re:Je C++ dobrá volba na větší projekt?
« Odpověď #53 kdy: 05. 08. 2015, 14:38:14 »
Nevsim jsem si, ze by se poradne hry delaly treba v Jave.

Prosim o definici "poradne hry". ....

Poradne hry myslim Ackove hry. To ze je jedna uspesna hra, minecraft, psana v Jave jeste neznamena, ze v tom muzes udelat 99% i vsech ostatnich Ackovych her.
Uznavam, ze u her, kde technicke zpracovani jde stranou mozna se Java pouzit da. Tam kde je treba ale z HW vymacknout maximum, tak tam fakt ne.
zde se to probiralo, takze se tu nebudu rozepisovat
http://forum.dlang.org/thread/xozchleoiyxbsalbevlg@forum.dlang.org

nula

Re:Je C++ dobrá volba na větší projekt?
« Odpověď #54 kdy: 05. 08. 2015, 15:09:02 »
Jo, Minecraft je napsaný v Javě a taky to podle toho vypadá.
Jestli narazite na vykonost, tak vanilla Minecraft je hratelny na beznem kancelarskem orezavatku. Nebo podle ceho "to vypada"? Pokud se vam nelibi estetika, tak to je ciste subjektivni a IMO bez toho unikatniho vzhledu by MC nikdy neprorazil.

A prodávanost opravdu není dobrým indikátorem výběru vhodného jazyka. To by jste rovnou mohl tvrdit že Windows je skvěle navržený operační systém...
A co je tedy "poradna" hra? Uspesna, dobre hodnocena, prodavana, ziskova, s hodne radky kodu, originalni v nejakem aspektu, s odehranymi miliardami hodin, nebo s vyhozenymi miliony v grafice jako vetstina nynejsich 3A? Jen jsem reagoval na to, ze na "poradnou" hru si nevyberu Javu. Pritom ale tu nepopiratelne je Minecraft... (A dokonce, jak tu nekdo poznamenal, jeho porty nejedou nad JVM.)

Mel jsem pocit, ze zrovna Winy jsou v C++, takze ani volba jazyka je nezachranila ;D.

(Po dopsani textu dosla dalsi odpoved, rovnou tedy zareaguji.)

Nevsim jsem si, ze by se poradne hry delaly treba v Jave.

Prosim o definici "poradne hry". ....

Poradne hry myslim Ackove hry. To ze je jedna uspesna hra, minecraft, psana v Jave jeste neznamena, ze v tom muzes udelat 99% i vsech ostatnich Ackovych her.
Uznavam, ze u her, kde technicke zpracovani jde stranou mozna se Java pouzit da. Tam kde je treba ale z HW vymacknout maximum, tak tam fakt ne.


Jak jsem psal vyse, myslim ze ten trend uvidime vice a vice. Tezkou praci odedrou enginy napsane v C++, ale na herni logiku (tj. to, v cem jsou hry psane) bude "stacit" i Java/C#. Uz nyni jsou cim dal vetsi casti her psany v nejakem skriptovacim jazyce ala Lua nebo JS. Navic i s tim vykonem je to znacne diskutabilni, videl jsem hodne benchmarku, kde Java (po nekolika stovkach iteraci) porazela C++.

Mno, engine v c++, zbytek ve skriptovacich jazycich. Neni duvod tam mit tu Javu.
Tyhlety testy jsou vetsinou uplne k hovnu, protoze autor vetsinou jednu nebo druhou stranu posere(s prominutim).
Aby bylo jasno, ja proti Jave nic nemam, z casti me zivi(stejne jako C++) a proste vidim, ze v nekterych pripadech vykonove vubec nestiha. Z druhe strany vyvoj je v ni mnohem rychlejsi. V C++ je take jednoduche napsat dementne neefektivni kod, ale pokud se clovek dostatecne zamysli, opravdu se da optimalizovat vice - za cenu hory casu straveneho pri kodeni.

_________

Re:Je C++ dobrá volba na větší projekt?
« Odpověď #55 kdy: 05. 08. 2015, 15:12:35 »
Myslím to tak, že na to jak Minecraft vypadá, je na HW poměrně náročný. Proč myslíte, že všechny nové verze jsou v C++?

noef

  • *****
  • 897
    • Zobrazit profil
    • E-mail
Re:Je C++ dobrá volba na větší projekt?
« Odpověď #56 kdy: 05. 08. 2015, 15:36:06 »
Myslím to tak, že na to jak Minecraft vypadá, je na HW poměrně náročný. Proč myslíte, že všechny nové verze jsou v C++?

Nevim, mozna protoze na cilove platforme neni Java (nevim, jen placam)? Take oznaceni "nove verze" je takove divne, jsou to porty, nejsou to novejsi = lepsi verze hry. Hlavni "verze" je na PC a ta je stale v Jave.

Zajimalo by me, s cim srovnavate. Ono totiz pracovat s voxelovym svetem neni zadna sranda. Par voxelovych veci v C++ jsem zkousel (myslim ze cubeworld a trove) a vetsinou jely jeste hur nez Minecraft (navic s mnohem horsi dohlednosti i grafikou). Dokud jsem si nezkusil napsat rendrovani voxeloveho sveta, tak jsem myslel, jak je Minecraft spatne napsany. Az po teto zkusenosti jsem zjistil, jak je Minecraft (relativne) dobre napsany, na vine je totiz nepodpora jak HW tak SW pro operace s voxely (kdyz jsem to zkousel, tak nebyl zadny engine/knihovna pro Javu podporujici voxely - svet, chunky, meshing, svetlo atd.).

Pavel Tisnovsky

Re:Je C++ dobrá volba na větší projekt?
« Odpověď #57 kdy: 05. 08. 2015, 15:51:25 »
Navic, diverzita je dulezita; kdyby vsechno fungovalo (/bylo navrzene) jako JVM, jaky by to melo smysl?

Nemusí být úplně jako JVM. Například nemusí mít jednu velkou haldu, jenž sdílí všechna vlákna, může mít i více hald a jen některé z nich mohou být sdílené více vlákny.

No v JVM se taky napred alokuje na casti haldy lokalni pro jednotliva vlakna, je to potom mega rychle (jen posun ukazatele) a teprve, kdyz objekt prezije nejakou dobu, tak se dostane do jine oblasti haldy.

Radek Miček

Re:Je C++ dobrá volba na větší projekt?
« Odpověď #58 kdy: 05. 08. 2015, 16:05:23 »
Navic, diverzita je dulezita; kdyby vsechno fungovalo (/bylo navrzene) jako JVM, jaky by to melo smysl?

Nemusí být úplně jako JVM. Například nemusí mít jednu velkou haldu, jenž sdílí všechna vlákna, může mít i více hald a jen některé z nich mohou být sdílené více vlákny.

No v JVM se taky napred alokuje na casti haldy lokalni pro jednotliva vlakna, je to potom mega rychle (jen posun ukazatele) a teprve, kdyz objekt prezije nejakou dobu, tak se dostane do jine oblasti haldy.

Máte na mysli standardní vícegenerační kolektor?

Já měl na mysli to, že objekty zůstávají na lokální haldě, dokud k nim nepřistoupí jiné vlákno. Výhodou je, že s těmito objekty můžete pracovat jako v programech s GIL, čímž jsem reagoval na poznámku "Konecne, kdyby se GIL odstranil, znamenalo by to snizit vykon jednoduchych (jednovlaknovych) skriptu" od JS.

_________

Re:Je C++ dobrá volba na větší projekt?
« Odpověď #59 kdy: 05. 08. 2015, 16:10:02 »
Myslím to tak, že na to jak Minecraft vypadá, je na HW poměrně náročný. Proč myslíte, že všechny nové verze jsou v C++?

Nevim, mozna protoze na cilove platforme neni Java (nevim, jen placam)? Take oznaceni "nove verze" je takove divne, jsou to porty, nejsou to novejsi = lepsi verze hry. Hlavni "verze" je na PC a ta je stale v Jave.

Zajimalo by me, s cim srovnavate. Ono totiz pracovat s voxelovym svetem neni zadna sranda. Par voxelovych veci v C++ jsem zkousel (myslim ze cubeworld a trove) a vetsinou jely jeste hur nez Minecraft (navic s mnohem horsi dohlednosti i grafikou). Dokud jsem si nezkusil napsat rendrovani voxeloveho sveta, tak jsem myslel, jak je Minecraft spatne napsany. Az po teto zkusenosti jsem zjistil, jak je Minecraft (relativne) dobre napsany, na vine je totiz nepodpora jak HW tak SW pro operace s voxely (kdyz jsem to zkousel, tak nebyl zadny engine/knihovna pro Javu podporujici voxely - svet, chunky, meshing, svetlo atd.).

No zrovna Minetest mi běžel na Mobilním dvoujádru znatelně líp... a nejsou náročné operace s voxely jenom dalším důvodem pro C++?