Zobrazit předchozí téma :: Zobrazit následující téma |
Autor |
Zpráva |
quas4
Založen: 18. 10. 2007 Příspěvky: 199
|
Zaslal: 10. únor 2008, 11:16:17 Předmět: |
|
|
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 |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 13. únor 2008, 07:54:33 Předmět: |
|
|
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. Pokud vím, do nového C++ se s tím nic dělat nebude. _________________ AMD Open Source Graphics Driver Developer |
|
Návrat nahoru |
|
 |
quas4
Založen: 18. 10. 2007 Příspěvky: 199
|
Zaslal: 13. únor 2008, 09:16:17 Předmět: |
|
|
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 |
|
 |
MD

Založen: 29. 07. 2007 Příspěvky: 437 Bydliště: Praha
|
Zaslal: 13. únor 2008, 09:27:24 Předmět: |
|
|
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 |
|
 |
Marek

Založen: 28. 07. 2007 Příspěvky: 1782 Bydliště: Velká Morava
|
Zaslal: 13. únor 2008, 09:36:14 Předmět: |
|
|
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 |
|
 |
quas4
Založen: 18. 10. 2007 Příspěvky: 199
|
Zaslal: 13. únor 2008, 10:45:54 Předmět: |
|
|
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
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
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 |
|
 |
rezna
Založen: 27. 07. 2007 Příspěvky: 2156
|
Zaslal: 13. únor 2008, 11:17:38 Předmět: |
|
|
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 |
|
 |
quas4
Založen: 18. 10. 2007 Příspěvky: 199
|
Zaslal: 13. únor 2008, 11:53:59 Předmět: |
|
|
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 |
|
 |
MD

Založen: 29. 07. 2007 Příspěvky: 437 Bydliště: Praha
|
Zaslal: 13. únor 2008, 12:56:10 Předmět: |
|
|
Ja bych to schrunul takto: inkudy vznikly v dobach temneho C, kdy se u parametru a membru vystacilo s typem void * 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 (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 |
|
 |
quas4
Založen: 18. 10. 2007 Příspěvky: 199
|
Zaslal: 13. únor 2008, 17:02:39 Předmět: |
|
|
MD napsal: |
Ja bych to schrunul takto: inkudy vznikly v dobach temneho C, kdy se u parametru a membru vystacilo s typem void * 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 (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 |
|
 |
MD

Založen: 29. 07. 2007 Příspěvky: 437 Bydliště: Praha
|
Zaslal: 14. únor 2008, 10:02:52 Předmět: |
|
|
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
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.  _________________ - play with objects - www.krkal.org - |
|
Návrat nahoru |
|
 |
petr

Založen: 13. 05. 2008 Příspěvky: 19
|
Zaslal: 15. květen 2008, 21:27:29 Předmět: |
|
|
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 |
|
 |
Augi

Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 16. květen 2008, 09:14:18 Předmět: |
|
|
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 |
|
 |
Quiark

Založen: 29. 07. 2007 Příspěvky: 816 Bydliště: Chlívek 401
|
Zaslal: 16. květen 2008, 10:07:40 Předmět: |
|
|
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  _________________ Mám strach |
|
Návrat nahoru |
|
 |
Augi

Založen: 28. 07. 2007 Příspěvky: 782 Bydliště: Čerčany
|
Zaslal: 16. květen 2008, 10:28:29 Předmět: |
|
|
No však, vrhají špatné světlo 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 |
|
 |
|