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 00:33 | IT novinky

    FEL ČVUT vyvinula robotickou stavebnici pro mladé programátory. Stavebnice Brian byla navržená speciálně pro potřeby populární Robosoutěže. Jde ale také o samostatný produkt, který si může koupit každý fanoušek robotiky a programování od 10 let, ideální je i pro střední školy jako výuková pomůcka. Jádro stavebnice tvoří programovatelná řídicí jednotka, kterou vyvinul tým z FEL ČVUT ve spolupráci s průmyslovými partnery. Stavebnici

    … více »
    Ladislav Hagara | Komentářů: 3
    včera 20:33 | Komunita

    Ubuntu bude pro testování nových verzí vydávat měsíční snapshoty. Dnes vyšel 1. snapshot Ubuntu 25.10 (Questing Quokka).

    Ladislav Hagara | Komentářů: 0
    včera 14:55 | Nová verze

    Společnost Netgate oznámila vydání nové verze 2.8.0 open source firewallové, routovací a VPN platformy pfSense (Wikipedie) postavené na FreeBSD. Přehled novinek v poznámkách k vydání.

    Ladislav Hagara | Komentářů: 0
    včera 14:00 | Nová verze

    Byla vydána nová verze 6.16 živé linuxové distribuce Tails (The Amnesic Incognito Live System), jež klade důraz na ochranu soukromí uživatelů a anonymitu. Tor Browser byl povýšen na verzi 14.5.3. Linux na verzi 6.1.140. Další změny v příslušném seznamu.

    Ladislav Hagara | Komentářů: 0
    včera 12:33 | Zajímavý článek

    Člověk odsouzený za obchod s drogami daroval letos ministerstvu spravedlnosti 468 kusů kryptoměny bitcoin, které pak resort v aukcích prodal za skoro miliardu korun. Darováním se zabývá policejní Národní centrála proti organizovanému zločinu (NCOZ). Deníku N to potvrdil přímo ministr spravedlnosti Pavel Blažek (ODS). Podle resortu bylo nicméně vše v souladu s právem.

    Ladislav Hagara | Komentářů: 12
    28.5. 20:44 | Nová verze

    Svobodný a otevřený multiplatformní editor EPUB souborů Sigil (Wikipedie, GitHub) byl vydán ve verzi 2.5.0. Stejně tak doprovodný vizuální EPUB XHTML editor PageEdit (GitHub).

    Ladislav Hagara | Komentářů: 0
    28.5. 12:22 | IT novinky

    Na základě národního atribučního procesu vláda České republiky označila Čínskou lidovou republiku za zodpovědnou za škodlivou kybernetickou kampaň proti jedné z neutajovaných komunikačních sítí Ministerstva zahraničních věcí ČR. Tato škodlivá aktivita, která trvala od roku 2022 a zasáhla instituci zařazenou na seznam české kritické infrastruktury, byla provedena kyberšpionážní skupinou APT31, veřejně spojovanou se zpravodajskou službou Ministerstvo státní bezpečnosti (MSS).

    Ladislav Hagara | Komentářů: 29
    28.5. 00:11 | Nová verze

    Google Chrome 137 byl prohlášen za stabilní. Nejnovější stabilní verze 137.0.7151.55 přináší řadu novinek z hlediska uživatelů i vývojářů. Podrobný přehled v poznámkách k vydání. Opraveno bylo 11 bezpečnostních chyb. Vylepšeny byly také nástroje pro vývojáře.

    Ladislav Hagara | Komentářů: 0
    27.5. 19:22 | Nová verze

    Byl vydán AlmaLinux OS 10 s kódovým názvem Purple Lion. Podrobnosti v poznámkách k vydání. Na rozdíl od Red Hat Enterprise Linuxu 10 nadále podporuje x86-64-v2.

    Ladislav Hagara | Komentářů: 0
    27.5. 15:11 | Nová verze

    Byl vydán Mozilla Firefox 139.0. Přehled novinek v poznámkách k vydání a poznámkách k vydání pro vývojáře. Řešeny jsou rovněž bezpečnostní chyby. Nový Firefox 139 je již k dispozici také na Flathubu a Snapcraftu.

    Ladislav Hagara | Komentářů: 10
    Jaký je váš oblíbený skriptovací jazyk?
     (55%)
     (32%)
     (7%)
     (2%)
     (0%)
     (1%)
     (3%)
    Celkem 161 hlasů
     Komentářů: 12, poslední 28.5. 18:42
    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.