Peter-Paul Koch: ppk on JavaScript

27. 6. 2008 10:00 (aktualizováno) | Martin Hassman

Do mé sbírky knih o JavaScriptu přibyl další úlovek ppk on JavaScript, jejímž autorem je Peter-Paul Koch (ppk), známý zejména svým webem Quirksmode.org. Jelikož si práce Petra-Pavla Kocha vážím (zejména jeho článků a příspěvků na blogu), tak jsem se na knihu hodne těšil.

Jedná se o knihu relativně novou, byla vydána v loňském roce (byť dopsána již v roce 2006) a zahrnuje mj. i Internet Explorer 7, takže by měla zůstat ještě pár let aktuální.

Hned na začátku musím říci, že se jedná o tu nejbizarnější knihu o JavaScriptu, jakou jsem kdy četl. Nečekal jsem například, že ppk hned v úvodu přizná, že nemíní psát o objektově orientovaném JavaScriptu, protože jej během svých osmi let praxe nikdy nepotřeboval. Nakonec to dodrží jen napůl a na několika stránkách předvede základní práci s objekty, ovšem jeho nechuť k dnešním složitým JavaScriptovým knihovnám a všudepřítomnému AJAXu je z celé knihy znát.

Tím rozhodně nemíním říct, že by se jednalo o knihu špatnou. Jsem dokonce přesvědčen, že řada čtenářů ji bude považovat za tu nejlepší knihu o JavaScriptu na světě, ale jedná se o knihu spíše méně obvyklou a hodně záleží na vašem přístupu k webovému programování, zda se vám bude líbit nebo se jí raději vyhnete.

Vstupní znalosti

Co se týče vstupních znalostí, zde autor předpokládá, že knihu čte člověk, který již umí trochu dělat webové stránky, o HTML a CSS má jisté znalosti a možná i jednou nebo dvakrát v životě použil nějaký JavaScript ve své stránce, byť jen metodou copy & paste bez hlubšího porozumění.

Nemusíte se bát, že by po vás autor požadoval nějaké programátorské znalosti. Všechny ukázky kódu jsou bohatě popsané a vysvětlené. Tím bohatě chci říct, že ppk se občas trochu „vykecává“. To má za následek jednak, že se málokdy stane, aby vám něco uteklo nebo jste něco nepochopili, protože ppk vše dopodrobna vysvětlí. Také nemusíte v zásadě při čtení moc přemýšlet, protože ppk s pedagogickým umem nenechá nic podstatného nevyřčeno a nebojí se občas věci i zopakovat. (Jsou knihy, kde tohle neplatí, kde se musíte zastavovat a přemýšlet nebo se i vracet zpět, aby vám neutekla nit. To se vám u ppk nestane.) Knihu tak lze číst i v rušnějším prostředí (třeba ve vlaku). Naopak to ale znamená, že knihu nejspíš nepůjde moc dobře používat jako referenční příručku (kdo by to v tom dlouhém povídání všechno hledal).

Z obsahu

Tak kupříkladu kniha nezačíná popisem základní syntaxe JavaScriptu, jak bychom možná čekali, ale na necelých 140 stranách jsme seznámeni s válkou prohlížečů, s historií skriptování, s tím, jak je důležité i při použití JavaScriptu zachovat stránky přístupné (jedno z nejlepších pojednání o přístupnosti, co jsem kdy četl), dočteme se něco o hlasových čtečkách a o správné detekci prohlížečů. Dozvíme se dokonce i návod, jak nahlásit chybu v tom kterém prohlížeči.

Mě se celý úvod moc líbil a sám jsem se dozvěděl ledacos nového, ale takový klučina lačnící po vlastním programování bude při tom moc a moc netrpělivý nebo to celé prostě přeskočí. Teprve až v páté kapitole (na straně 140!) začneme skutečně něco kódovat. (Zmínil jsem už, že se jedná o bizarní knihu?)

