.[ ČeskéHry.cz ].
Mate radi C++?
Jdi na stránku Předchozí  1, 2, 3, 4, 5, 6, 7  Další
 
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++
Zobrazit předchozí téma :: Zobrazit následující téma  
Autor Zpráva
quas4



Založen: 18. 10. 2007
Příspěvky: 199

PříspěvekZaslal: 10. únor 2008, 11:16:17    Předmět: Odpovědět s citátem

Eosie napsal:
quas4 napsal:
- nedoresene vyjimky.. vyhozeni spec. vyjimky v "locknute" zone (mezi mutex_lock/unlock) vznika deadlock + mozny leak.

Obal mutex do objektu, v konstruktoru zamkni, v destruktoru odemkni. Mutex deklaruj lokálně v bloku. Po vyhození vyjímky z uzamčené části se ti to automaticky odemkne tím, že se zavolá destruktor toho objektu --> žádnej deadlock.


Tohle jsem bohuzel uz videl nekolikrat. Co se ma stat v pripade ze mutex_unlock() selze? Vyhazovat v destruktoru dalsi vyjimku sebou nese *dalsi* (jeste vetsi) problem.. Vice viz vyhledavac: exception safety vs thread safety.

Eosie napsal:

Nezmínils největší problém C++, kterej mě nějakou dobu docela sere - #include. Ve větším projektu je docela peklo zařídit správné pořadí includů a hrozně to protahuje kompilaci, přitom je to úplně zbytečná a zastaralá věc ze 70. let. Viz jak to řeší Java, C#, ...


Nepovazuju za nejvetsi problem. Je to imho spise otazka peclivosti. btw: c++0x ma tohle nejak nove resit? Napr. conceptgcc nic takoveho v planu ani nema.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 13. únor 2008, 07:54:33    Předmět: Odpovědět s citátem

quas4 napsal:
Nepovazuju za nejvetsi problem. Je to imho spise otazka peclivosti. btw: c++0x ma tohle nejak nove resit? Napr. conceptgcc nic takoveho v planu ani nema.

Já to teda považuju za problém a způsobuje to komplikace při návrhu, osobně musím docela dost používat dopředné deklarace. Jelikož se vyhýbám singletonům, nemám globální přístup k hlavním objektům a každý objekt, který je potřebuje, si jejich instance musí držet. No a vzhledem k tomu, že ten hlavní objekt si taky drží nějaké ty instance, u každé musím řešit, který z nich definuju dřív a kde udělám dopředné definice tříd. Ty vztahy tam jsou někdy docela obludný. Bohužel jsme si na #include tak zvykli, že si ani neuvědomujeme, jaké důsledky a nevýhody to má. Lidi dělající v C# nebo v Jave se tomu mohou akorát smát. Wink Pokud vím, do nového C++ se s tím nic dělat nebude.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
quas4



Založen: 18. 10. 2007
Příspěvky: 199

PříspěvekZaslal: 13. únor 2008, 09:16:17    Předmět: Odpovědět s citátem

Eosie napsal:
quas4 napsal:
Nepovazuju za nejvetsi problem. Je to imho spise otazka peclivosti. btw: c++0x ma tohle nejak nove resit? Napr. conceptgcc nic takoveho v planu ani nema.

Já to teda považuju za problém a způsobuje to komplikace při návrhu, osobně musím docela dost používat dopředné deklarace.


Nic takove se mi nestava a ani me to netrapi. Muzes napsat nejaky maximalne jednoduchy demonstrativni priklad? Jestli to komplikuje navrh tak neco smrdi..
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MD



Založen: 29. 07. 2007
Příspěvky: 437
Bydliště: Praha

PříspěvekZaslal: 13. únor 2008, 09:27:24    Předmět: Odpovědět s citátem

Na jednoduchych prikladech #includy problem nejsou. Problem nastava az u vetsich projektu, ktere se vyviji, vazby mezi objekty jsou komplexni, obcas se pouzivaji templaty, obcas je potreba udelat refactoring ... A diky includam vznika pekny bordel.

