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í
×

    8.11. 00:33 | Nová verze

    Byla vydána OpenIndiana 2026.10. Unixový operační systém OpenIndiana (Wikipedie) vychází z OpenSolarisu (Wikipedie).

    Ladislav Hagara | Komentářů: 11
    8.11. 00:22 | IT novinky

    Americký výrobce polovodičů onsemi (ON Semiconductor) zrušil plány na rozšíření výroby v rožnovském závodě v Česku za dvě miliardy dolarů (podle aktuálního kurzu zhruba 43,5 mld. Kč). Důvodem je vývoj na trhu.

    Ladislav Hagara | Komentářů: 28
    7.11. 13:00 | Bezpečnostní upozornění
    Nové vydání zlib opravuje několik problémů při kompresi a dekompresi dat, přetečení bufferů, čtení mimo vyhrazenou paměť, únik neinicializovaných dat. Zvlášť významné jsou chyby v inflateGetDictionary(), inflateSync() a gzwrite(), které mohou způsobit poškození paměti. Vysoká relevance - zlib používá řada systémových i aplikačních komponent.
    vencour | Komentářů: 1
    7.11. 12:25 | Bezpečnostní upozornění
    Digicert hlásí neoprávněné čtení archivních zákaznických údajů. Došlo k němu po migraci z února 2025, po níž se interní systém, dříve dostupný jen přes VPN, stal přístupným z internetu. Chyba v oprávněních umožnila nově vytvořeným účtům číst archivní záznamy. K přístupu k datům mělo dojít mezi 27. červnem a 2. červencem 2026. DigiCert neoprávněné čtení potvrdil až 19. října 2026. Problém zpočátku vyhodnotil jako tvorbu účtů, ne jako … více »
    vencour | Komentářů: 1
    7.11. 04:44 | Pozvánky

    O víkendu probíhá na FIT VUT v Brně konference OpenAlt 2026 o otevřeném softwaru a datech, IT bezpečnosti, DIY a IoT. Na programu je spousta zajímavých přednášek. Pokud jste v Brně, stavte se. Vstup zdarma. Přednášky lze sledovat i online na VHSky a YouTube.

    Ladislav Hagara | Komentářů: 0
    7.11. 02:11 | IT novinky

    Qualcomm uzavřel víceletou dohodu se SpaceX. Bude dodávat rádiové technologie, baseband jednotky a software pro plánovanou pozemní 5G síť Starlink Mobile. Výstavba má zahrnovat desítky tisíc základnových stanic v USA. Zahájení nasazování se očekává v roce 2027. Qualcomm dohodu označuje za svůj dosud největší 5G kontrakt.

    vencour | Komentářů: 0
    7.11. 02:00 | IT novinky

    Google rozšířil Cloud Vulnerability Reward Program. Nově nabízí odměnu až 250 tisíc dolarů za vysoce závažné architektonické bezpečnostní chyby označované jako Root-in-Cloud.

    vencour | Komentářů: 0
    6.11. 12:22 | IT novinky

    V březnu byla oznámena spolupráce GrapheneOS s Motorolou. Nejnovější vlajka Motorola Signature 27 je první Motorola s oficiální podporou GrapheneOS. GrapheneOS (Wikpedie) je varianta Androidu zaměřující se na bezpečnost a soukromí.

    Ladislav Hagara | Komentářů: 5
    6.11. 04:55 | Nová verze

    Omarchy (Wikipedie) je linuxová distribuce s dlaždicovým správcem oken Hyprland. Založena je na Arch Linuxu. Vydána byla v nové verzi 4.5.0. Nově také pro Apple Silicon, konkrétně pro M1/M2/M3/Neo MacBooky.

    Ladislav Hagara | Komentářů: 3
    6.11. 03:22 | Nová verze

    Byla vydána nová stabilní verze 8.3 webového prohlížeče Vivaldi (Wikipedie). Postavena je na Chromiu 156 s bezpečnostními opravami z Chromia 157. Přehled novinek i s náhledy v příspěvku na blogu.

    Ladislav Hagara | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (8%)
     (7%)
     (4%)
     (21%)
     (30%)
     (9%)
     (5%)
     (2%)
     (14%)
     (20%)
    Celkem 3032 hlasů
     Komentářů: 36, poslední včera 22:38
    Rozcestník

    How Not to Write a Programming Book

    1.3.2009 18:51 | Přečteno: 2447× | psaní | poslední úprava: 6.3.2009 10:51

    By this post I would like to start a longer series about common mistakes made by authors in programming books. If I waited until I was happy with the thoughts expressed in the post, I would most probably never finish a single one. Therefore I will intentionally publish the text a bit raw and maybe return to the interesting thoughts in subsequent posts or even edit the post after publishing. I will start with what seems to be my favourite topic lately, with bogus code samples.

    Bogus Code Samples

    Programming books are full of code samples you would never write in the real world (at least not in your sane mind). Almost nobody takes the pain to handle the error conditions. Is that tolerable? Checking the error conditions would make the code harder to read, especially in the lower languages, where you cannot take advantage of exceptions. And the code is often repeated in the book, which would further complicate the issue. On the other hand, almost everybody learns to ignore the return values and exception conditions this way and only starts doing otherwise after they burn themselves bad in the real world. This would probably require a deeper thought; I wanted to talk about something simpler – contrived sample code. Consider this:
    void sum(int x, int y, int& z)
    {
        z = x + y;
    }
    
    This is a real example taken from an introductory programming book (!), the code is meant to illustrate passing arguments by reference. In practice one would certainly pass the sum back using the function return value. Passing arguments by reference would be better illustrated by something like this:
    bool read_data(int& data)
    {
        if (everything_goes_fine())
        {
            data = …;
            return true;
        }
        else
            return false;
    }
    
    This is also a bit contrived: Would you call a function read_data? Would you signal success by returning true? Shouldn’t this better be solved by using a pointer? I am not a C++ programmer and made this sample up on the spot without context, so that I cannot answer these questions right now. But it would certainly be better if the autor could illustrate passing by reference using some example that can’t be solved simply using the function return value. Do not cheat the readers, do not pretend that a problem is harder than it really is.

    Another example of what not to do, again from a real programming book:
    #include <iostream>
    using namespace std;
    int main(void)
    {
        int x = 0;
        while (x++ < 5)
        {
            int y = 0;
            while (y++ < 5)
                cout << "X";
            cout << "\n";
        }
        return 0;
    }
    
    This is a while loop misused as a for loop. Of course you can reason that the author simply wishes to illustrate a point, like passing arguments or comparing two cycles. I think that contrived, unreal examples are bad in programming books, especially if not explicitly marked as such.

    Just as a beginning speaker of a natural language often cannot detect irony, beginning programmer cannot tell “real code” from the “sample code”. Autors sometimes remark that the code sample is only meant as an example and would be written otherwise in practice. This is almost always just an excuse. Of course, writing production-grade code is not always possible in the book, but does it really make sense to write a book full of code that nobody would write in practice?        

    Hodnocení: 73 %

            špatné • dobré        

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

    Komentáře

    Vložit další komentář

    1.3.2009 19:11 dad
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    olsó í glaub ned, dasse Sinn mocht, hier Beitróg ina Frendspróch zu póste.

    Das war Schwäbisch.

    1.3.2009 19:34 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    Ich auch šprice dojč! :)

    Táto, ty de byl? V práci, já debil.
    1.3.2009 20:20 dad
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    je mozne (podle toho šprice) , ze jste se ucil nemcinu od nejakeho polaka?

    1.3.2009 23:54 freshmouse
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    Nebo od někoho z východní části naší republiky. Jak jsem četl "šprice", znělo mi to jako "piče"...

    2.3.2009 12:07 zde | skóre: 9 | blog: Linuch | Brno
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    Ja ja, piče schön!

    Táto, ty de byl? V práci, já debil.
    1.3.2009 19:40 CET
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    heh, pri cteni nahlas mi to zni dost jako svycarska nemcina:)

    1.3.2009 20:23 dad
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    ten dojem je spravny, co vim, tak obyvatele jizniho badenska-wuerttemberska jsou jedini Nemci, kteri svycarum rozumi, neb obe jazykove skupiny hovori stejne hroznou hatmatilkou ...

    1.3.2009 22:09 Cestmir Houska
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    A co Tirolaci? Podle me mluvi taky dost podobne.

    houska avatar 3.3.2009 12:25 houska | skóre: 41 | blog: HW
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    co? a pro oba je to rodna rec? clovek kterej mluvi nemecky nerozumi jinymu cloveku kterej mluvi taky nemecky?! kam jsme se to dostali ...

    ʚĭɞ 🍉 avatar 3.3.2009 13:04 ʚĭɞ 🍉 | skóre: 94 | blog:
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Hoch němčina a Schwyzer němčina jsou něco jiného. Tak jako BrE a AmE.
    🇵🇸 ✊ Touch grass ✊ 🇺🇦 ✊ ani boha, ani pána
    houska avatar 3.3.2009 14:10 houska | skóre: 41 | blog: HW
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    nerekl bych ze si american s britem/australanem/indem/JARanem nepokecaj ...

    slo mi o to jestli ty jazyky jsou od sebe opravdu tak daleko ze si nerozumi ...

    3.3.2009 14:50 dad
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    v nemecke televizi jsem videl svycarske zpravy, jsou povetsinou z titulky, jinak tomu skutecne vetsina Nemcu nerozumi, znam jednoho Svycara z Basileje a je to tak, ze se musi skutecne silne koncentrovat, kdyz chce mluvit spisovnou nemcinou. Nekteri starsi svycari to pry ale nedokazou vubec. Jina vec je, ze samozrejme nemecky svycar rozumi spisovne nemcine.

    1.3.2009 20:12 trekker.dk | skóre: 72
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    nuqDaq 'oH puchpa''e'ě
    Quando omni flunkus moritati
    1.3.2009 22:35 kralyk z abclinuxu | skóre: 29 | blog:  
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Ní thuigim. Tá tinneas cinn orm. Póg mo thóin... /Gaeilge Éireann/
    1.3.2009 23:04 2009
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    英語を読むことができない

    2.3.2009 02:07 dad
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    presne taky muj nazor.

    2.3.2009 02:35 YYY | skóre: 29 | blog: martinek
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Tak na tohle jsem opravdu potreboval google translate ;-)
    2.3.2009 20:00 2009
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    Je to copy-paste z translatora, takze to moze byt zle.

    ʚĭɞ 🍉 avatar 2.3.2009 21:37 ʚĭɞ 🍉 | skóre: 94 | blog:
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Ano, je to špatně.
    🇵🇸 ✊ Touch grass ✊ 🇺🇦 ✊ ani boha, ani pána
    2.3.2009 22:21 2009
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    Malo by to byt spravne:

    eigo o yomu koto ga dekinai - nemozem citat Anglictinu

    ʚĭɞ 🍉 avatar 2.3.2009 23:12 ʚĭɞ 🍉 | skóre: 94 | blog:
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Gramaticky špatně... nebo neumím číst? Nehledě k tomu, že máš chybu už jen v té transkripci do latinky.
    🇵🇸 ✊ Touch grass ✊ 🇺🇦 ✊ ani boha, ani pána
    3.3.2009 20:13 2009
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    Co tam je gramaticky zle?

    Niektore znaky sa prepisuju roznymi sposobmi. Doslovny preklad tej vety je: Nemozem robit citanie Anglictiny.

    4.3.2009 21:10 2009
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    Tych prekladov je viac:

    eigo wo/o yomenai

    eigo wo/o yomemasen

    ʚĭɞ 🍉 avatar 5.3.2009 01:31 ʚĭɞ 🍉 | skóre: 94 | blog:
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    +/-
    🇵🇸 ✊ Touch grass ✊ 🇺🇦 ✊ ani boha, ani pána
    ʚĭɞ 🍉 avatar 2.3.2009 05:50 ʚĭɞ 🍉 | skóre: 94 | blog:
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Musím si nahodit nějaké lepší písmo, takhle jsem tam vůbec neviděl nigori.
    🇵🇸 ✊ Touch grass ✊ 🇺🇦 ✊ ani boha, ani pána
    andree avatar 2.3.2009 09:09 andree | skóre: 39 | blog: andreeeeelog
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    :-D slusne

    microcz avatar 2.3.2009 13:27 microcz | skóre: 18 | blog: Michalův zápisník | Praha
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    +1

    2.3.2009 17:53 kralyk z abclinuxu | skóre: 29 | blog:  
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Ty první asi 4 znaky mi přijdou na Japonštinu nějaký složitý, skoro jak čínština. Je to normální japonština? [japonsky neumim ani ň ;-)]
    2.3.2009 19:53 Andrej Herceg | skóre: 43
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Prvé dva znaky sú rovnaké v japončine aj v čínštine (a znamenajú to isté), tretí znak je hiragana, takže určite to je po japonsky a nie po čínsky (a ten koniec vety je typická japončina). :)
    ʚĭɞ 🍉 avatar 2.3.2009 21:44 ʚĭɞ 🍉 | skóre: 94 | blog:
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Ještě dodám, že pro angličtinu se používá katakana イングリッシュ.
    🇵🇸 ✊ Touch grass ✊ 🇺🇦 ✊ ani boha, ani pána
    3.3.2009 20:18 kralyk z abclinuxu | skóre: 29 | blog:  
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Hm to je zajímavé ... sem vůbec nevěděl, že mají společné některé znaky ... a to se takle běžně používá, nebo to je výplod strojového překladu?
    ʚĭɞ 🍉 avatar 3.3.2009 21:18 ʚĭɞ 🍉 | skóre: 94 | blog:
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Ten překlad se mi nezdá. Každopádně v japonštině se běžně používají čínské znaky (kanji), které ovšem samozřejmě mají japonské čtení, pro gramatické záležitosti nebo přepis komplikovaných znaků se používá hiragana (slabičná abeceda) a pro přejatá slova se používá katakana (jiná slabičná abeceda) --- obě tyto abecedy jsou fonetické, nebo jak se tomu říká.
    🇵🇸 ✊ Touch grass ✊ 🇺🇦 ✊ ani boha, ani pána
    2.3.2009 09:18 Tomáš
    Rozbalit Rozbalit vše Pointery

    Zdá se to jenom mně, že v příkladech chybí dereference pointeru? Tedy *z = x + y, případně *data ... .

    zoul avatar 2.3.2009 09:53 zoul | skóre: 43 | blog: ☂ | Boskovice
    Rozbalit Rozbalit vše Re: Pointery
    Reference jsou v C++ v podstatě automaticky dereferencované ukazatele, takže nechybí:
    #include <iostream>
    using namespace std;
    
    void change(int& what)
    {
        what = 42;
    }
    
    int main()
    {
        int foo = 0;
        change(foo);
        cout << foo << endl; // 42
        return 0;
    }
    
    Jinak díky za první příspěvek v tématu :-)
    2.3.2009 10:23 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Ono je jednoduché kritizovat, že autoři učebnic neošetřují chybové stavy. Ale když si zkusíte nějaký učební text napsat, zjistíte, že to zase tak jednoduché není. Protože když budete chtít realisticky ošetřit všechny možné chybové stavy, několikařádková přehledná a názorná ukázka se nafoukne na několikanásobek délky, stane se naprosto nepřehlednou a čtenáři unikne podstata. Totéž platí pro ty nerealistické příklady: některé věci jdou demonstrovat na příkladech ze života, ale často ty reálné příklady opět trpí nenázorností a nepřehledností.
    zoul avatar 2.3.2009 10:40 zoul | skóre: 43 | blog: ☂ | Boskovice
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Však jsem psal, že zrovna to hlídání chybových stavů je ošemetná věc. A stejně tak souhlasím s tím, že některé příklady z praxe jsou nepřehledné a nenázorné. Je to otázka rovnováhy a vhodně volených příkladů – nikdo neříká, že psát knížky o programování je lehké. Od mnoha autorů jsou umělohmotné příklady bez kontroly chyb jen alibismus, to mi vadí. Například SICP hloupými příklady netrpí ani v nejmenším, podobně Velbloudí kniha. Pokud se někdo rozhodne psát knihu, měl by být schopen vybrat nebo napsat příklady na úrovni.
    2.3.2009 12:11 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Například SICP hloupými příklady netrpí ani v nejmenším
    SICP jsem četl a je to úžasná knížka. Klíčový je ovšem použitý jazyk: v C++ by podobné příklady měly několikanásobnou délku, a to bych nechtěl vidět pátou kapitolu. Když jsme ovšem u toho: můžete doporučit nějakou opravdu kvalitní učebnici C++? Český jazyk vítán :-) V poslední době uvažuju nad takovým cvičením, na které se právě hodí nějaký nižší jazyk. Nejradši bych se u toho aspoň trochu naučil C++, i když D vypadá taky super :-)
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    2.3.2009 13:14 Ivan
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    Vyborna knizka je www.amazon.com/Modern-Design-Programming-Patterns-Depth/dp/0201704315, jeji ceskej preklad je bohuzel dost tragickej. Vsechny odborny terminy jsou - nekdy i dost nasilne - prelozeny do cestiny, ale na druhou stranu maji vety casto anglicky slovosled.

     

    zoul avatar 2.3.2009 13:46 zoul | skóre: 43 | blog: ☂ | Boskovice
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    To je pravda, v tomhle ohledu má Scheme zjevné výhody. (Mimochodem, ale to spíš pro zábavu.) V knihách moc velký přehled nemám, ale náhodou mám doma už přes deset let Programovací jazyk C++ od Stroustrupa. Když jsem ho dřív čítal, ohromně se mi líbil, i když jsem skoro ničemu nerozuměl. Myslím, že je to výborná kniha, jen překlad do češtiny (Jaromír Šmejkal, Ben 1997) je bohužel příšerný, na hranici čitelnosti. Originál podle mě stojí za koupi, je to knížka na úrovni K&R, SICP a podobných.
    ʚĭɞ 🍉 avatar 2.3.2009 15:44 ʚĭɞ 🍉 | skóre: 94 | blog:
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Mně se líbily knížky od Viria, hlavně ta skripta FJFI o C++. Ale to je něco dost jiného.
    🇵🇸 ✊ Touch grass ✊ 🇺🇦 ✊ ani boha, ani pána
    2.3.2009 15:53 Ladicek | skóre: 28 | blog: variace | Havlíčkův brod
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Od Viriuse (he, to je jméno!) jsem četl Od C k C++ a s tím jsem teda spokojen nebyl ani trochu.
    Ještě na tom nejsem tak špatně, abych četl Viewegha.
    3.3.2009 11:54 b*d
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    Českej překlad nasazuje všemu korunu. Origianál je lepší. I když je potřeba používat slovník člověk se alespoň naučí klíčová slova pro google. 

    int read_data(int& data, int velikost_dat)
    {
        int readed = 0;
        for(; readed < velikost_dat ; readed++)
           if ( chyba ) return -2; 
           else ...
        return readed;
    }
    

    a máme příklad který se používá a je se smysluplnou návratovou hodnotou (o triku int vs char a EOF bych zatim treba pomlcel). Takže proč vymýšlejí autoři ptákárny a nedávají příklady ze STL?

    3.3.2009 12:15 Michal Kubeček | skóre: 72 | Luštěnice
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    readed???
    3.3.2009 19:12 kralyk z abclinuxu | skóre: 29 | blog:  
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    :-D My grammar is gooder...
    4.3.2009 09:54 b*d
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book

    Je potřeba z Angličtiny odstranit některé zastaralé výrazy. Mladý brit pohledá v Googlu a bude si myslet že je to správně. Pak bude angličtina jednoduší pro celý svět.

     

    4.3.2009 14:56 cronin | skóre: 49
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    To tvrdil uz Orwell. :-)

    Založit nové vlákno • Nahoru

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