JP: Úvod
Tato kniha je naplněna hlavolamy programovacího jazyka Java a jeho knihoven. Kdokoli s pracovní znalostí jazyka Java může porozumět těmto puzzle, přesto ale mnohá z nich jsou výzvou i pro zkušeného programátora. Neciťte se špatně pokud nějaké puzzl nemůžete vyřešit. Puzzle jsou seskupeny dle vlastností které používají, ale nemyslete si že trik ukrytý v puzzle automaticky souvisí s nadpisem kapitoly; vyhrazujeme si právo zmást vás.
Většina puzzle ukazuje a rozkoumává neintuitivní chování která mohou vést k chybám. Tato chování jsou známá jako pasti, chytáky a krajní případy. Má je každá platforma, ale Java jich má daleko méně než ostatní platformy srovnatelné síly. Cílem této knihy je pobavit vás s puzzle a zároveň vás naučit jak se vyhnout skrytým pastem a chytákům. Jak se budete propracovávat puzzle budete se čím dál méně bát těchto nástrah ve vašem kódu a začnete na ně více poukazovat v kódu který čtete nebo revidujete.
Tuto knihu byste měli číst s počítačem po svém boku. Abyste z puzzle vytěžili co nejvíce, budete potřebovat vývojové prostředí Java, jako je JDK [JDK 5.0] od Sunu. Mělo by podporovat verzi 5.0, protože ěkterá pouzzle jsou postavena na vlastnostech této verze. Zdrojové kódy k puzzle si můžete stáhnout z javapuzzlers.com. Pokud se rádi netrestáte, doporučujeme abyste to udělali předtím, než začnete puzzle řešit. Je to o mnoho lehčí než je psát sami.
Většina puzzle mají form krátkého programu, který vypadá že dělá jednu věc ale samozřejmě dělá neco jiného. Vaším úkolem je zjistit co. Abyste z puzzle vytěžili co nejvíce, doporučujeme vám tento postup:
- Prostudujte program a snažte se předpovědět jeho chování bez použití počítače. Pokud nevidíte v čem je háček, hledejte dále.
- Když si už myslíte že víte co prgram dělá, spusťte ho. Udělal to co jste si mysleli že by měl? Pokud ne, můžete podt vysvětlení pro chování které jste viděli?
- Přemýšlejte jak byste mohli program přepsat za předpokladu že je špatný.
- Tehdy, a pouze tehdy si přečtěte řešení.
Některá puzzle vyžadují abyste napsali něco málo kódu. Aby jste získali z puzzle co nejvíce, doporučujeme vám je zkusit, alespoň na chvíli, řešit bez pomoci počítače a poté otestovat vaše řešení na počítači. Pokud váš kód nefunguje, pohrejte si s ním abyste viděli jestli ho dokážete donutit fungovat před tím než si přečtete řešení.
Stejně jako většina knih s puzzle, i tato vám nabízí puzzle a jejich řešení. Umožňuje vám číst řešení bez listování tam a zpět mezi puzzle a řešením na konci knihy. Kniha je rozvržena tak, že musíte otočit stránku s puzzle aby jste si mohli přečíst řešení, takže se nemusíte bát toho že si přečtete řešení náhodně.
Doporučujeme vám přečíst si každé řešení, i když puzzle úspěšně vyřešíte. Řešení obsahují vysvětlení která jdou mnohem dále než jen jednoduché vysvětlení chování programu. Diskutují důležité pasti a chytáky a poskytují tak lekce jak se vyvarovat témto úskalím. Stejně jako průvodci nejlepšími praktikami nejsou tyto lekce tvrdými a rychlými pravidly a měli byste je porušovat jen zřídka a z dobrého důvodu.
Většina řešení obsahuje odkazy na podstatné části Specifikace jazyka Java, třetí vydání [JLS]. Tyto odkazy nejsou nezbytné k pochopení puzzle, ale jsou užitečné pokud se chcete více ponořit do pravidel jazyka stojícími za konkrétním puzzle. Podobně mnoho řešení obsahuje odkazy na podstatné rady z knihy Java efektivně [EJ]. Tyto odkazy jsou užitečné pokud chcete zjistit něco více o nejlepších praktikách.
Některá řešení obsahují diskuzi o rozhodnutích učiněných při návrhu jazyka a jeho API, která vedla k nebezpečím ilustrovaným v puzzle. Tyto "lekce pro návrháře jazyka" jsou myšleny pouze jako otrava pro mysl a stejně jako běžné jídlo, měly by být podávány se špetkou soli. Rozhodnutí o návrhu jazyka nemohou být učiněna samostatně. Každý jazyk obsahuje tisíce rozhodnutí o návrhu která spolu nějak souvisí. Rozhodnutí správné pro jeden jazyk může být špatné pro jiný.
dokončit překlad
Java Puzzlers, Předmluva | Dr3dweRkZ | Java Puzzlers, Ukecaná puzzle