Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
perry
Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 16. červen 2013, 18:07:43 Předmět: |
|
|
Tak některá ADT si člověk napsat musí, ale psát např. vector nebo list mi přijde dost na hlavu _________________ Perry.cz |
|
Návrat nahoru |
|
|
Mem
Založen: 28. 07. 2007 Příspěvky: 1959 Bydliště: Olomouc
|
Zaslal: 16. červen 2013, 18:08:00 Předmět: |
|
|
OT: Vilém, Lemik: fakt se to píše výjimka, ne vyjímka
V C++ jsem výjimky moc nepoužíval (nechal jsem si prohledat zdrojáky her a jediné Try mám v názvu metod ). V C# už docela jo, zejména v UI kde je výkon šumák je to často elegantní řešení, v herní smyčce samozřejmě ne. Javu bych z diskuze vynechal, tam to nutí překladač u každé prkotiny tak stejně není moc co řešit a využití exceptions konzistentně se nabízí. |
|
Návrat nahoru |
|
|
LukeMak
Založen: 08. 02. 2013 Příspěvky: 16
|
Zaslal: 16. červen 2013, 18:41:57 Předmět: |
|
|
Dik za nazory a tipy... Mimochodem, cetl jsem to v knize Game Engine Architecture od Jasona Gregoryho (2009).
http://www.gameenginebook.com/ |
|
Návrat nahoru |
|
|
nou
Založen: 28. 07. 2007 Příspěvky: 1047
|
Zaslal: 16. červen 2013, 21:13:35 Předmět: |
|
|
ono hlavna vyhoda C++ je ze vas nic nenuti cokolvek pouzivat pricom ak nieco nepouzivate tak vas to ani nebrzdi rychlostne alebo pametovo. _________________ Najjednoduchšie chyby sa najtažšie hľadajú. |
|
Návrat nahoru |
|
|
pcmaster
Založen: 28. 07. 2007 Příspěvky: 1821
|
Zaslal: 16. červen 2013, 23:16:04 Předmět: |
|
|
OndraSej: Niekde v etere, z neovereneho zdroja a rozhodne uplne anonymne som zachytil, ze nove "systemy domacej zabavy", ktore boli nedavno predstavene, maju jedna, ktora na nas cumi cez "obloky" (pouzite slovnik, kto nerozumiete ), i ked dobre schovane, celkom ocakavane a neprekvapive C++ z vlastnej dielne niekde na zapadnom pobrezi a druha, z takej velikanskej, prestarnutej a ostrovnej monarchie niekde skoro az pred casovou hranicou nejaky ten Clang (ale back-end si nejako uz nepamatam ). A, samozrejme, pouzivat STL je velmi vhodne. RTTI alebo vynimky, naopak, urcite nie Tak ja len tolko, uplne off the record a nemate to odo mna... _________________ Off-topic flame-war addict since the very beginning. Registered since Oct. 2003!
Interproductum fimi omne est. |
|
Návrat nahoru |
|
|
TeaTime
Založen: 17. 06. 2011 Příspěvky: 264
|
Zaslal: 16. červen 2013, 23:33:52 Předmět: |
|
|
Proč není vhodné používat RTTI? |
|
Návrat nahoru |
|
|
OndraSej
Založen: 28. 07. 2007 Příspěvky: 765 Bydliště: Brandýs nad Labem
|
Zaslal: 16. červen 2013, 23:39:29 Předmět: |
|
|
pcmaster napsal: |
druha, z takej velikanskej, prestarnutej a ostrovnej monarchie niekde skoro az pred casovou hranicou |
Zde predpokladam mluvis o Velke Britanii, siru Sinclairovi a ZX Spectrum
Jinak clang se obvykle pouziva s LLVM, jestli podporuje i jiny backend si nejsem jisty. Vim, ze existuje gcc jako frontend k LLVM, ale opacne AFAIK nic neni (vetsinou s u toho rika neco, kde figuruji autori GCC a prasata v te same vete). _________________ http://trionteam.net |
|
Návrat nahoru |
|
|
Tringi
Založen: 28. 07. 2007 Příspěvky: 289
|
Zaslal: 16. červen 2013, 23:48:47 Předmět: |
|
|
TeaTime napsal: |
Proč není vhodné používat RTTI? |
RTTI neboli dynamic_cast a typeid jsou berličky pomocí kterých se lze vypořádat s nedokonalým designem systému.
V reálném světě není nic dokonalé a tak mohou pomoci s ptakopysky, nečekanými směry vývoje, a quick-and-dirty fixy, zvláště u legacy systémů, které mnohonásobně přerostly původní účel a původní limity. Počítat s nimi ale už na začátku návrhu je velmi špatné znamení. _________________ WWW | GitHub | TW |
|
Návrat nahoru |
|
|
TeaTime
Založen: 17. 06. 2011 Příspěvky: 264
|
Zaslal: 17. červen 2013, 00:44:57 Předmět: |
|
|
Tringi napsal: |
TeaTime napsal: |
Proč není vhodné používat RTTI? |
RTTI neboli dynamic_cast a typeid jsou berličky pomocí kterých se lze vypořádat s nedokonalým designem systému.
V reálném světě není nic dokonalé a tak mohou pomoci s ptakopysky, nečekanými směry vývoje, a quick-and-dirty fixy, zvláště u legacy systémů, které mnohonásobně přerostly původní účel a původní limity. Počítat s nimi ale už na začátku návrhu je velmi špatné znamení. |
Ono dynamic_casty hodně svádí k prasáckému použití, ale netvrdil bych, že se nedají použít správně. |
|
Návrat nahoru |
|
|
quas4
Založen: 18. 10. 2007 Příspěvky: 199
|
Zaslal: 17. červen 2013, 07:52:12 Předmět: |
|
|
OndraSej napsal: |
Jinak clang se obvykle pouziva s LLVM, jestli podporuje i jiny backend si nejsem jisty. |
Nepodporuje. Clang je vlajkova lod llvm. Zajimavosti je ze sami autori pak nedoporucuji pouzivani vyjimek a rtti (prvni verze clang je dokonce vubec neumely):
citace: |
In an effort to reduce code and executable size, LLVM does not use RTTI (e.g. dynamic_cast<>;) or exceptions. These two language features violate the general C++ principle of ?you only pay for what you use?, causing executable bloat even if exceptions are never used in the code base, or if RTTI is never used for a class. Because of this, we turn them off globally in the code.
That said, LLVM does make extensive use of a hand-rolled form of RTTI that use templates like isa<>, cast<>, and dyn_cast<>. This form of RTTI is opt-in and can be added to any class. It is also substantially more efficient than dynamic_cast<>.
|
OndraSej napsal: |
Vim, ze existuje gcc jako frontend k LLVM, ale opacne AFAIK nic neni (vetsinou s u toho rika neco, kde figuruji autori GCC a prasata v te same vete). |
znam jen plugin dragonegg pro novejsi gcc, ale vylozene o frontentu nevim. O co jde? |
|
Návrat nahoru |
|
|
perry
Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 17. červen 2013, 08:39:21 Předmět: |
|
|
dynamic_casty používám běžně při inicializaci enginu, kdy mám metodu s proměnným počtem parametrů typu Rodič a sypu tam potomky v různém pořadí. Pomocí dynamic_castu pak registruji do jednotlivých správců co je co. Možná to jde jinak, ale tohle funguje a že to brzdí mi při inicializaci nevadí _________________ Perry.cz |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1525 Bydliště: Telč
|
Zaslal: 17. červen 2013, 09:02:12 Předmět: |
|
|
perry: a to je právě dost divný :-)
Vilem Otte: taky nepoužívám výjimky, ale na druhou stranu, ošetřovat assertem i vstup, neni vhodný řešení. V releasu většinou vypneš asserty, jak si sám zmínil, ale vstup tim pádem zůstane bez ošetření chyb. To je blbě. Je lepší ještě definovat makro CHECK(cond), který se na releasu nevypíná a který neshazuje program. Dokonce je fajn, když ten CHECK vrací bool, abys mohl nějak reagovat. Jinak samozřejmě ASSERT i CHECK mají mít logování a nějaké pěkné vypsání hlášky.
(Mimochodem, tohle moc nechápu: http://pastebin.com/BGJ6EgZw . Co to je AssertExit? Jakým kouzlem kontrouje string line?) _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory
Naposledy upravil ]semo[ dne 17. červen 2013, 09:09:39, celkově upraveno 2 krát |
|
Návrat nahoru |
|
|
perry
Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 17. červen 2013, 09:07:10 Předmět: |
|
|
citace: |
perry: a to je právě dost divný |
Co je divný ? Že to funguje ? _________________ Perry.cz |
|
Návrat nahoru |
|
|
]semo[
Založen: 29. 07. 2007 Příspěvky: 1525 Bydliště: Telč
|
Zaslal: 17. červen 2013, 09:11:19 Předmět: |
|
|
No ta konstrukce, co popisuješ. V žádným enginu jsem nic takovýho neviděl, připadá mi to, jak bys jel z Brna do Prahy oklikou přes České Budějovice. Ale třeba tam chceš navštívit babičku :-). _________________ Kdo jede na tygru, nesmí sesednout.
---
http://www.inventurakrajiny.cz/sipka/
Aquadelic GT, Mafia II, simulátory |
|
Návrat nahoru |
|
|
perry
Založen: 28. 07. 2009 Příspěvky: 879
|
Zaslal: 17. červen 2013, 09:24:47 Předmět: |
|
|
Já to taky neviděl, já si to vymyslel _________________ Perry.cz |
|
Návrat nahoru |
|
|
|