Poslepu.cz na novém URL

Od ledna 2014 najdete blog na adrese poslepu.cz.

pondělí 17. května 2010

Jak se programuje poslepu. Díl první - teorie.

Na našem blogu se podrobně věnujeme situacím, s nimiž se musí zrakově postižený uživatel vypořádat při čtení webových stránek. Pravidelný čtenář tedy již má představu o tom, jak uživatel, potažmo odečítač, se stránkou nakládá. Představy však mohou končit v situacích, kdy se nevidomý člověk dostane do role samotného tvůrce a programátora stránek. Cílem následujících řádků je přiblížit vám i tuto oblast.

Práce s textem

Při vyuce práce s ozvučenými počítači klademe s kolegy velký důraz na to, aby si naši klienti příkazy pro práci s textem co nejvíce zažili a dosáhli ideálně jistého stupně automatizace. Jen tak se docílí toho, aby bylo možné soustředit se na obsah dokumentu namísto přemýšlení nad tím, jakou klávesovou zkratku vzhledem k pozici kurzoru je nejvhodnější použít. Pro práci se zdrojovými kódy jakéhokoli druhu to platí dvojnásob.

Každého jistě napadne otázka, jak se lze bez zrakové kontroly zorientovat ve změti nejrůznějších druhů závorek a klíčových slov ve zdrojovém kódu. Vnímání toku textu zrakem má výhodu v možnosti zasadit jej do okolního kontextu a vypomáhat si užitečnými barevnými zvýrazněními. V případě nevidomého je jistě vhodné mít dobrou míru abstrakce umožňující si kontext zapamatovat, což ostatně předpokládají i samotné programování a algoritmizace. Zbytek umu spočívá na znalosti funkcí odečítače a klávesových zkratek.

Odečítač při pohybu kurzoru v textu čte vždy jen ten úsek, který vzhledem k objektu pohybu má význam. Mějme text "Webová str_ánka je|validní.", při čemž znak _ vyznačuje pozici kurzoru a znak | rozdělení řádků. Následující tabulka ukazuje, jak kurzor reaguje na příkazy a jak odečítač tyto změny čte.

Klávesová zkratkaPříkazStav textuČtená změna
Šipka_vpravoDalší znakWebová strá_nka je|validní.n
CTRL+Šipka_vpravoDalší slovoWebová stránka _je|validní.je
CTRL+Šipka_vlevoPředchozí slovoWebová _stránka je|validní.stránka
HomeZačátek řádku_Webová stránka je|validní.W
Šipka_dolůDalší řádekWebová stránka je|_validní.validní.
Šipka_nahoruPředchozí řádek_Webová stránka je|validní.Webová stránka je

Za důležité zjištění lze považovat, že zrakově postižený uživatel používá kurzor nejen k tomu, aby jej přesunul na místo, kam chce vpisovat, nebo kde chce provádět změny, ale i pro jemnější čtení textu v situaci, kdy například pohyb po řádcích (tedy čtení po řádcích) zahlcuje uživatele velkým množstvím informací, které není schopen sluchem pojmout. Opět uvažme příklad, kdy pomocí šipky dolů dojde k vyslovení následujícího řádku zdrojového kódu:

$path=Environment::expand("%templatesDir%/{$this->name}/{$this->action}");

Při běžném nastavení interpunkce je řádek přečten jako:

"dolar path rovno Environment dvojtečka dvojtečka expand závorka uvozovky procent templatesDir procent lomeno složená závorka dolar this větší name složená zavřít lomeno složená závorka dolar this větší action složená zavřít uvozovky zavřít středník"

Ostřílený programátor celý řádek může jistě pojmout, ale běžný uživatel, programátor začátečník, si spíše vyslovený řádek nezapamatuje úplně celý. Pokud však opakovaným stiskem příkazu pro posun po slovech "projde" celým řádkem v tempu, které si řídí sám, je výstup odečítače přijatelnější.

dolar
path
rovno
Environment
dvojtečka dvojtečka
expand
závorka uvozovky procent
templatesDir
procent lomeno složená závorka dolar
this
pomlčka větší
name
složená zavřít lomeno složená závorka dolar
this
pomlčka větší
action
uvozovky složená zavřít zavřít středník"

Naznačené dělení slov platí pro editor PSPad, v jiných editorech se toto dělení může lišit. V podrobnosti čtení lze samozřejmě jít až na úroveň znaků, což se uplatňuje např. v případě, kdy je nutno počítat závorky při syntaktických chybách.

Orientace ve zdrojových kódech

Předchozí řádky ukázaly, že skrze odečítač lze i s komplikovanějšími texty, mezi něž patří i zdrojové kódy, pracovat. Další významnou pomůckou nevidomého, která dovede práci zejména na úrovni znaků velmi zpříjemnit, je braillský řádek. I když jej standardně limituje zobrazení nejvýše čtyřiceti znaků, odpadá potřeba více manipulovat s kurzorem pro přečtení požadovaného úseku textu. Tím, že uživatel má text tak říkajíc pod rukama, začíná se i přes uvedené omezení způsob práce blížit běžnému vnímání.

Znalost nejběžnějších příkazů pro pohyb v textu však není vším. Dalšími užitečnými technikami pro orientaci jsou odskok na číslo daného řádku pro opravu chyb a pak zejména vyhledávání. Vyhledávání je neocenitelnou pomocí ve chvíli, kdy uživatel je s obsahem souboru seznámen a tudíž ví, jaký konkrétní řetězec hledat. Tuto metodu však lze úspěšně použít i např. pro přeskakování po hlavičkách jednotlivých metod třídy. Zadáme-li do vyhledávání "public"a následně hledáme další a další výsledky, získáme poměrně velmi rychle přehled, jaké veřejné metody jsou ve třídě definovány, neboť odečítač je schopen poměrně snadno přečíst řádek s nalezeným výskytem. Podobných příkladů, jak lze svým způsobem netradičně zapojit funkci vyhledávání, existuje nepřeberné množství. Uveďme si pár příkladů:

  1. <body - Nalezne začátek elementu body ve zdrojovém kódu stránky.
  2. ->name - Nalezne použití vlastnosti name objektu, nikoli však použití lokální proměnné $name.
  3. >> - Najde všechny elementy, do kterých se nedopatřením dostal zdvojený znak pro uzavření tagu.

Formátování zdrojových kódů je další aspekt, který může přispět k lepší orientaci. Nicméně i pro nevidomého platí, že každý je zvyklý kód psát trochu jinak a neexistuje žádné doporučené řešení. Někdo kolem operátorů píše mezery, jiný ne, někdo složené závorky pro vyznačování bloků píše na samostatné řádky, někdo otevírací závorku na konec řádku, jež bloku předchází. Jde především o to najít způsob, jenž naprosto bude odpovídat požadavkům takového nevidomého programátora.

Autorem článku je Roman Kabelka. Druhý díl bude věnován Romanovým konkrétním zkušenostem s prací se zdrojovými kódy a programováním jako takovým.

1 komentář:

Anonymní řekl(a)...

Je to doslova "neuvěřitelné", takový člověk má můj neskonalý a upřímný obdiv.