Odpovídáte na názor ke článku Skrytá úskalí vícenásobné dědičnosti v C++.
Ne opravdu, zrovna ten příklad není žádná nuance ale definice. Je je potřeba v tom C++ vidět tenké rozhraní mezi vyšším programovacím jazykem a strojovým kódem. Zatímco interpretované a bajtcodové jazyky mají mezi vlastní myšlenkou programátora a cílovým kódem procesoru "tuny balastu", které zajišťuje absolutní oddělenost implementačních detailů od vlastního programování, C++ od začátku jde tou cestou, kdy si na nic nehraje, a umožňuje programátorovi brát na vědomí i technické detaily. Což činí jazyk velice mocným, ale pro někoho zřejmě nepřehledným.
K tomu prvnímu příkladu: http://codepad.org/mUADjrZ1
Jde o to, že prázdná třída zabírá v paměti 1 bajt, pokud je použita jako proměnná... to stanoví norma. Na strojích se zarovnáním na 4 adresy pak zabírá 1 bajt + 3 nevyužité adresy pro zarovnání. Zarovnává se kvůli další proměnné, která má 4 bajty. Dohromady má třída B celých 8 bajtů. Pokud ale prázdnou třídu pouze podědíme, norma stanoví, že prázdná třída může zabírat 0 bajtů (říká se tomu "Empty base-class optimization") Potom už není proč zarovnávat a v třídě zůstává jen 4 bajtová proměnná, proto C zabírá jen 4 bajty.
Celý vtip je v tom, že mnoho programátorů tohle řešit nebude. Máme stroje o gigabajtech, programy jsou plné nevyužitého prostoru, neoptimalizujeme, data ukládáme bez nějakých kompresí. Nějaký 4 nebo 8 bajtů nás nemusí rozhodit. Taky ten příklad s těmi hromadami dědění je extrémní, měl jen demonstrovat a dokazovat mé zjištění. Já jsem totiž náročný a nespokojím se s tím, že něco nějak funguje a je mi jedno jak. Programuju jak pro X GB stroje, tak pro atmely, kde je k dispozici 1KB paměti a kde člověk počítá každý bajt (přesto se tam programuje v C++). A o svá zjištění jsem se chtěl podělit.
Neřešte to, nenechte se odradit. Většinou jsou to prkotiny.
Intenzivně se zabývám programováním zejména v jazyce C++. Vyvíjím vlastní knihovny, vzory, techniky, používám šablony, to vše proto, aby se mi usnadnil život při návrhu aplikací. Pracoval jsem jako programátor ve společnosti Seznam.cz. Nyní jsem se usadil v jednom startupu, kde vyvíjím serverové komponenty a informační systémy v C++
Přečteno 57 611×
Přečteno 27 724×
Přečteno 26 404×
Přečteno 24 368×
Přečteno 22 865×