Po pochopení základů JavaScriptu jsou probrány události, DOM a dynamická změna CSS. Vše je zakončeno AJAXem. Žádné teoretické záležitosti, vše se soustředí na problémy, se kterými běžný kodér přijde do styku. A tak místo abychom se v jednotlivých kapitolách setkali s kompletním popisem problematiky (ať již DOMu nebo událostí), autor místo toho vysvětlí základní principy a popíše jen základní metody, které postačí k vyřešení naprosté většiny problémů. A myslím, že ppk hloubku výkladu odhadl opravdu správně. Nestane se, že byste konec kapitoly přeskočili s tím, že tohle nejspíš nikdy nebudete potřebovat.

Praktické zaměření

Celá kniha je totiž výrazně zaměřena na praxi a na oblasti, které bude běžný webový vývojář potřebovat nejčastěji (i všechny použité příklady pochází z autorovy vlastní praxe). V knize snad není kapitola, kde by ppk čtenáře neupozorňoval na problémy s interoperabilitou mezi jednotlivými prohlížeči a na způsoby jejich řešení. Pokud si náhodou myslíte, že máte rozdíly prohlížečů ve zpracování JavaScriptu v malíčku, tak sázím na to, že vás ppk stejně strčí do kapsy.

Velmi mne překvapilo malé množství chyb, které se v knize nachází. Sám jsem si při čtení všiml pouze jedné jediné a i errata knihy jsou velmi krátká. Tak pečlivá práce se dnes málokdy vidí. Pokud by někdy kniha byla přeložená do češtiny schválně si porovnám, o kolik se tento stav zhoršil.

Zhodnocení

Vím, že jsem zde knihu několikrát kritizoval (a věřím, že právem), ale i přesto jsem přesvědčen, že pokud jste webdesignér, který se chce ke své stávající živnosti naučit i skriptovat, anebo pokud třeba už trochu skriptovat umíte, ale potřebujete se v tom zlepšit, pokud možno bezbolestně a neobjevovat již objevené, tak je tahle kniha možná opravdu tím nejlepším, co si můžete vybrat.

Pokud jste zkušenější programátor, ale je vám vyčítáno, že vaše webové aplikace nejsou přístupné a vy hledáte cestu, jak to zlepšit, pak je tahle kniha nejspíš i pro vás. Možná se u ní občas budete nudit, možná budete místy s autorem nesouhlasit, ale nakonec se naučíte, jak tvořit aplikace přístupné.

V případě, že na vás výše uvedené definice neplatí, byste měli popřemýšlet, zda opravdu chcete zrovna tuhle knihu. Možná ano, možná také ne.

Údaje o knize

Autor: Peter-Paul Koch
Název: ppk on Javascript (obsah knihy)
Jazyk: angličtina
ISBN: 978–0–321–42330–6
Rozsah: 500 stran
Cena: knihu jsem koupil v originále za 950 Kč + poštovné v knihkupectví Shakespeare a synové (pokud náhodou víte, jak knihu objednat levněji, podělte se v komentářích).

Srovnání knih

Pokusím se zde o malé porovnání knih o JavaScriptu, které znám. Srovnávat budu výše recenzovanou ppk on JavaScript (anglické vydání) s David Flanagan: JavaScript Kompletní průvodce (2. vydání, které vyšlo kdysi i v češtině) a s John Resig: JavaScript a Ajax (vyšlo v češtině loni).

Ať se snažím, jak chci, nedokážu je seřadit od nejlepší po nejhorší, protože každá je zaměřena na trochu jiného čtenáře, resp. na trochu jinou fázi jeho profesního vývoje.

Zatímco Flanagan vás naučí samotný JavaScript na jedničku, záležitosti okolo DOM na dvojku a řešení praktických problémů včetně kompatibility prohlížečů tak na trojku. Tak ppk vás naučí JavaScript maximálně na trojku, vše okolo DOM na dvojku a praktické problémy na jedničku.

A do třetice John Resig vás JavaScript nenaučí vůbec (vlastně vstupní požadavek pro čtení knihy je znát JavaScript minimálně na tu trojku, ovšem pak to vytáhnete možná i na jedničku), vše okolo DOM na dvojku a praktické problémy na jedničku.