Ja plne souhlasim s Eosie, ze inculudy jsou jedna z nejhorsich a nejzastaralejsich veci v C++. Je to velke zlo, ktere obzvalste vynikne, kdyz mate zkusenosti i s jazyky, ktere tento problem nemaji (C#).
_________________
- play with objects - www.krkal.org -
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Marek



Založen: 28. 07. 2007
Příspěvky: 1782
Bydliště: Velká Morava

PříspěvekZaslal: 13. únor 2008, 09:36:14    Předmět: Odpovědět s citátem

Návrh to nekomplikuje (aspoň mně ne zrovna), ovšem cykly při includování jsou celkem normální (Mesh -> Efekt -> Shader -> Mesh). Pak šablony - pochopitelně musí být v headerech. A,B jsou šablony tříd. Metoda třídy A používá třídu B a B používá třídu A, tzn. musím uvést celý kód třídy A kromě té metody, celý kód třídy B (+ závislé objekty) a až nakonec uvést tu jednu metodu A, kde už budu moct B použít - tzn. je umístěna ve zdrojáku daleko od ostatního kódu A, což může vést k nepřehlednostem. Vím, že by se to dalo řešit líp, ale už to, že musíš mít na paměti, co se ti kde includuje a v jakém pořadí, je nevýhoda.
_________________
AMD Open Source Graphics Driver Developer
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
quas4



Založen: 18. 10. 2007
Příspěvky: 199

PříspěvekZaslal: 13. únor 2008, 10:45:54    Předmět: Odpovědět s citátem

Eosie napsal:
Návrh to nekomplikuje (aspoň mně ne zrovna), ovšem cykly při includování jsou celkem normální (Mesh -> Efekt -> Shader -> Mesh). Pak šablony - pochopitelně musí být v headerech. A,B jsou šablony tříd. Metoda třídy A používá třídu B a B používá třídu A, tzn. musím uvést celý kód třídy A kromě té metody, celý kód třídy B (+ závislé objekty) a až nakonec uvést tu jednu metodu A, kde už budu moct B použít - tzn. je umístěna ve zdrojáku daleko od ostatního kódu A, což může vést k nepřehlednostem.


zkusil jsem si to predstavit bez demonstracniho prikladu a selhal jsem Smile

MD napsal:
Na jednoduchych prikladech #includy problem nejsou.


Neni-li schopen clovek to zredukovat na jednoduchy priklad toho co ho trapi pak mi pripada ze mu plne nerozumi a mel by se vratit zpet ke zkoumani jeho podstaty Smile

mimo diskusi bych chtel upozornit na vcerejsi release llvm (low level virtual machine) - vice www.llvm.org . Sleduju uz delsi dobu a je to imho dost nadejny projekt (obzvlast co se tyka vyvoje her).
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
rezna



Založen: 27. 07. 2007
Příspěvky: 2156

PříspěvekZaslal: 13. únor 2008, 11:17:38    Předmět: Odpovědět s citátem

quas4 a nebo pokud si neumis predstavit problem s includy asi jsi nenapsal kod v C/C++ ktery by mel 100k a vice radku a byl alespon castecne rozumne rozdeleny

taky mam tyhle problemy - firemni jadro ktery ja navic v COMu a vic nez sablony pouziva makra je taky boj upravit, protoze to poradi includu je tam priserne dulezity

naopak v C# neni problem ani pri 300k radcich

ono je to ale holt dano principem kompilatoru, kterej potrebuje vsechno mit v jednom souboru - ten kompilne a vyvplivne .obj, ktere finalne nalinkuje
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
quas4



Založen: 18. 10. 2007
Příspěvky: 199

PříspěvekZaslal: 13. únor 2008, 11:53:59    Předmět: Odpovědět s citátem

rezna napsal:
quas4 a nebo pokud si neumis predstavit problem s includy asi jsi nenapsal kod v C/C++ ktery by mel 100k a vice radku a byl alespon castecne rozumne rozdeleny


to je demagogie. napsal. mam za sebou napr. kontribuci do projektu jako je blender/tuhopuu (blender.org) a jinych dalsich.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MD



Založen: 29. 07. 2007
Příspěvky: 437
Bydliště: Praha

PříspěvekZaslal: 13. únor 2008, 12:56:10    Předmět: Odpovědět s citátem

Ja bych to schrunul takto: inkudy vznikly v dobach temneho C, kdy se u parametru a membru vystacilo s typem void * Wink Tyto doby jsou ale davno pryc, prislo typove bezpecne programovani a s tim prisly problemy, o kterych pise Eosie. Pointr na tridu je jeste OK, pracuje se s referencemi, da se to vyresit forward deklaracemi. Horsi jsou ruzne "chytre", vetsinou templatove tridy, ktere se predavaji hodnotou. Pak si clovek opravdu musi dobre hlidat graf zavislosti.

quasi, myslim ze bys rychle zmenil nazor, kdybys musel nejakou takovouhle zbesilost rozmotavat Cool (Nejde o to, jestli to puvodne bylo nebo nebylo navrzeno dobre - kod nebyva idealni - a prave proto je dobre, kdyz je cas ho vylepsit.)
_________________
- play with objects - www.krkal.org -
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
quas4



Založen: 18. 10. 2007
Příspěvky: 199

PříspěvekZaslal: 13. únor 2008, 17:02:39    Předmět: Odpovědět s citátem

MD napsal:
Ja bych to schrunul takto: inkudy vznikly v dobach temneho C, kdy se u parametru a membru vystacilo s typem void * Wink Tyto doby jsou ale davno pryc


C je jako jazyk konzistentnejsi nez C++. A nemyslim si ze doba C (natoz temna) je davno pryc. Mnoho velkych projektu je uspesne vyvijeno v C.

MD napsal:
quasi, myslim ze bys rychle zmenil nazor, kdybys musel nejakou takovouhle zbesilost rozmotavat Cool (Nejde o to, jestli to puvodne bylo nebo nebylo navrzeno dobre - kod nebyva idealni - a prave proto je dobre, kdyz je cas ho vylepsit.)


A napr. ani kdyz jsem mnohokrat *rozmotaval* implementaci sgi STL (hlavne kdysi pri prechodu z gcc3.x -> gcc4.x kdy se dost lisi a napr. v gcc3.x uplne chybi nektere reverzni const iteratory, atd..) ale zrovna s include-y a forward deklaracemi jsem zadny problem nemel a nazor jsem nezmenil.
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
MD



Založen: 29. 07. 2007
Příspěvky: 437
Bydliště: Praha

PříspěvekZaslal: 14. únor 2008, 10:02:52    Předmět: Odpovědět s citátem

jj, C je stale pouzivane, ale nemyslim si, ze je to nejaka vyhra ... Visual Basic je taky konzistentnejsi nez C++, ale to mi nestaci, abych ho mel rad Wink

Vetsina spatnych vlastnosti v C++ se da obejit, nahradit nejakym postupem, ktery nevyhody odstrani. Peklo muzou zpusobit makra nebo nevhodna prace s pointry... C++ je nastesti dost silny jazyk, aby se tam dalo programovat i pomerne ciste, takze se tem nevyhodam da vyhnout. (a to se mi na nem libi)

Inkludy jsou problem prave proto, ze tem se vyhnout neda a ma je kazdy projekt. Zadny prepinac kompilatoru "Zapni kompilaci, kde nezalezi na poradi deklaraci a pouziti" neni.

Zajimave ze ti to nevadi.. Bud jsi jako Chuck Norris a nevadi ti nic a zvladas vsechno, nebo jsi inkludovy masochista, no a nebo jsi si na to uz zvykl a jen si neumis predstavit o kolik by to bylo prijemejsi, kdyby tahle nevyhoda nebyla. Wink
_________________
- play with objects - www.krkal.org -
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
petr



Založen: 13. 05. 2008
Příspěvky: 19

PříspěvekZaslal: 15. květen 2008, 21:27:29    Předmět: Odpovědět s citátem

Firmám totiž fakt nejde o nic jiného, než o maximalizaci zisku (základní poučka z ekonomie). - no můžu ti říct, že v praxi tato poučka teda neplatí, alespoň ne ve všech případech (firmách) jak tvrdí nějaká zaručená příručka ekonomie.

Preferuji c++ programuji-li runtimovou aplikaci, občas se však nevyhnu VB (byť toto téma není o tomto jazyku, přesto si dovolím napsat pár slov) na kterém jsem před 9 lety (+-) začínal v pracovním poměru, záleží především na typu projektu, pokud mám dělat konverzi stringových dat do bináru (BCD), případně spolupracovat s DB (SQL), nevidím ve VB problém, ikdyž tzv. "klikačky" do kterých microsoft vtahuje nové "programátory" fakt nemusím, udělat všecho rychle naklikáním není dobré řešení a bohužel z praxe vím, že těchto programátorů-klikačů je snad čím dál tím víc a to nejen v klasických formulářových projektech, ale i dokonce těch jenž využívají klikací nástavby pro primitivní tvorbu her ve 3d (uff).

Na c++ mne taky trápí includy, nedávno jsem přebíral projekt zahrnující cca 25 tříd a vyznat se v provázanosti bylo dost peklo, je skoro nemožné pak vyseparovat jednu třídu pro odtestování.

Pro mně je hlavně zajímavá inforamce, že velmi málo firem (+- 10%) hledá programátory c++, za svou "kariéru" jsem se nesetkal s jedinou firmou která hledala jiné odborníky než céčkaře, proto bych si dovolil tvrdit, je velmi důležité v jakém programovacím prostředí (firmě) jste odkojenim, přeloženo programátorsky, záleží v jakém stavu (neznalosti) zůstanete zapouzdření (což je asi můj případ) ...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 16. květen 2008, 09:14:18    Předmět: Odpovědět s citátem

petr napsal:
tzv. "klikačky" do kterých microsoft vtahuje nové "programátory" fakt nemusím, udělat všecho rychle naklikáním není dobré řešení a bohužel z praxe vím, že těchto programátorů-klikačů je snad čím dál tím víc a to nejen v klasických formulářových projektech, ale i dokonce těch jenž využívají klikací nástavby pro primitivní tvorbu her ve 3d (uff).
No odmítání "klikaček" jen kvůli tomu, že je používají i lamy, mi přijde docela ujetej důvod. Ale jestli má Tvoje firma na to, aby Ti platila za psaní všeho ručně a nevyužíváš formulářové designery... Imho většina firem uvítá spíše rychlé naklikání než psát všechno "od nuly" ručně se stejným výsledkem...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Quiark



Založen: 29. 07. 2007
Příspěvky: 816
Bydliště: Chlívek 401

PříspěvekZaslal: 16. květen 2008, 10:07:40    Předmět: Odpovědět s citátem

To je podle mě jen prostě starý problém s neschopnými programátory. Akorát se to v tomhle případě projevuje tak, že se svoji neschopnost snaží zamaskovat použitím klikaček a tím na klikačky vrhají špatné světlo Smile
_________________
Mám strach
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Augi



Založen: 28. 07. 2007
Příspěvky: 782
Bydliště: Čerčany

PříspěvekZaslal: 16. květen 2008, 10:28:29    Předmět: Odpovědět s citátem

No však, vrhají špatné světlo Smile Ale v zásadě jsou klikačky jen generátory kódu a pokud ty generátory generují rozumný kód, proč je nepoužít a neušetřit si práci...
Návrat nahoru
Zobrazit informace o autorovi Odeslat soukromou zprávu Zobrazit autorovi WWW stránky
Zobrazit příspěvky z předchozích:   
odeslat nové téma   Odpovědět na téma    Obsah fóra České-Hry.cz -> C / C++ Časy uváděny v GMT + 1 hodina
Jdi na stránku Předchozí  1, 2, 3, 4, 5, 6, 7  Další
Strana 6 z 7

 
Přejdi na:  
Nemůžete odesílat nové téma do tohoto fóra
Nemůžete odpovídat na témata v tomto fóru
Nemůžete upravovat své příspěvky v tomto fóru
Nemůžete mazat své příspěvky v tomto fóru
Nemůžete hlasovat v tomto fóru


Powered by phpBB © 2001, 2005 phpBB Group


Vzhled udelal powermac
Styl "vykraden" z phpBB stylu MonkiDream - upraveno by rezna