abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 16:22 | Upozornění

    Společnosti Ticketmaster byla odcizena databáze s osobními údaji (jméno, adresa, telefonní číslo a část platebních údajů) 560 miliónů zákazníku. Za odcizením stojí skupina ShinyHunters a za nezveřejnění této databáze požaduje 500 tisíc dolarů [BBC].

    Ladislav Hagara | Komentářů: 0
    31.5. 23:55 | Nová verze

    Byla vydána nová stabilní verze 24.05 linuxové distribuce NixOS (Wikipedie). Její kódové označení je Uakari. Podrobný přehled novinek v poznámkách k vydání. O balíčky se v NixOS stará správce balíčků Nix.

    Ladislav Hagara | Komentářů: 0
    31.5. 17:33 | Nová verze

    Byla vydána nová verze 1.48.0 sady nástrojů pro správu síťových připojení NetworkManager. Novinkám se v příspěvku na blogu NetworkManageru věnuje Fernando F. Mancera. Mimo jiné se v nastavení místo mac-address-blacklist nově používá mac-address-denylist.

    Ladislav Hagara | Komentářů: 22
    31.5. 17:11 | Komunita

    Před 25 lety, 31. května 1999, započal vývoj grafického editoru Krita (Wikipedie). Tenkrát ještě pod názvem KImageShop a později pod názvem Krayon.

    Ladislav Hagara | Komentářů: 3
    31.5. 12:55 | Nová verze

    Farid Abdelnour se v příspěvku na blogu rozepsal o novinkám v nejnovější verzi 24.05.0 editoru videa Kdenlive (Wikipedie). Ke stažení brzy také na Flathubu.

    Ladislav Hagara | Komentářů: 0
    31.5. 11:22 | Zajímavý článek

    David Revoy, autor mj. komiksu Pepper&Carrot, se rozepsal o své aktuální grafické pracovní stanici: Debian 12 Bookworm, okenní systém X11, KDE Plasma 5.27, …

    Ladislav Hagara | Komentářů: 9
    30.5. 22:44 | Nová verze

    Wayland (Wikipedie) byl vydán ve verzi 1.23.0. Z novinek lze vypíchnout podporu OpenBSD.

    Ladislav Hagara | Komentářů: 0
    30.5. 21:22 | Zajímavý článek

    Craig Loewen na blogu Microsoftu představil novinky ve Windows Subsystému pro Linux (WSL). Vypíchnout lze GUI aplikaci pro nastavování WSL nebo správu WSL z Dev Home.

    Ladislav Hagara | Komentářů: 0
    30.5. 12:44 | Pozvánky

    V sobotu 1. června lze navštívit Maker Faire Ostrava, festival plný workshopů, interaktivních činností a především nadšených a zvídavých lidí.

    Ladislav Hagara | Komentářů: 0
    30.5. 12:22 | Nová verze

    Webový server Caddy (Wikipedie) s celou řadou zajímavých vlastností byl vydán ve verzi 2.8 (𝕏). Přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 17
    Rozcestník

    How Not to Write a Programming Book

    1.3.2009 18:51 | Přečteno: 1626× | 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 ...

    Fluttershy, yay! avatar 3.3.2009 13:04 Fluttershy, yay! | skóre: 92 | 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🇺🇦 ✊ no gods, no masters
    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.

    Fluttershy, yay! avatar 2.3.2009 21:37 Fluttershy, yay! | skóre: 92 | blog:
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    Ano, je to špatně.
    🇵🇸Touch grass🇺🇦 ✊ no gods, no masters
    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

    Fluttershy, yay! avatar 2.3.2009 23:12 Fluttershy, yay! | skóre: 92 | 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🇺🇦 ✊ no gods, no masters
    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

    Fluttershy, yay! avatar 5.3.2009 01:31 Fluttershy, yay! | skóre: 92 | blog:
    Rozbalit Rozbalit vše Re: How Not to Write a Programming Book
    +/-
    🇵🇸Touch grass🇺🇦 ✊ no gods, no masters
    Fluttershy, yay! avatar 2.3.2009 05:50 Fluttershy, yay! | skóre: 92 | 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🇺🇦 ✊ no gods, no masters
    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). :)
    Fluttershy, yay! avatar 2.3.2009 21:44 Fluttershy, yay! | skóre: 92 | 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🇺🇦 ✊ no gods, no masters
    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?
    Fluttershy, yay! avatar 3.3.2009 21:18 Fluttershy, yay! | skóre: 92 | 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🇺🇦 ✊ no gods, no masters
    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.
    Fluttershy, yay! avatar 2.3.2009 15:44 Fluttershy, yay! | skóre: 92 | 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🇺🇦 ✊ no gods, no masters
    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áknoNahoru

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