Navíc každá z uvedených knih má jeden bonus, který chybí těm ostatním. Flanagan je jedinečnou referenční příručkou, ppk vás naučí jak si i s JavaScriptem udržet přístupné stránky a Resig vám otevře svět moderních JavaScriptových knihoven.

Poučení? Pokud žijete z jedné JavaScriptové knihy a myslíte si, kolik toho umíte, tak se možná třeba taky pěkně mýlíte.

  • 30. 4. 2008 8:08

    PROgrammer (neregistrovaný)

    Knihu jsem si vcera downloadoval (warez), celou precetl za den a nedozvedel se vubec nic noveho. PPK on javascript je ztrata casu, dokud ctenarem neni tupohlavy absolvent.

  • 30. 4. 2008 8:35

    Mazarik (neregistrovaný)

    Pekna recenzia:) Myslim si, ze kazdy z autorov vydal knihu hlavne podla toho, co ich najviac bavi. Ppk vydal knihu o jemnych rozdieloch a chybach prehliadacov(prak­ticke skusenosti), Resig o modernej podobe Javascriptu a jeho smerovaniu, Flanagan vydal referencnu prirucku.

  • 30. 4. 2008 9:50

    RZ (neregistrovaný)

    Ahoj Martine, k tomu nakupu - na nejmenovanem velkem US internetovem knihkupectvi to je za $29.69 + postovne do nasi zemicky + trocha trpelivosti nez to dojde ... To jen tak na okraj ;-)

    Zdravim, R.

  • 30. 4. 2008 10:47

    Martin Hassman (neregistrovaný)

    [3] Nojo, vypadá to, že na Amazonu mají zrovna moc slušnou slevu. A při současném kurzu to je opravdu o něčem jiném, díky. http://www.amazon.com/ppk-JavaScript-1-e-VOICES/dp/0321423305/ref=sr_1_1?ie=UTF8&s=books&qid=1209545152&sr=1-1

  • 30. 4. 2008 17:19

    c0stra (neregistrovaný)

    Problem javaScriptu je v tom, ze vyrazne predbehl svoji dobu. Vetsina knih a knihoven je o tom, ze autor nepochopil, jak JavaScript funguje, a omezil jeho moznosti pouzitim ve stylu beznych jazyku. Proto se:
    a) PPK nevenuje poradne OOP
    b) Resig zabyva knihovnama (nazyva je "moderni", misto "omezujici do ramce jinych jazyku"), ktere jsou naprosto neefektivni
    c) Flanagan nevystihuje podstatu prototypicke dedicnosti
    Bohuzel porad zadna pekna kniha o JavaScriptu nevysla a PPK na tom nic nezmenil

  • 30. 4. 2008 23:54

    Martin Hassman (neregistrovaný)

    c0stra: Já to vidím trochu optimističtěji. Pěkné knihy o JavaScriptu tu máme, ale nejsou holt ideální.

    Jinak proč myslíš, že knihovny jsou neefektivní? (Náme oba na mysli jQuery, prototype a podobné, že?). Co bys jim vytknul?

    Flanagan ty prototypy myslím probral docela dobře. On je pak sám teda už moc nepoužívá, ale pro tu referenční příručku to postačí. Nebo máš něco konkrétního, co nevystihl?

    Mě mrzí, že nějakou knihu nenapsal přímo Brendan Eich, to by bylo hardcore, ale asi má jiné věci na práci.

    BTW Teď vyšla kniha Crockfordovi. Jak ho znám, bude určitě zajímavá, ale už podle názvu bude řešit jen podmnožinu JavaScriptu http://www.amazon.com/exec/obidos/ASIN/0596517742/wrrrldwideweb

  • 5. 5. 2008 10:49

    c0stra (neregistrovaný)

    Martin Hassman:

    1) Ano, mame oba na mysli jQuery, prototype, Base apod. Predne bych jim vytknul navrh. V nem ma svoje dulezite misto dekompozice. Tu zadna z techto knihoven nespatrila. Jejich zpusob "implementuj do knihovny vsechno, co nekdy nekdo muze potrebovat", navic do jednoho kontejneru (ano objekty jsou zde "zneuzity a degradovany" pouze na uroven kontejneru), je naprosto v rozporu s principy moderniho OOP. Zabranuje znovupouzitelnosti, dela knihovnu neprehlednou.
    Dale zminena efektivita. Konkretne u jQuery je hodne znat. Je hezke, ze umoznuje vyhledavat elementy podle nejruznejsich kriterii, ale za cenu neumerneho straveneho casu. Pro zadnou produkcni aplikaci bych tuto knihovnu nepouzil.
    Dalsi (souvisi s prni vytkou) je naprosto naivni implementace, hemzici se slozitym vyhodnocovanim "flagu" na mistech, kde by se mely vyuzit navrhove vzory jako State (k jehoz implementaci JavaScript jako takovy uplne idealni).

    2) Flanagan ty prototypy spis zminil, nez probral. "Probrat prototypy" bych bral kdyby vysvetlil jejich pouziti v praktickych pripadech. Zacit rozdilem mezi konstrukci a inicializaci objektu (ktera je v prototypickem OOP naprosto nejpodstatnejsi)
    vysvetlit copy-on-write. Dale vysvetlit pouziti statickych vs. instancnich atributu, vyhody toho, ze v JS muzete oba typy kombinovat a tim dosahnout v jinych jazycich naprosto neobvyklych, ale velmi uzitecnych konstrukci.

    Vsecno vychazi pouze ze dvou veci. Jak instance, tak prototyp jsou pouze objekty, nic vic a nic min. A druha vec, ze funkce je take objekt. Tim je JS predurcen k elegantnimu programovani diky vyuziti jak typoveho, tak stavoveho polymorfismu. Jen ho spravne uchopit!

