abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 12:11 | Nová verze

    Byla vydána nová major verze 7.0 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Nově je postavena je na Debianu 13 (Trixie) a GNOME 48 (Bengaluru). Další novinky v příslušném seznamu.

    Ladislav Hagara | Komentářů: 0
    dnes 04:44 | IT novinky

    Společnost Meta na dvoudenní konferenci Meta Connect 2025 představuje své novinky. První den byly představeny nové AI brýle: Ray-Ban Meta (Gen 2), sportovní Oakley Meta Vanguard a především Meta Ray-Ban Display s integrovaným displejem a EMG náramkem pro ovládání.

    Ladislav Hagara | Komentářů: 0
    dnes 01:11 | Nová verze

    Po půl roce vývoje od vydání verze 48 bylo vydáno GNOME 49 s kódovým názvem Brescia (Mastodon). S přehrávačem videí Showtime místo Totemu a prohlížečem dokumentů Papers místo Evince. Podrobný přehled novinek i s náhledy v poznámkách k vydání a v novinkách pro vývojáře.

    Ladislav Hagara | Komentářů: 3
    včera 16:22 | Nová verze

    Open source softwarový stack ROCm (Wikipedie) pro vývoj AI a HPC na GPU od AMD byl vydán ve verzi 7.0.0. Přidána byla podpora AMD Instinct MI355X a MI350X.

    Ladislav Hagara | Komentářů: 0
    včera 15:22 | Nová verze

    Byla vydána nová verze 258 správce systému a služeb systemd (GitHub).

    Ladislav Hagara | Komentářů: 5
    včera 15:11 | Nová verze

    Byla vydána Java 25 / JDK 25. Nových vlastností (JEP - JDK Enhancement Proposal) je 18. Jedná se o LTS verzi.

    Ladislav Hagara | Komentářů: 0
    včera 14:44 | Humor

    Věra Pohlová před 26 lety: „Tyhle aféry každého jenom otravují. Já bych všechny ty internety a počítače zakázala“. Jde o odpověď na anketní otázku deníku Metro vydaného 17. září 1999 na téma zneužití údajů o sporožirových účtech klientů České spořitelny.

    Ladislav Hagara | Komentářů: 7
    včera 11:33 | Zajímavý článek Ladislav Hagara | Komentářů: 0
    16.9. 21:44 | Nová verze

    Byl vydán Mozilla Firefox 143.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Nově se Firefox při ukončování anonymního režimu zeptá, zda chcete smazat stažené soubory. Dialog pro povolení přístupu ke kameře zobrazuje náhled. Obzvláště užitečné při přepínání mezi více kamerami. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 143 bude brzy k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 0
    16.9. 17:22 | Nová verze

    Byla vydána betaverze Fedora Linuxu 43 (ChangeSet), tj. poslední zastávka před vydáním finální verze, která je naplánována na úterý 21. října.

    Ladislav Hagara | Komentářů: 0
    Jaké řešení používáte k vývoji / práci?
     (50%)
     (58%)
     (0%)
     (8%)
     (12%)
     (4%)
     (15%)
     (4%)
     (12%)
    Celkem 26 hlasů
     Komentářů: 3, poslední dnes 14:58
    Rozcestník

    Občas není od věci vyslovit něco, za co se upaluje nebo ukamenovává. Nic není totiž tak jednoduché, aby byla pravda vždy jediná a na první pohled zřejmá.


    NAVRCHOLU.cz
    Kategorie zápisků
    Aktuální zápisy

    Nejčtenější za poslední měsíc Nejkomentovanější za poslední měsíc

    Odpor k STL

    5.7.2006 16:57 | Přečteno: 1491× | Rouhání největší

    Jednou z poměrně málo pochopitelných věcí je odpor k STL u programátorů v C++. Někteří pro něj mají pádné důvody, ale u těch ostatních většinou nevím o jediném rozumném argumentu, proč STL nepoužívat.

    Prakticky každý program vyžaduje nějaký mechanismus ukládání dat v paměti. Velice záleží na tom, jaká data ukládáme a jak s nimi potřebujeme pracovat. Nelze zapomenout ani na časté dilema "operační versus paměťová složitost". Proto je dobré mít možnost s daty pracovat efektivním, univerzálním a přenositelným způsobem, s výběrem metody, jak se budou data ukládat.

    V jazyce C++ máme standardně k dispozici velice silné prostředky k realizaci tohoto cíle. Skrývají se pod zkratkou STL (Standard Template Library, standardní knihovna šablon). STL je běžně součásní standardní knihovny C++ (např. libstdc++), kromě toho existují i další implementace, např. STLPort. V knihovně jsou obsaženy šablony pro kontejnery a celá řada dalších zajímavých věcí, včetně efektivní implementace řetězců.

    Když jsem začínal programovat v C++, právě STL byla věc, která mě naprosto uchvátila. Již předtím jsem znal Java Collections Framework, kde je filosofie trochu podobná, nicméně i vzhledem k různému charakteru jazyků se řada věcí liší. V každém případě jsem se ale do používání STL vrhl po hlavě a postupně přicházel na výhody i nevýhody. Pravda, nevýhod moc není - i když samozřejmě nějaké také jsou.

    Vzhledem k výtečným vlastnostem STL by jeho použití mělo být metodou první volby ve všech případech, kdy tomu nebrání závažné důvody. Už pro tu přenositelnost a spolehlivost to stojí za to. Je tu pochopitelně pár situací, kdy STL raději nepoužívat - zde jsou ty hlavní z nich:

    Když vynecháme uvedené důvody (a výjimečně ještě nějaké další), obecně není důvod se používání STL bránit. Přesto se všeobecně setkávám s tím, že programátoři toto řešení zavrhují a raději tráví spoustu hodin návrhem, implementací a laděním vlastních kontejnerů. Jiní se zase moří se složitými operacemi na řetězci typu char*, i když pomocí std::string by to měli hotové za pár minut.

    Doporučuji proto, ať se každý, kdo programuje v C++ a nepoužívá STL, trochu zamyslí nad tím, jaký je hlavní důvod. Případně ať se podívá, co mu tato výtečná knihovna skýtá a jak se používá. Možná přijde na to, že to celé bylo zbytečné a že jediným důvodem nepoužívání byly obavy z neznámého.

           

    Hodnocení: 88 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    Josef Kufner avatar 5.7.2006 17:20 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Odpor k STL
    STL jsou úžacná věc, ale poslední dobou se popzvolna probírám z opojení z STL a zjišťuju, že objektově psaný kód není zas až taková výhra. V konečném důsledku je daleko méně přehledný než strukturovaný v C. Nemyslím návrh, ale kód jako takový. Dohledávat, co se vlastně doopravdy spustí je něco děsnýho.
    Hello world ! Segmentation fault (core dumped)
    5.7.2006 17:28 Michal Kubeček | skóre: 71 | Luštěnice
    Rozbalit Rozbalit vše Re: Odpor k STL
    Je otázka, do jaké míry je to jazykem a do jaké míry autorem. Když jsem začínal s C, byl jsem opojen konstrukcemi typu 'while (*s++ = *t++);' nebo 'int f(int n) { return n ? n*f(n-1) : 1; }' a musel jsem z toho vystřízlivět. Když jsem začínal s C++ byl jsem podobně opojen jeho vymoženostmi a byl jsem přesvědčen, že musím za každou cenu overloadovat operátory, používat šablony atd. Z toho prostě člověk musí vyrůst…
    Josef Kufner avatar 5.7.2006 17:39 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Odpor k STL
    To taky, ale spíš jsem měl na mysli třeba to, že se děděním vytvoří nějaká hiearchie tříd. Metody se různě dědí či nedědí, některé jsou virtuální, některé ne... no a pak když chci vědět co se myslí řádkem
    potvoro->hejbni_se();
    tak musím prolézt celkem dost kódu a zkoumat co kde je. Kdežto v C mi to grep poví prakticky rovnou a ctags fungují bezchybně. Další lahůdka je, když se v php předá nějaký objekt coby parametr funkce a chci zjistit co se vlastně předalo. To zas není problém v C++, protože tam je uveden typ.

    Zase nadruhou stranu, v C++ lze schovat spoustu kódu, který by jinak překážel a znepřehledňoval. Například přetížením operátorů. Ale to není u slušně napsaného kódu v C problém.
    Hello world ! Segmentation fault (core dumped)
    5.7.2006 17:45 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: Odpor k STL
    No, ale to by měl být spíše záměr, ne? Aby se člověm nemusel starat kde to je.
    Copak toho není dost?
    Josef Kufner avatar 5.7.2006 17:54 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Odpor k STL
    Ale to je výhodou jen do té doby, než je v tom potřeba něco změnit.
    Hello world ! Segmentation fault (core dumped)
    5.7.2006 17:57 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: Odpor k STL
    Ten uvedený příklad by měl tak na pohled sloužit k tomu, aby se potvora pohla. Samozřejmě, potvora je potvora a může udělat cokoliv, jenže když se programuje tak, že potvora na pohni reaguje tím, že sežere programátora, tak si myslím, že by byl problém všude a při jakémkoliv přístupu :-)
    Copak toho není dost?
    5.7.2006 17:57 Sinuhet | skóre: 31
    Rozbalit Rozbalit vše Re: Odpor k STL
    To taky, ale spíš jsem měl na mysli třeba to, že se děděním vytvoří nějaká hiearchie tříd. Metody se různě dědí či nedědí, některé jsou virtuální, některé ne... no a pak když chci vědět co se myslí řádkem
    To je spise vysledek chaotickeho navrhu knihovny a pouzivani neintuitivnich jmen. A nebo dusledek vaseho podvedomeho odporu k OO programovani obecne.
    5.7.2006 18:45 Filip Jirsák | skóre: 67 | blog: Fa & Bi
    Rozbalit Rozbalit vše Re: Odpor k STL
    Nevím, zda to umí nějaká IDE pro C++ (vim to asi nebude ;-) ), ale třeba eclipse pro Javu v tomhle docela pomáhá, že je možné prohlížet hierarchii tříd, Ctrl+clickem je možné přejít z použití metody rovnou na její implementaci atd.
    Luk avatar 5.7.2006 20:16 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: Odpor k STL
    CDT plugin do Eclipse to umí - bohužel to ale často blbne :-(
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    5.7.2006 21:20 mrzout | skóre: 11 | blog: mrzutej
    Rozbalit Rozbalit vše Re: Odpor k STL
    v php muzes vynutit typ parametru:

    class Trida {}

    function xxx ( Trida $par ){}

    ale mozna jsem te nepochopil, c++ jsem videl jen z rychliku :)
    Hlasuj pro zavedení OpenID na Abclinuxu!
    Luk avatar 5.7.2006 21:56 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: Odpor k STL
    Hlavně nechápu, jak PHP souvisí s STL. PHP je dynamicky typový jazyk, což má své výhody a nevýhody. Takže některé "jakoby samozřejmé" věci jsou tam prostě jinak.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    6.7.2006 10:46 mrzout | skóre: 11 | blog: mrzutej
    Rozbalit Rozbalit vše Re: Odpor k STL
    Ja reagoval na zminku o PHP v komentari.

    Do debaty o STL bych se neopovazoval zasahovat :)
    Hlasuj pro zavedení OpenID na Abclinuxu!
    5.7.2006 17:46 Sinuhet | skóre: 31
    Rozbalit Rozbalit vše Re: Odpor k STL
    A cim vam STL vnucuje OO?
    Josef Kufner avatar 5.7.2006 17:56 Josef Kufner | skóre: 70
    Rozbalit Rozbalit vše Re: Odpor k STL
    Tím, že už samo STL jsou třídy, byť ještě nejsou vytvořené pro konkrétní typ? Ale připouštím, že je možné psát strukturovaně a STL používat, ale to není to, nač jsem narážel.
    Hello world ! Segmentation fault (core dumped)
    5.7.2006 18:03 Sinuhet | skóre: 31
    Rozbalit Rozbalit vše Re: Odpor k STL
    Eh. No on treba takovy vektor je skutecne uvozen slovem class, ale tim jeho podobnost s OO konci. Vyhoda STL je totiz v tom, ze vam OO necpe. Tak byla navrzena.
    elviin avatar 5.7.2006 18:30 elviin | skóre: 29 | blog: elviin | Plzeň-Praha
    Rozbalit Rozbalit vše Re: Odpor k STL
    Nevim, jestli jsem vas pochopil, ale klidne muzete radit pole intu nebo pole brambor. Zalezi na aplikaci:

    int pole[] = {4, 4, 4,4 ,4};
    
    std::sort(pole, pole+3); //seradi brambory nebo 4ky nebo streamy 
    
    
    :)
    5.7.2006 17:24 VícNežNic | skóre: 42 | blog: Spáleniště | Ne dost daleko
    Rozbalit Rozbalit vše Re: Odpor k STL
    • v prakticky každém blogu
    • proč?
      • ?
      • dá se to nějak zjistit?
    • co já s tím?
    Copak toho není dost?
    5.7.2006 17:34 Creckx | skóre: 23 | blog: cxblog | Lanškroun
    Rozbalit Rozbalit vše Re: Odpor k STL
    STL je super věc...i když je to dávno co jsem dělal v C++ (ještě s winAPI) tak mi tenkrát hrozně pomohla. Dneska už jsem zalehnul u pythona a nějak mě C++ neláká :)
    Můj blog Pokud máte taky blog, můžeme vyměnit odkazy :)
    elviin avatar 5.7.2006 18:24 elviin | skóre: 29 | blog: elviin | Plzeň-Praha
    Rozbalit Rozbalit vše Re: Odpor k STL
    Kdyz jsem zacal pouzivat STL, tak muj kod nabyl na prehlednosti. V podstate veskery problemy resim tak, ze oddeluju data a algoritmy. Vite jake je to poteseni, kdyz je pozadavek na zmenu funkcionality aplikace a ja zmenim jenom typedef nebo zpusob razeni, transformace, funktory, kontejnery. To si pak programator chrochta, ze se nemusi bastlit s forama a whilama - proste zmenim algoritmus, kterymu je jedno s cim pracuje (to s cim pracuje se vyladi politikama nebo treitama). Hlavni kod zustava stejnej a je modularni. Kdyz jsem pridal Boost, tak to je jedna radost.

    Ty (negativni) vlastnosti, ktery popsal Luk se daji zeslabovat i posilovat. Proste do toho musi clovek videt, ale neni to, jak se rika raketova veda. Lze udelat aplikaci, kde nemusite pouzit pointer. Vsechno je pod kontrolou STL a iteratoru, u polymorfnich impl. chytrych ukazatelu, ktery si navic muzu delat konstantni, kdyz je treba a neverim si. Proste mam prehled jak v kodu, tak co se tyce pameti. Samozrejme, kdyz nemyslim, zku*vit se da vsechno.
    5.7.2006 20:00 machr | skóre: 2 | blog: machr
    Rozbalit Rozbalit vše Re: Odpor k STL
    STL je super vec. Ze zacatku se mi sice moc nelibila, protoze neni uplne intuitivni a naucit se ji efektivne vyuzivat vyzaduje trochu casu. Ale psat si vlastni containery se me vzne nechtelo, tak sem s ni zacal pracovat a zjistil jsem, ze je to super knihovna. :-D
    (__) (oo) /-------\/ / | || * ||----|| ~~ ~~
    Luk avatar 5.7.2006 20:15 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: Odpor k STL
    On je také trochu problém s dokumentací, kde není všechno úplně popsáno tak, jak by se slušelo. A kdo začínal s STL pod Windows, tam je to úplná tragédie - jak jsem kdysi vychvalovat MSDN, tady se k tomu Microsoft postavil hodně macešsky a microsoftí dokumentace k STL je přímo otřesná.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly
    5.7.2006 21:23 machr | skóre: 2 | blog: machr
    Rozbalit Rozbalit vše Re: Odpor k STL
    ja si vetsinou vystacim s touto strankou...
    (__) (oo) /-------\/ / | || * ||----|| ~~ ~~
    elviin avatar 5.7.2006 21:35 elviin | skóre: 29 | blog: elviin | Plzeň-Praha
    Rozbalit Rozbalit vše Re: Odpor k STL
    http://www.dinkumware.com/
    Luk avatar 5.7.2006 21:57 Luk | skóre: 47 | blog: Kacířské myšlenky | Kutná Hora
    Rozbalit Rozbalit vše Re: Odpor k STL
    Bohužel ne každý ji zná (třeba já jsem ji také neznal). A dokumentace na webu GNU je poněkud méně stravitelná.
    Šifrování je absolutní nutnost a pomáhá chránit před nekalými živly

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.