<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
		>
<channel>
	<title>Komentáře pro Programátorské techniky nejen v C++</title>
	<atom:link href="http://novacisko.blog.root.cz/comments/feed/" rel="self" type="application/rss+xml" />
	<link>http://novacisko.blog.root.cz</link>
	<description>Just another blog.root.cz weblog</description>
	<lastBuildDate>Mon, 14 May 2012 14:33:12 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.1</generator>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
		<item>
		<title>Komentář u Alokátory a operator new v C++ od Sten</title>
		<link>http://novacisko.blog.root.cz/2012/01/04/alokatory-a-operator-new-v-c/comment-page-1/#comment-204</link>
		<dc:creator>Sten</dc:creator>
		<pubDate>Mon, 14 May 2012 14:33:12 +0000</pubDate>
		<guid isPermaLink="false">http://novacisko.blog.root.cz/?p=5#comment-204</guid>
		<description>[2] Alokace v STL jsem obcházel přes kopírovací konstruktory (obsahující pouze base adresu daného alokátoru) a globální mapu alokátorů, kterou používalo i delete. Kdokoliv mohl dohledat, která část paměti patří kterému alokátoru.</description>
		<content:encoded><![CDATA[<p>[2] Alokace v STL jsem obcházel přes kopírovací konstruktory (obsahující pouze base adresu daného alokátoru) a globální mapu alokátorů, kterou používalo i delete. Kdokoliv mohl dohledat, která část paměti patří kterému alokátoru.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Komentář u Skrytá úskalí vícenásobné dědičnosti v C++ od Sten</title>
		<link>http://novacisko.blog.root.cz/2012/05/06/skryta-uskali-vicenasobne-dedicnosti-v-c/comment-page-1/#comment-202</link>
		<dc:creator>Sten</dc:creator>
		<pubDate>Thu, 10 May 2012 14:23:45 +0000</pubDate>
		<guid isPermaLink="false">http://novacisko.blog.root.cz/?p=73#comment-202</guid>
		<description>[28] Ahoj, Honzo :-)

Chybějící operátor = je samozřejmě problém, ale to je zpíše pozůstatek přinesený z C a jeho struktur. Nový standard C++11 už umožňuje operator = zrušit (a u staršího to trikem s private jde taky), ale bohužel kvůli zpětné kompatibilitě už nikdy nebude nutné jej u ne-POD objektů explicitně deklarovat, aby existoval.

[33] C++ má i standardní výjimky (std::out_of_range, std::invalid_argument ap.), které vyhrazují třeba STL kontejnery, ale pro své třídy je nikdo nenutí programátora používat. Nicméně to kromě dědění z java.lang.Throwable nevynucuje ani Java (a nakonec mě ani nenapadá, jak to vynucovat).

Neodchycení výjimky znamená pád programu (std::terminate). Nezpracování chybového kódu znamená nedefinovaný stav a celkem libovolné chování závislé na tom, co, kde a za jakých okolností se nepodařilo. V tomhle se zrovna C++ chová stejně jako Java.</description>
		<content:encoded><![CDATA[<p>[28] Ahoj, Honzo <img src='http://novacisko.blog.root.cz/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Chybějící operátor = je samozřejmě problém, ale to je zpíše pozůstatek přinesený z C a jeho struktur. Nový standard C++11 už umožňuje operator = zrušit (a u staršího to trikem s private jde taky), ale bohužel kvůli zpětné kompatibilitě už nikdy nebude nutné jej u ne-POD objektů explicitně deklarovat, aby existoval.</p>
<p>[33] C++ má i standardní výjimky (std::out_of_range, std::invalid_argument ap.), které vyhrazují třeba STL kontejnery, ale pro své třídy je nikdo nenutí programátora používat. Nicméně to kromě dědění z java.lang.Throwable nevynucuje ani Java (a nakonec mě ani nenapadá, jak to vynucovat).</p>
<p>Neodchycení výjimky znamená pád programu (std::terminate). Nezpracování chybového kódu znamená nedefinovaný stav a celkem libovolné chování závislé na tom, co, kde a za jakých okolností se nepodařilo. V tomhle se zrovna C++ chová stejně jako Java.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Komentář u Skrytá úskalí vícenásobné dědičnosti v C++ od Ondřej Novák</title>
		<link>http://novacisko.blog.root.cz/2012/05/06/skryta-uskali-vicenasobne-dedicnosti-v-c/comment-page-1/#comment-201</link>
		<dc:creator>Ondřej Novák</dc:creator>
		<pubDate>Thu, 10 May 2012 12:51:57 +0000</pubDate>
		<guid isPermaLink="false">http://novacisko.blog.root.cz/?p=73#comment-201</guid>
		<description>[33] Zdá se mi, že o výjimkách by to chtělo napsat nový článek. Takže telegraficky:
a) člověk, který ignoruje výjimku znamená, že mu jeho program bude nejspíš padat a generovat chybové hlášení
b) člověk, který ignoruje chybový návratový kod si koleduje o spoustu skrytých problémů, jako zacyklení, memory leak, resource leak, porušení dat, neočekávaný pád v jiném místě programu

Každý programátor může mít vlastní systém vyjímek, ale pokud je programátor myslící člověk, tak každá jeho výjimka buď přímo nebo nepřímo dědí std::exception. Tato výjimka má funkci what() a ta by měla vracet něco smysluplného. To je úplný základ. Pak ať si tam ten programátor postaví třeba celý strom výjimek. Ten, kdo nezná výjimkový systém toho programátora, má pořád šanci se minimálně z výjimky dozvědět, co se stalo a pomocí typeid se dozvědět i název třídy výjimky. V mém systému výjimek se navíc z what() člověk dozví i číslo řádku a jméno souboru, kde k výjimce došlo a soupis tzv &quot;reasons&quot;, tj připojené další výjimky, jenž způsobily tuto výjimku. A to všechno prosím bez nutnosti znát můj výjimkový systém, bez potřeby handlovat nějaké IDčka chybových zpráv. No už je to moc dlouhý, takže začnu chystat podklady k blogpostu.</description>
		<content:encoded><![CDATA[<p>[33] Zdá se mi, že o výjimkách by to chtělo napsat nový článek. Takže telegraficky:<br />
a) člověk, který ignoruje výjimku znamená, že mu jeho program bude nejspíš padat a generovat chybové hlášení<br />
b) člověk, který ignoruje chybový návratový kod si koleduje o spoustu skrytých problémů, jako zacyklení, memory leak, resource leak, porušení dat, neočekávaný pád v jiném místě programu</p>
<p>Každý programátor může mít vlastní systém vyjímek, ale pokud je programátor myslící člověk, tak každá jeho výjimka buď přímo nebo nepřímo dědí std::exception. Tato výjimka má funkci what() a ta by měla vracet něco smysluplného. To je úplný základ. Pak ať si tam ten programátor postaví třeba celý strom výjimek. Ten, kdo nezná výjimkový systém toho programátora, má pořád šanci se minimálně z výjimky dozvědět, co se stalo a pomocí typeid se dozvědět i název třídy výjimky. V mém systému výjimek se navíc z what() člověk dozví i číslo řádku a jméno souboru, kde k výjimce došlo a soupis tzv "reasons", tj připojené další výjimky, jenž způsobily tuto výjimku. A to všechno prosím bez nutnosti znát můj výjimkový systém, bez potřeby handlovat nějaké IDčka chybových zpráv. No už je to moc dlouhý, takže začnu chystat podklady k blogpostu.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Komentář u Skrytá úskalí vícenásobné dědičnosti v C++ od Honza</title>
		<link>http://novacisko.blog.root.cz/2012/05/06/skryta-uskali-vicenasobne-dedicnosti-v-c/comment-page-1/#comment-200</link>
		<dc:creator>Honza</dc:creator>
		<pubDate>Thu, 10 May 2012 09:29:27 +0000</pubDate>
		<guid isPermaLink="false">http://novacisko.blog.root.cz/?p=73#comment-200</guid>
		<description>&gt; jakou mám jistotu, že si toho volající všimnul

No prece uplne stejnou, jako ze spravnym zpusobem zpracuje vyjimku. Clovek, ktery v C ignoruje navratove hodnoty bude v C++ chytat a ignorovat vyjimky a nebo je nebude chytat vubec a necha to sletet. Takze az dojde misto na disku, program C lajdaka mozna jen neulozi soubor a mozna spadne, program C++ lajdaka taky mozna neulozi soubor a mozna spadne. (A preci jen neotestovat navratovou hodnotu napr. fopen v miste volani je jeste vetsi lajdactvi nez neodchytit vyjimku metody saveDocument(), ale to mozna prijde jen mne, ceckari.)

&gt; Další nevyhodou je, že každý programátor má vlastní systém chyb

Ja myslim, ze kazdy C++ programator ma zase vlastni system vyjimek, ne? (V Jave - pokud nemusim resit &quot;kazdy byte&quot; jsou aspon ty standardni vyjimky pro deleni nulou, IndexOutOfBoundException, NullPointerException, ale v C++ ani nic takoveno neni, ne? Nehlede na to ze vyjimky mohou byt i vyssiho, logickeho charakteru, tam uz se nedaji napasovat do nejakych skatulek vubec.)</description>
		<content:encoded><![CDATA[<p>&gt; jakou mám jistotu, že si toho volající všimnul</p>
<p>No prece uplne stejnou, jako ze spravnym zpusobem zpracuje vyjimku. Clovek, ktery v C ignoruje navratove hodnoty bude v C++ chytat a ignorovat vyjimky a nebo je nebude chytat vubec a necha to sletet. Takze az dojde misto na disku, program C lajdaka mozna jen neulozi soubor a mozna spadne, program C++ lajdaka taky mozna neulozi soubor a mozna spadne. (A preci jen neotestovat navratovou hodnotu napr. fopen v miste volani je jeste vetsi lajdactvi nez neodchytit vyjimku metody saveDocument(), ale to mozna prijde jen mne, ceckari.)</p>
<p>&gt; Další nevyhodou je, že každý programátor má vlastní systém chyb</p>
<p>Ja myslim, ze kazdy C++ programator ma zase vlastni system vyjimek, ne? (V Jave - pokud nemusim resit "kazdy byte" jsou aspon ty standardni vyjimky pro deleni nulou, IndexOutOfBoundException, NullPointerException, ale v C++ ani nic takoveno neni, ne? Nehlede na to ze vyjimky mohou byt i vyssiho, logickeho charakteru, tam uz se nedaji napasovat do nejakych skatulek vubec.)</p>
]]></content:encoded>
	</item>
	<item>
		<title>Komentář u Skrytá úskalí vícenásobné dědičnosti v C++ od Ondřej Novák</title>
		<link>http://novacisko.blog.root.cz/2012/05/06/skryta-uskali-vicenasobne-dedicnosti-v-c/comment-page-1/#comment-199</link>
		<dc:creator>Ondřej Novák</dc:creator>
		<pubDate>Thu, 10 May 2012 09:06:16 +0000</pubDate>
		<guid isPermaLink="false">http://novacisko.blog.root.cz/?p=73#comment-199</guid>
		<description>[30] A nač řešit odchycení výjimky. Soustředíme se na algoritmus. Pokud vylítne výjimka uvnitř nějakého databázového výpočtu, tak máme možnost catch (...) pro uvedení databáze do konzistetního stavu a throw; pro poslání výjimky vejš. To je tak všechno, co nás ve funkci zájímá. Co si s výjimkou udělá volající je jeho věc. Klidně to může propadnout až na základní úroveň, kde se uživateli zobrazí okénko s popisem chyby, která nastala... to je další výhoda výjimek, totiž pokud má každá výjimka popis ... (a třeba v mé knihovně je to povinnost)... pak se snadno identifikuje problém.

Naopak je sice hezké, že vidím, že ve funkci jsem na pěti místech program ukončil (i za cenu použití goto!) pro chybu, kterou reportuju výše v návratové hodnotě, ale jakou mám jistotu, že si toho volající všimnul?

Další nevyhodou je, že každý programátor má vlastní systém chyb. Někdo vrací nulu, druhý jedničku, jeden vrací kód chyby, druhý používá errno, někdo na to má globální stavovou proměnnou (užijte si v MT prostředí!). Chybové kódy nejsou unikátní, mezi knihovnami se musí překládat, přičemž se často některé informace ztratí... napríklad selže zápis na disk, protože na sektoru 5128 zařízení /dev/sdb1 je chyba. No a tahle chyba propadne k uživateli jako obecná chyba -1 při pokusu uložit dokument. Na to UIčko zareaguje hláškou &quot;není místo na disku&quot; nebo &quot;disk je chráněn proti zápisu&quot;, případně &quot;nepovedlo se zapsat na disk&quot;. Diagnostika problému je v háji.... o zavádějících hláškách nemluvně.</description>
		<content:encoded><![CDATA[<p>[30] A nač řešit odchycení výjimky. Soustředíme se na algoritmus. Pokud vylítne výjimka uvnitř nějakého databázového výpočtu, tak máme možnost catch (...) pro uvedení databáze do konzistetního stavu a throw; pro poslání výjimky vejš. To je tak všechno, co nás ve funkci zájímá. Co si s výjimkou udělá volající je jeho věc. Klidně to může propadnout až na základní úroveň, kde se uživateli zobrazí okénko s popisem chyby, která nastala... to je další výhoda výjimek, totiž pokud má každá výjimka popis ... (a třeba v mé knihovně je to povinnost)... pak se snadno identifikuje problém.</p>
<p>Naopak je sice hezké, že vidím, že ve funkci jsem na pěti místech program ukončil (i za cenu použití goto!) pro chybu, kterou reportuju výše v návratové hodnotě, ale jakou mám jistotu, že si toho volající všimnul?</p>
<p>Další nevyhodou je, že každý programátor má vlastní systém chyb. Někdo vrací nulu, druhý jedničku, jeden vrací kód chyby, druhý používá errno, někdo na to má globální stavovou proměnnou (užijte si v MT prostředí!). Chybové kódy nejsou unikátní, mezi knihovnami se musí překládat, přičemž se často některé informace ztratí... napríklad selže zápis na disk, protože na sektoru 5128 zařízení /dev/sdb1 je chyba. No a tahle chyba propadne k uživateli jako obecná chyba -1 při pokusu uložit dokument. Na to UIčko zareaguje hláškou "není místo na disku" nebo "disk je chráněn proti zápisu", případně "nepovedlo se zapsat na disk". Diagnostika problému je v háji.... o zavádějících hláškách nemluvně.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Komentář u Skrytá úskalí vícenásobné dědičnosti v C++ od Honza</title>
		<link>http://novacisko.blog.root.cz/2012/05/06/skryta-uskali-vicenasobne-dedicnosti-v-c/comment-page-1/#comment-198</link>
		<dc:creator>Honza</dc:creator>
		<pubDate>Thu, 10 May 2012 08:58:50 +0000</pubDate>
		<guid isPermaLink="false">http://novacisko.blog.root.cz/?p=73#comment-198</guid>
		<description>[29] Jo a samozrejme objekt, ktery uvolni pamet v destruktoru (ten String), stale radim do toho lehkeho C++, to celkem uznavam za uzitecnou featuru C++ a zadnou hardcore zrudnost. Takze az na ty vyjimky bych to klidne napsal stejne jako Ondra.</description>
		<content:encoded><![CDATA[<p>[29] Jo a samozrejme objekt, ktery uvolni pamet v destruktoru (ten String), stale radim do toho lehkeho C++, to celkem uznavam za uzitecnou featuru C++ a zadnou hardcore zrudnost. Takze az na ty vyjimky bych to klidne napsal stejne jako Ondra.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Komentář u Skrytá úskalí vícenásobné dědičnosti v C++ od Honza</title>
		<link>http://novacisko.blog.root.cz/2012/05/06/skryta-uskali-vicenasobne-dedicnosti-v-c/comment-page-1/#comment-197</link>
		<dc:creator>Honza</dc:creator>
		<pubDate>Thu, 10 May 2012 08:49:58 +0000</pubDate>
		<guid isPermaLink="false">http://novacisko.blog.root.cz/?p=73#comment-197</guid>
		<description>[29] To deallocString bych volal jen na jednom miste. Ve zvlast zamotanych pripadech i za cenu goto, ale tady to jde snadno i bez toho, tak bych tam goto samozrejme necpal. A Ondra neuvedl chytani te vyjimky. Bude tam pak mit bud nejaky switch nebo alespon volani virtualni metody te vyjimky ve stylu vyjimka-&gt;osetri() v miste, kde uz ctenar kodu nebude vedet, o co jde... Takze uz to s tou citelnosti neni tak jednoznacne. I v uplne cistem C se da napsat spousta veci celkem kulturne.</description>
		<content:encoded><![CDATA[<p>[29] To deallocString bych volal jen na jednom miste. Ve zvlast zamotanych pripadech i za cenu goto, ale tady to jde snadno i bez toho, tak bych tam goto samozrejme necpal. A Ondra neuvedl chytani te vyjimky. Bude tam pak mit bud nejaky switch nebo alespon volani virtualni metody te vyjimky ve stylu vyjimka-&gt;osetri() v miste, kde uz ctenar kodu nebude vedet, o co jde... Takze uz to s tou citelnosti neni tak jednoznacne. I v uplne cistem C se da napsat spousta veci celkem kulturne.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Komentář u Skrytá úskalí vícenásobné dědičnosti v C++ od Ondřej Novák</title>
		<link>http://novacisko.blog.root.cz/2012/05/06/skryta-uskali-vicenasobne-dedicnosti-v-c/comment-page-1/#comment-196</link>
		<dc:creator>Ondřej Novák</dc:creator>
		<pubDate>Thu, 10 May 2012 08:34:13 +0000</pubDate>
		<guid isPermaLink="false">http://novacisko.blog.root.cz/?p=73#comment-196</guid>
		<description>[28] Není třeba psát nic do dokumentace :-) Stačí jen dodržet určitá pravidla, která mnozí z nás odmítají dodržovat. Třeba to, že v C++ může vyletět vyjimka odkudkoliv, kromě od funkcí, které mají vyjimky vypnuté / throw() /. Ano, je to změna stylu programování oproti klasickému C, ale opravdu doporučuju si na to zvyknout. Právě chtrých ukazatelů bych se nebál, protože se neliší od běžných ukazatelů, akorát za člověka řeší právě ty situace, které normálně řeší odchytáváním kdejaké vyjimky ... často úplně zbytečně ... jen proto, aby funkce po sobě uklidila ... přestože tohle je věc, která patří do destruktorů... a věřte mi, překladač ten úklid pomocí destruktorů zvládne mnohem lépe, než vy ručně. Díky tomu se nemusím soustředit na chyby ani na úklid a udělám víc práce. Porovnejte si tyto dva kódy

bool foo() {
&#160;&#160;&#160;char *str = allocString(&quot;hello world&quot;);
&#160;&#160;&#160;if (str == 0) return false;
&#160;&#160;&#160;if (!printString(str)) {
&#160;&#160;&#160;&#160;&#160;&#160;deallocString(str);
&#160;&#160;&#160;&#160;&#160;&#160;return false;
&#160;&#160;&#160;}
&#160;&#160;&#160;//... dalsi cast kodu
&#160;&#160;&#160;deallocString(str);
&#160;&#160;&#160;return true;
}

void foo() {
&#160;&#160;&#160;String str(&quot;hello world&quot;); //vyhodi vyjimku kdyz se to nepodari
&#160;&#160;&#160;printString(str);  //vyhodi vyjimku kdyz se to nepodari a automaticky uklidi
} //automaticky uklidi str.

A to kdy se řeší a neřeší každý bajt. Já řeším každý bajt v C++ :-) Dá se to, ale na některá úskalí s tím spojené budu upozorňovat na rootu.</description>
		<content:encoded><![CDATA[<p>[28] Není třeba psát nic do dokumentace <img src='http://novacisko.blog.root.cz/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Stačí jen dodržet určitá pravidla, která mnozí z nás odmítají dodržovat. Třeba to, že v C++ může vyletět vyjimka odkudkoliv, kromě od funkcí, které mají vyjimky vypnuté / throw() /. Ano, je to změna stylu programování oproti klasickému C, ale opravdu doporučuju si na to zvyknout. Právě chtrých ukazatelů bych se nebál, protože se neliší od běžných ukazatelů, akorát za člověka řeší právě ty situace, které normálně řeší odchytáváním kdejaké vyjimky ... často úplně zbytečně ... jen proto, aby funkce po sobě uklidila ... přestože tohle je věc, která patří do destruktorů... a věřte mi, překladač ten úklid pomocí destruktorů zvládne mnohem lépe, než vy ručně. Díky tomu se nemusím soustředit na chyby ani na úklid a udělám víc práce. Porovnejte si tyto dva kódy</p>
<p>bool foo() {<br />
&nbsp;&nbsp;&nbsp;char *str = allocString("hello world");<br />
&nbsp;&nbsp;&nbsp;if (str == 0) return false;<br />
&nbsp;&nbsp;&nbsp;if (!printString(str)) {<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;deallocString(str);<br />
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;return false;<br />
&nbsp;&nbsp;&nbsp;}<br />
&nbsp;&nbsp;&nbsp;//... dalsi cast kodu<br />
&nbsp;&nbsp;&nbsp;deallocString(str);<br />
&nbsp;&nbsp;&nbsp;return true;<br />
}</p>
<p>void foo() {<br />
&nbsp;&nbsp;&nbsp;String str("hello world"); //vyhodi vyjimku kdyz se to nepodari<br />
&nbsp;&nbsp;&nbsp;printString(str);  //vyhodi vyjimku kdyz se to nepodari a automaticky uklidi<br />
} //automaticky uklidi str.</p>
<p>A to kdy se řeší a neřeší každý bajt. Já řeším každý bajt v C++ <img src='http://novacisko.blog.root.cz/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Dá se to, ale na některá úskalí s tím spojené budu upozorňovat na rootu.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Komentář u Skrytá úskalí vícenásobné dědičnosti v C++ od Honza</title>
		<link>http://novacisko.blog.root.cz/2012/05/06/skryta-uskali-vicenasobne-dedicnosti-v-c/comment-page-1/#comment-195</link>
		<dc:creator>Honza</dc:creator>
		<pubDate>Thu, 10 May 2012 08:23:48 +0000</pubDate>
		<guid isPermaLink="false">http://novacisko.blog.root.cz/?p=73#comment-195</guid>
		<description>[27] virtuální metody (tam kde je nejaka prirozena hierarchie) a automatické volání destruktorů uznavam a radim do toho hodne lehkeho C++. Chytrych ukazatelu se tochu bojim, trochu mi prijde, ze uz pak clovek neresi kazdy byte, trochu mi prijde, ze staci citelne alokovani a dealokovani. Vyjimky mi vadi, spravne chytat vyjimky mi subjektivne prijde o dost tezsi nez napr. hlidat navratove hodnoty. Generika (to jsou ty vektory, mapy atd?) se mi samozrejme casto hodi, ale taky se mi moc v C++ nelibi, pak to vede k tomu ze nekdo zapomene predefinovat operator = a dejou se divne veci. (Resil jsem aspon 3x, vzdycky nejaka krasna padacka.) A taky mi prijde, ze pak uz clovek neresi kazdy byte. A taky s tim jsou problemy na obskurnich platformach, donedavna i Android NDK.
Je to i dost subjektivni, kazdemu sedne neco jineho. Nejhorsi je, kdyz se programator jako ja setka s programatorem jako Ondra, to je pak utrpeni pro oba. To si pak jeden o druhem mysli, ze je uplny blb, ze nechyta vyjimky a druhem o prvnim taky, ze je uplny blb, ze vrha vyjimky a nenapise to rude palcovym pismem v dokumentaci.</description>
		<content:encoded><![CDATA[<p>[27] virtuální metody (tam kde je nejaka prirozena hierarchie) a automatické volání destruktorů uznavam a radim do toho hodne lehkeho C++. Chytrych ukazatelu se tochu bojim, trochu mi prijde, ze uz pak clovek neresi kazdy byte, trochu mi prijde, ze staci citelne alokovani a dealokovani. Vyjimky mi vadi, spravne chytat vyjimky mi subjektivne prijde o dost tezsi nez napr. hlidat navratove hodnoty. Generika (to jsou ty vektory, mapy atd?) se mi samozrejme casto hodi, ale taky se mi moc v C++ nelibi, pak to vede k tomu ze nekdo zapomene predefinovat operator = a dejou se divne veci. (Resil jsem aspon 3x, vzdycky nejaka krasna padacka.) A taky mi prijde, ze pak uz clovek neresi kazdy byte. A taky s tim jsou problemy na obskurnich platformach, donedavna i Android NDK.<br />
Je to i dost subjektivni, kazdemu sedne neco jineho. Nejhorsi je, kdyz se programator jako ja setka s programatorem jako Ondra, to je pak utrpeni pro oba. To si pak jeden o druhem mysli, ze je uplny blb, ze nechyta vyjimky a druhem o prvnim taky, ze je uplny blb, ze vrha vyjimky a nenapise to rude palcovym pismem v dokumentaci.</p>
]]></content:encoded>
	</item>
	<item>
		<title>Komentář u Skrytá úskalí vícenásobné dědičnosti v C++ od Ondřej Novák</title>
		<link>http://novacisko.blog.root.cz/2012/05/06/skryta-uskali-vicenasobne-dedicnosti-v-c/comment-page-1/#comment-194</link>
		<dc:creator>Ondřej Novák</dc:creator>
		<pubDate>Thu, 10 May 2012 07:03:26 +0000</pubDate>
		<guid isPermaLink="false">http://novacisko.blog.root.cz/?p=73#comment-194</guid>
		<description>[26] Tak jestli chcete být hyperkorektní, tak C++ nemá třídy, ale jen takové rozšířené struktury. A taky nemá enumy, jen pojmenované inty. Přejete si takovou úroveň diskuze?

[25] a co když chci řešit každý byte a přitom mít k dispozici objektový systém, který za mě řeší spoustu věcí, který bych musel jinak řešit složitě ručně (virtuální metody, automatické volání destruktorů, chytré ukazatele, výjimky, generika?)</description>
		<content:encoded><![CDATA[<p>[26] Tak jestli chcete být hyperkorektní, tak C++ nemá třídy, ale jen takové rozšířené struktury. A taky nemá enumy, jen pojmenované inty. Přejete si takovou úroveň diskuze?</p>
<p>[25] a co když chci řešit každý byte a přitom mít k dispozici objektový systém, který za mě řeší spoustu věcí, který bych musel jinak řešit složitě ručně (virtuální metody, automatické volání destruktorů, chytré ukazatele, výjimky, generika?)</p>
]]></content:encoded>
	</item>
</channel>
</rss>