Přidávat nové názory je zakázáno.

DigiZone.cz: Česká televize otevírá další studio

Česká televize otevírá další studio

Vitalia.cz: dTest odhalil ten nejlepší kečup

dTest odhalil ten nejlepší kečup

Lupa.cz: Další Češi si nechali vložit do těla čip

Další Češi si nechali vložit do těla čip

Vitalia.cz: Tahák, jak vyzrát nad zápachem z úst

Tahák, jak vyzrát nad zápachem z úst

Vitalia.cz: Jak Ondra o astma přišel

Jak Ondra o astma přišel

Podnikatel.cz: Letáky? Lidi zuří, ale ony stále fungují

Letáky? Lidi zuří, ale ony stále fungují

DigiZone.cz: Rapl: seriál, který vás smíří s ČT

Rapl: seriál, který vás smíří s ČT

Lupa.cz: Jak se prodává firma za miliardu?

Jak se prodává firma za miliardu?

DigiZone.cz: Technisat připravuje trojici DAB

Technisat připravuje trojici DAB

120na80.cz: Co je padesátkrát sladší než cukr?

Co je padesátkrát sladší než cukr?

Podnikatel.cz: Instalatér, malíř a elektrikář. "Vymřou"?

Instalatér, malíř a elektrikář. "Vymřou"?

Lupa.cz: Blíží se konec Wi-Fi sítí bez hesla?

Blíží se konec Wi-Fi sítí bez hesla?

DigiZone.cz: Ginx TV: pořad o počítačových hráčích

Ginx TV: pořad o počítačových hráčích

Podnikatel.cz: Udělali jsme velkou chybu, napsal Čupr

Udělali jsme velkou chybu, napsal Čupr

DigiZone.cz: Na jaká videa se vlastně díváme

Na jaká videa se vlastně díváme

DigiZone.cz: Digi Slovakia zařazuje stanice SPI

Digi Slovakia zařazuje stanice SPI

Podnikatel.cz: Byla finanční manažerka, teď cvičí jógu

Byla finanční manažerka, teď cvičí jógu

DigiZone.cz: Nova opět stahuje „milionáře“

Nova opět stahuje „milionáře“

Podnikatel.cz: Znáte už 5 novinek k #EET

Znáte už 5 novinek k #EET

Podnikatel.cz: Babišovi se nedá věřit, stěžovali si hospodští

Babišovi se nedá věřit, stěžovali si hospodští