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í
×
    včera 19:55 | IT novinky

    Společnost Meta ve spolupráci se společností Oakley oznámila řadu chytrých brýlí Oakley. První Oakley Meta HSTN si lze předobjednat za 499 dolarů.

    Ladislav Hagara | Komentářů: 0
    včera 16:11 | IT novinky

    Ministerstvo průmyslu a obchodu (MPO) vyjádřilo podporu předložení projektu AI Gigafactory CZ, který do veřejné konzultace Evropské komise zaslala společnost České Radiokomunikace (CRA) v rámci iniciativy Project AIGF CZ. Jde o významný krok k rozvoji výpočetní infrastruktury pro umělou inteligenci (AI), která je prioritou resortu. Projekt je v souladu s cíli Národní strategie umělé inteligence ČR 2030 a je již součástí návrhu

    … více »
    Ladislav Hagara | Komentářů: 7
    včera 13:11 | Zajímavý článek

    Nové číslo časopisu Raspberry Pi zdarma ke čtení: Raspberry Pi Official Magazine 154 (pdf). S podtitulem Automatizace domácnosti.

    Ladislav Hagara | Komentářů: 0
    včera 12:22 | IT novinky

    Americký prezident Donald Trump podepsal exekutivní příkaz, který prodlužuje lhůtu pro prodej amerických aktiv aplikace TikTok vlastněné čínskou společností ByteDance do amerických rukou o dalších 90 dnů. Americký Kongres loni v dubnu kvůli bezpečnostním obavám přijal zákon, podle kterého měl vstoupit v platnost zákaz sítě TikTok v USA v případě, že se prodej neuskuteční do 19. ledna. Trump však v lednu lhůtu pro prodej prodloužil o 75 dnů. V dubnu pak přikročil k prodloužení o dalších 75 dnů, lhůta tak měla vypršet dnešním dnem.

    Ladislav Hagara | Komentářů: 1
    včera 12:11 | IT novinky

    Microsoft hodlá zrušit další tisíce pracovních míst, a to především v obchodních odděleních. Předchozí kolo propouštění se uskutečnilo v květnu a dotklo se 6000 zaměstnanců. Vedení firmy již dříve upozornilo, že vzhledem k rozsáhlým investicím do umělé inteligence (AI) se bude snažit omezovat výdaje v jiných oblastech.

    Ladislav Hagara | Komentářů: 5
    19.6. 18:44 | IT novinky

    Společnost Murena ve spolupráci se společností Qwant představila vyhledávač Murena Find. Ve výchozím nastavení bude používán v mobilním operačním systému /e/OS a v Murena Workspace.

    Ladislav Hagara | Komentářů: 0
    19.6. 13:00 | IT novinky

    V mobilní aplikaci Facebooku se lze nově přihlašovat pomocí Passkeys.

    Ladislav Hagara | Komentářů: 3
    19.6. 12:44 | IT novinky

    Společnost Midjourney představila vlastní generátor videí pomocí umělé inteligence (AI) V1 Video Model.

    Ladislav Hagara | Komentářů: 0
    18.6. 23:22 | Nová verze

    Editor kódu Zed (Wikipedie) má nově v sobě integrovaný debugger. Podporuje Rust, C/C++, JavaScript, Go, Python a pomocí rozšíření i další programovací jazyky.

    Ladislav Hagara | Komentářů: 7
    18.6. 22:22 | Zajímavý článek

    Byl publikován aktuální přehled vývoje renderovacího jádra webového prohlížeče Servo (Wikipedie). Servo mimo jiné nově zvládne animované GIFy.

    Ladislav Hagara | Komentářů: 1
    Jaký je váš oblíbený skriptovací jazyk?
     (57%)
     (29%)
     (7%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 289 hlasů
     Komentářů: 16, poslední 8.6. 21:05
    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

    Odpor k STL

    5.7.2006 16:57 | Přečteno: 1489× | 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: 72 | 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: 68 | 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.