Lexikální a dynamický rozsah platnosti proměnné

Až budete příště pracovat ve svém oblíbeném programovacím jazyku, pozastavte se na chvíli nad tím, že principy, které tak již bezpečně dobře znáte, nemusí platit všude. Řeč bude na následujících řádcích o rozsahu platnosti proměnné. Uvažovat lze přitom dva modely — lexikální a dynamický rozsah.

Lexikální rozsah platnosti proměnné

Následujcí chování vám bude dobře známé. Používá jej totiž většina soudobých programovacích jazyků. Pokud se v nich rozhodnete aplikovat libovolnou proceduru obsahující ve svém těle proměnou neinicializovanou v lokálním prostředí této procedury, hledá se hodnota (vazba) proměnné v prostředí vzniku procedury. A co si představit pod pojmem prostředí vzniku procedury? Jde o prostředí nadřazené tomu lokálnímu. Důsledkem toho pokud v proceduře použijeme proměnnou, jejíž hodnota není v těle inicializována, je nutno vazbu hledat výše, kde s největší pravděpodobností narazíme na příslušnou globální proměnnou a z ní hodnotu vyčteme. Pokud by zde náhodou taková proměnná nebyla, nezbude než nahlásit chybu — proměnná totiž neexistuje.

Abychom to lépe pochopili, podívejme se nyní společně na komentovaný příklad:

(define test
  (lambda (y)
    (lambda (x)
      (+ y x))))

(define y 100);v globálním prostředí máme y = 100

(define f (test 20));vzniká procedura, nyní máme y = 20
(f 10);aplikace procedury, za x dosadíme 10 a spočítáme 20 + 10 = 30

;procedura ví, že má sečíst y a x
;hodnotu pro x zná (je to 10), tato hodnota byla předána v argumentu
;nyní je třeba zjistit hodnotu pro y, ta se totiž v lokálním prostředí nevyskytuje
;procedura tedy začíná hledat v "prostředí vzniku procedury", to je to prostředí, které je nadřazené tomu aktuálnímu
;v tomto nadřazeném prostředí je nalezeno kýžené y (s hodnotou 20)
;procedura sečte 20 + 10 a vrátí 30
;hodnota y = 100 v globálním prostředí je v tomto případě směle ignorována

Dynamický rozsah platnosti

A teď si představme, že by se hodnoty proměnných hledaly úplně jinak, konkrétně v prostředí aplikace procedury. Nutno podotknout, že tuto metodu téměř nikdo nepoužívá, ale existují výjimky. Než se podíváme na příklad, řekněme si, jaká je hlavní potíž tohoto přístupu — hodnoty proměnných zjistíme až za běhu programu, čímž stoupá časová náročnost ladění a hledání chyb.

(define test
  (lambda (y)
    (lambda (x)
      (+ y x))))

(define y 100);v globálním prostředí máme y = 100

(define f (test 20));vzniká procedura, nyní máme y = 20
(f 10);aplikace procedury, za x dosadíme 10 a spočítáme 100 + 10 = 110

;procedura ví, že má sečíst y a x
;hodnotu pro x zná (je to 10), tato hodnota byla předána v argumentu
;nyní je třeba zjistit hodnotu pro y, ta se totiž v lokálním prostředí nevyskytuje
;procedura tedy začíná hledat v "prostředí aplikace procedury"
;v tomto aktuálním prostředí se y = 100
;procedura sečte 100 + 10 a vrátí 110

Jak na levný tisk? Srovnání renovace, originálního zboží a kompatibilních kazet

Cartridge pro Canon

pakorn / freedigitalphotos.net

Pořízení nové cartridge (zásobníku s inkoustem) může nezkušeného majitele tiskárny nepříjemně překvapit. Výrobci totiž za účelem maximálního snížení ceny přicházejí s velmi jednoduchým trikem. Prodávají sice plně funkční tiskárnu, ta však ve svých útrobách ukrývá méně inkoustu, než běžně prodávané originální tiskové kazety. Až budete příště v hypermarketu uvažovat nad tím, proč multifunkční inkoustová tiskárna stojí v poklidu méně než 1 000 Kč, už budete mít jasno. Firma zkrátka spoléhá na to, že se zahojí na dodatečném spotřebním materiálu. Až zařízení z důvodu nedostatku inkoustu odmítne dále pracovat a nebohý majitel se začne poohlížet po nové náplni, patrně ho nepříjemně zaskočí cena, která dokáže převýšit polovinu původních pořizovacích nákladů.

Rozhodně se proto vyplatí vědět, kde si obstarat levný toner či inkoust. Tato informace bude dozajista zajímat i vlastníky dražších tiskáren, které sice přicházejí s různorodými ekonomickými funkcemi pro úsporný provoz, i tak se však po čase výměna cartridge stává nevyhnutelnou akcí.

Originální kazeta, renovace nebo naplnění na vlastní pěst?

CMYK

Danilo Rizzuti / freedigitalphotos.net

