"Ale vždyť snad nemůžeme říct, že cokoli bez příkazového režimu je mizerné." - je mi líto, ale mé celoživotní zkušenosti ukazují, že cokoli, co nemá příkazový režim, se dá považovat pouze za polotovar.
"Mě zajímá GUI (a UI obecně) ve smyslu rozhraní mezi programem a člověkem. Bohužel v této diskusi ne na to dívá hodně lidí v mnohem užším smyslu bez širších souvislostí (vidí jen to nabouchání textu do souboru)...sliboval jsem si od toho, že se tu rozvine i hlubší diskuse o uživatelském rozhraní obecně..." - tak to jsme na tom podobně, ale nyní už mne GUI zajímá spíše jako zajímavost, která ale efektivní používání výpočetní techniky spíše brzdí, i když zároveň toto použití značně zjednodušuje. S nejrůznějšími typy GUI jsem se setkal už od mých začátků na C64 v druhé půlce 80. let, kdy jsem si hrál s GEOSem. Ale po těch dvaceti letech dospívám k závěru, který jsem napsal výše. GUI vypadá přitažlivě, je snadné, neboť je založeno na několika skutečně směšně jednoduchých úkonech, tím pádem je velmi intuitivní. Ale to je právě ten problém, který způsobuje, že GUI má své hranice použitelnosti, které však mnohem starší textový přístup nemá: snaží se být tak jednoduché a intuitivní, že pro složitější operace s jejich komplexností se tato primitivnost (nikoli v hanlivém smyslu) stává stále větší překážkou, až nakonec použití GUI začne být zcela kontraproduktivní. GUI se pokouší o to, abyste měl vše před očima, jak jste tu napsal, aby vám co nejvíce ulehčilo práci, abyste se toho co nejméně musel učit nazpaměť, co nejvíce funkcí co nejlépe organisovaných do logické stromovité struktury. Jenže to je právě zároveň také to neodstranitelné omezení: obrazovka vašeho monitoru, ať je jakákoliv, nikdy nemůže obsáhnout tolik informací, kolik jich může obsáhnout vaše hlava, a jednoduchost a uniformita ovládání GUI nikdy nemůže konkurovat flexibilitě a různorodosti myšlenkových procesů lidského mozku, myš a tlačítka na obrazovce nikdy nemohou v efektivitě ovládání dosáhnout deset lidských prstů pohybujících se řekněme po 64 klávesách.
Nepopírám zásadní a klíčovou zásluhu GUI v masovém rozšíření výpočetní techniky a jejímu zpřístupnění nejširším vrstvám, které bylo umožněno tím, že GUI sejmulo z uživatele břemeno prvních znalostí a postupů, kterým se v dobách před GUI musel každý naučit. Není to nic jiného, než že vlastně část toho, co by jinak musel dělat mozek uživatele, dělá program GUI. To je jistě v počátečních fázích obrovské ulehčení pro uživatele. Jenže v určitém okamžiku je toto počáteční ulehčení tvrdě vykoupeno. To, co v počátcích obrovským způsobem zjednodušilo práci a nutnost učení vlastně zredukovalo na nulu, se nyní stává nepřekonatelnou překážkou. Samozřejmě že každý program má své limity, ale GUI pod tyto limity zbytečně staví limity nové. Je to asi jakobyste se pokusil zcela oprostit od klasického programování, od programovacího jazyka v klasickém smyslu, a nahradil ho jakýmisi obrázky propojenými různými čarami a podobně - musel byste jít ještě dál, než kam jde vizuální návrh programu, zkrátka tak daleko, abyste nutnost psaní nějakého kódu redukoval téměř (nebo úplně) na nulu. Takto by se každý naučil programovat hned, programování by se stalo skutečně intuitivní záležitostí, naklikat si prvních pár jednoduchých programů by bylo směšně jednoduché. Ale s rostoucími nároky na to, co vlastně všechno ten vámi tvořený program má umět, by tento způsob programování začal být stále více omezující a zpomalující. V každém případě - jak v tomto hypotetickém, tak v případě GUI vs textový přístup - existuje bod, v němž GUI práci neusnadňuje, ale komplikuje a zároveň ji i zneefektivňuje, a co víc, existuje bod, který pro GUI tvoří pevnou hranici, ten zmiňovaný nadbytečný limit.
Když například kreslím elektronické schéma - jako pro začátečníka je pro mne obrovské usnadnění mít po kraji obrazovky čudlíky s různými entitami schématu, je pro mne intuitivní natáhnout drát a propojit s tím něco jiného. Ale s rostoucí dobou praxe mě to začne omezovat, těch drátů tam musím namalovat hodně, z pohledu mého mozku mají samozřejmě všechny nějakou logickou strukturu a z pohledu počítače velká část, ale kdyby tam existovalo jen GUI, tak tu logickou strukturu můžu klidně zapomenout, protože ji těžko vysvětlím GUI, které je navržené pro jednoduché úkony, jelikož pro složitější úkony už ze své podstaty použitelné není. Je pro mne jednodušší a ušetří mi mnoho času, když mohu napsat cosi jako "c U1.A[0..15] U2.Q[1..16] U5.FIFOADDR[0..3] via bus A". Je to směšně snadné implementovat i pro programátora té aplikace na kreslení schémat, aby tomu ten program rozuměl a provedl co chci. Ale GUI mi zde staví zbytečné omezení, jelikož toto je jedna z tísíců věcí, která mě může napadnout a kterou je možné snadno poskládat pomocí příkazů a jmen objektů, tedy s použitím textového přístupu, ale mimořádně náročná, ne-li nemožná, na úrovni GUI. GUI za mne někdo vymyslel, aby mi usnadnil použití něčeho jiného, někdo přede mnou poskládal množinu možných operací, což samozřejmě platí i u textového přístupu, ale narozdíl od něj, on je poskládal tak, aby vyhovovaly primitivní logice GUI, která ani zdaleka nedosahuje úrovně i velmi jednoduchého formálního jazyka. Což je obrovský a hlavně zcela zbytečný handicap!
Historicky to můžeme dokladovat asi tak - člověk si zjednodušoval práci různými stroji, až měl stroje a přístroje velmi složité, se spoustou tlačítek a kontrolek. Ale odedávna snil o tom, že sestrojí stroj, kterému stačí jen poručit co má udělat a on to udělá. Když se ten stroj podařilo zkonstruovat, tak nakonec na tuto převratnou výhodu rezignuje a vybaví ho "nadstavbou", která tomuto stroji dodá virtuální páčky, čudlíky a kontrolky, které dokonce vypadají jako skutečné, i když ve skutečnosti neexistují a jejich existence je často zcela neopodstatnělá. A to prosím jen z toho důvodu, že by bylo nutné ostatní lidi naučit mluvit jazykem, jakým mluví ten stroj. Ten stroj však v praxi používá jazyků více, každý pro to, na co se hodí, takže by se mohlo zdát, že je to pěkný babylon na jednom stole, ovšem nutno dodat, že všechny ty jazyky mají jasnou logiku a jsou jednoduché. Jenže povaha věcí, k jejichž vykonávání byl tento stroj primárně sestrojen, je tak komplexní, že je není možné obsáhnout páčkami a čudlíky. Můžeme samozřejmě pro každou činnost najít množinu čudlíků a formulářů (chtěl jsem původně napsat lejster kvůli podobnosti s realitou). Ale bude to vždy méně flexibilní, než najít pro tento účel množinu objektů, jež mohu propojovat na způsob jazyka, byť by byl velmi primitivní.
GUI je jako byste nahradil komunikaci mezi dvěma lidmi komunikací ve stylu lejster, která si budete vyměňovat. Pro základní komunikaci je to intuitivní a jednoduché - pár piktogramů... dovedu si to představit například na recepci hotelu, nebo v restauraci. Dostanete formulář, zaškrtnete obrázky, odevzdáte a je to. Výhody tohoto přístupu našli už když vymysleli úřady a formuláře. Na problémy narazíte v okamžiku, kdy chcete vyřídit něco, co formulář už neobsahuje. Ano, musíte se kvůli tomu naučit komunikovat, ale výhoda je obrovská - jednak můžete vyřizovat i věci, na něž formuláře nejsou, nebo jsou, ale jsou příliš komplikované, jednak můžete - tedy bohužel toto platí jen u počítačů - "osobně", místo nutnosti vyplňování formulářů v kombinaci s ukazování prstem, říct "chci to a to". Na tomto hypotetickém GUI byste mohl založit i reálný hotel, jehož personál by nemusel s klienty prohodit mluveného slova. Ale čím více služeb a více možných problémů či přání zákazníků byste chtěl podchytit, tím více formulářů a stále více komplikovaných byste musel vymýšlet, tisknout a zpracovávat. Až narazíte na problémy, které by byly prostě neřešitelné tímto způsobem, nebo jejich řešení by bylo neúnosně nepřehledné a komplikované.
ZÁVĚR - GUI může být, ale co nejjednodušší a obsahující pouze základní funkce pro první seznámení. Těžištěm musí být jazykově orientovaná komunikace, která umožní totéž, co GUI, ale přímočařejší formou, a navíc ještě přidá tu mnohem větší nadmnožinu operací, které je nutno postupně zvládnout intelektem, pro něž je GUI nepraktické. Z tohoto pohledu se jeví cesta Microsoftu a věci jako Windows (a Vista zvláště) v naprostém rozporu s cestou efektivní (netvrdím prosím "pro počáteční seznámení se", ale pro praktickou práci) aplikace výpočetní techniky. Osobně jsem přesvědčen o tom, že během příštích deseti, patnácti let se postupně ukáže, že cesta stále namakanějších, nápaditějších a rafinovanějších GUI je slepá, že tato novější a novější GUI stejně nic nového kromě jiného vzhledu či ovládání nepřinášejí, jen vyžadují stále výkonnější a výkonnější hardware. Vývoj GUI byl v podstatě završen nedlouho po jeho představení. Vše ostatní se už vymyká filosofii jednoduchosti hraničící s primitivitou, jež stála u zrodu GUI, a nic užitečného nepřináší.
Počítač nemá lidský intelekt nahrazovat, ale doplňovat. GUI se pokouší o to první, jazykový přístup o to druhé.
Toť můj závěr po dvaceti letech používání obého.