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:

  1. 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.
  2. 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?
  3. Přemýšlejte jak byste mohli program přepsat za předpokladu že je špatný.
  4. 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