Podívejme se společně, jak tiskárnu přivést zpět k životu. Možností je v podstatě několik. Tu nejjednodušší symbolizuje návštěva libovolného nejbližšího specializovaného obchodu. Zde získáte originální příslušenství, za které však vydáte z peněženky odpovídající sumu. Není proto divu, že některé společnosti začaly zákazníkům nabízet renovaci. Původní kazeta je v rámci tohoto procesu opětovně naplněna a lze ji znovu vložit do tiskárny. Renovace je však dostupná jen pro určité modely, které daná firma zařadí do svého portfolia služeb. Pro opravdové fajnšmekry je zde další způsob spočívající v dopravení inkoustu na vlastní zodpovědnost, například s pomocí injekční stříkačky přiložené ve speciálním kitu. Nízké tiskové náklady však vyžadují nemalou dávku odvahy, zkušeností, mechanické zručnosti a odpovídající model tiskárny, který popsaný úkon podporuje. Pomyslný střed mezi všemi nastíněnými metodami symbolizuje alternativní (kompatibilní) kazeta. Ta sice nepochází přímo od výrobce vaší tiskárny, jednoduše ji však zasunete a po pár vytištěných stránkách už ani vlastně nevnímáte, kdo že za daným zbožím stojí. Osobně jsem příznivcem právě této metody ke snížení nákladů tisku. Alternativní cartridge se totiž typicky prodávají buď za nižší cenu, nebo obsahují více náplně, než originální produkt.

Nyní už víme, že kompatibilní spotřební materiál přináší kýženou finanční úsporu. Jak však vhodný produkt zakoupit? Vždyť už samotné pořízení originální kazety symbolizuje s ohledem na hromadu typů tiskáren a náplní nelehký úkon. Jako příznivce IT samozřejmě popsaný úkol nechávám vyřešit internet, konkrétně obchod tisknulevne.cz. I když doména ve mně zpočátku vzbuzovala smíšené pocity (nemám dobré zkušenosti s eshopy, jejichž název obsahuje slovo levně), pochyby zahnalo téměř 11 tisíc pozitivních hodnocení na portálu Heureka. To už o něčem svědčí, ostatně v době kdy píšu tento článek, se obchod honosil pěti hvězdičkami z pěti možných téměř ve všech kategoriích, pouze u kritéria přehlednost obchodu ztrácel půl hvězdičky. Osobně si však nedokáži představit proč, když toto je právě funkce, kterou web vyniká. Portál totiž správnou náplň najde za vás, ať už s pomocí sofistikovaného vyhledávání nebo přehledných kategorií. Pokud například hledáte cartridge pro canon, přepnete se do této sekce a poté dohledáte vaši konkrétní tiskárnu. Zobrazení správných náplní je následně dílem okamžiku.

Zvolené zboží si můžete okamžitě objednat a nechat poslat poštou nebo vyzvednout v jedné z jedenácti kamenných poboček s bohatým zastoupením v Praze. Eshop se nebojí přijít s výhodnými akcemi, a proto skutečně dostává svému jménu a umožňuje tisknout levně. Ostatně, přesvědčte se – tisknulevne.cz.

Jak na anglické komiksy?

comiXologyPřed nedávnem jsem v ČR navštívil obchůdek, který znám ze seriálu The Big Bang Theory. Jde o prodejnu, kde koupíte vše od komiksů až po repliky ze známých filmů a seriálů. Tedy nic pro normálního člověka, ale pravé království pro osobu milující sci-fi a fantasy. Osobně se řadím někde na pomezí obou zmíněných skupin zákazníků. Neláká mě tedy představa zaručeně pravé kouzelnické hůlky z Harryho Pottera, na druhou stranu komiksům se nebráním. Již dlouho jsem přitom chtěl vyzkoušet příběh v originále, a proto jsem ze zmíněného obchodu odcházel s anglickým komiksem, o 50 % dražším než v USA (což ale chápu a níže vysvětlím, proč zboží tolik stojí). Komiks jsem přečetl a začal toužit po dalším díle. A v tu chvíli jsem si položil otázku. Jak vlastně u nás sehnat za rozumnou cenu komiks z USA?

Možností je v podstatě několik. Tu nejjednodušší představuje opětovná návštěva dotyčné prodejny nebo internetového obchodu s patřičným zbožím. V tomto případě ovšem očekávejte odpovídající ceny.

Druhou dobrodružnější volbu symbolizuje koupě přímo v USA. Dokáži si živě představit jak na to. Stačilo by nalézt zahraniční obchod a z něj si zboží nechat poslat. Problém by však činilo poštovné, pravděpodobně neúměrné výši objednávky. Nezbývalo by proto než poskládat velkou zásilku nebo využít služeb firmy Shipito, která by produkty uchovávala ve vaší virtuální schránce v USA a jakmile by byla plná, tak by za jedno poštovné byly všechny komiksy přeposlány k nám do ČR.

Ještě však existuje třetí, výrazně jednoduší a levnější možnost – elektronická verze. Pokud se nyní ošíváte, nedivím se vám, na poprvé jsem měl stejné pocity. Přece jenom čtení papírového komiksu nelze srovnávat s naskenovaným PDFkem. Zahraniční vydavatelé to však dobře vědí, a proto přišli s lepším řešením. Využívají technologii platformy comiXology, která přináší originální způsob čtení digitálního komiksu. Ten se podle Wikipedie dokonce může dočkat patentu.

Na webu comiXology.com si buď zakoupíte požadovaný komiks (ceny začínají na jednom dolaru) nebo sáhnete po bezplatné položce. Do tabletu nebo chytrého mobilního telefonu s Androidem nebo iOS si následně stáhnete speciální aplikaci. Ta komiks otevře a bude jej prezentovat po jednotlivých panelech a vaše oči se budou chovat stejně jako v případě papírové stránky. Doporučuji vyzkoušet, za bezplatný komiks nic nedáte a hned budete vědět, jestli vám toto řešení vyhovuje. Já jsem si comiXology oblíbil. Bohatá nabídka pokrývá různé žánry (od dětských až po ty dospělejší – např. pod hlavičkou Vertigo), ceny jsou nízké a aplikace pro čtení na vybraném zařízení skutečně funguje. Nevyžaduje navíc připojení k internetu, komiks se totiž celý stáhne a uloží.