Za pevnost ledové kry

(proč operační systém Windows NT nesplnil očekávání)

Hlavním důvodem, proč byl tento text napsán, byla potřeba představit veřejnosti současný stav výpočetní techniky nikoliv z pohledu obchodníků s atraktivním zbožím osobních počítačů a domácích kutilů, ale z pohledu odborníků, kteří sledují celosvětový vývoj computer science a snaží se, i přes bohužel všeobecnou zanedbanost naší země, alespoň se na něm nějakou měrou podílet. Posledním impulzem k jeho sepsání pro mne byl článek pana Ladislava Myšáka v časopise Computer Design, viz [1], jak vyplývá i z názvu tohoto textu.
 

Počítače jsou matematické stroje. Vznikly z potřeby provádět vědecké výpočty, na jejichž provedení by člověk sám spotřeboval příliš mnoho času. Každopádně bylo toto provádění výpočtu od samého počátku až po dnešek kontrolováno člověkem. Tato kontrola je nazývána algoritmem, pomocí kterého člověk definuje řízení výpočtu strojem. Pro zápis algoritmů člověk postupně používal stále dokonalejší metody. Vznikly umělé, tzv. programovací jazyky. Pomocí nich lze modelovat svět kolem nás a v chování těchto modelů hledat jeho řešení. Každý matematik přitom ví, že proces takového modelování je nepřesný. Nelze totiž obecně definovat způsob modelování, který by jednoznačně stanovil správné řešení. Matematicky řečeno : algoritmus zapsaný programovacím jazykem není dokazatelný.

Výsledky tohoto jednoduchého principu jsou zdrcující. Počítače nejsou jednoznačné a přesné, protože člověk nedokáže přesně definovat algoritmus, který mají zpracovat. Současně je třeba si uvědomit, že počítače jako stroje rovněž vytvořil a definoval člověk, a proto je nelze nadřazovat myšlení lidí. Pochybnosti nad správnou definicí jak počítače samotného, tak jím zpracovávaného algoritmu mohou být hluboce depresivní. Ale tento základní rozpor člověka a jeho myšlení je kupodivu přirozený. Neustálému hledání optimální, když ne přesné cesty, pak říkáme vývoj. Co to však je přesnost? Je to kategorie, ve kterou moderní člověk věří, jako kdysi věřil v bohy? Pokora, se kterou musíme přistupovat k samotnému principu matematických strojů, jako počítačů, musí vycházet ze znalosti a uvědomění si těchto základních a přitom rozporuplných fenoménů.

Vědom si obtížného zpracování algoritmů počítačem, postupoval člověk jemu známými metodami, které by měly co nejvíce potlačit výskyt možných chyb v definovaných algoritmech. Mezi tyto metody patří např. metoda strukturovaného programování, metoda modulárního programování, metoda objektového programování.

Jejich výsledkem je vrstvená architektura počítačových systémů. Na tzv. holý stroj je napsána první vrstva softwaru, který usnadňuje specialistovi manipulaci se strojem. Prostřednictvím této první vrstvy je programována vrstva další, která organizuje výpočetní zdroje, jako je disková paměť, moduly vzájemné komunikace probíhajících procesů v počítači, přístup k výstupním nebo vstupním periferiím atd. Organizace výpočetních zdrojů je obalena vrstvou, která tuto organizaci zpřístupňuje, tj. umožňuje programátorovi snadněji kódovat algoritmus a uživateli spouštět programy, které používá. Efektivní využití stroje, organizace jeho výpočetních zdrojů a jejich poskytování programátorům a uživatelům je označováno jako operační systém.

Vrstvená architektura výpočetních celků tím však nekončí. Každý programátor používá knihovny funkcí, které jsou programovány jako podpora práce s typickými výpočty matematických funkcí, vstupně - výstupních operací atd. Vyšší vrstvou je také grafický podsystém počítače, který využívá operační systém a poskytuje programátorovi práci s grafickými objekty tak, aby je mohl organizovat do aplikací pro uživatele. A tak dále.

Lidé, kteří vytvářejí výpočetní systémy, o úskalí nedokazatelných algoritmů velmi dobře vědí a s tímto faktem také pracují, jak jsem ukázal výše. Oddělení jednotlivých vrstev umožňuje snadněji nacházet chyby, kterým se programátoři neubrání, protože způsob jejich myšlení (jako ostatně všech lidí) je metodami dnešní matematiky nedokazatelné.

Programovat takový vrstvený, poměrně spolehlivý výpočetní systém je nelehké a předpokládá vědomostní zázemí odpovídající vysokoškolskému vzdělání. A co víc je jedním z vědních oborů dneška, které je vrcholem lidského intelektu dnešní civilizace. Právem obor tohoto vědění nazýváme computer science, tj. počítačová věda

V průběhu let šedesátých dosáhl vývoj počítačů řady významných výsledků. Na konci tohoto desetiletí se používaly nejenom počítače střediskové, ale začínaly se vyrábět i minipočítače. Objevil se interaktivní přístup k počítači - přímá práce se strojem tak, jak je dnes běžně známá. Byl konstituován termín operační systém a řada jich byla implementována na počítačích různého výkonu a různých výrobců. V laboratořích se hledalo jednotné řešení způsobu propojování počítačů mezi sebou. Již tehdy by obyčejný člověk kvalifikoval rychlost vývoje počítačů jako neuvěřitelnou. Obyčejní lidé tehdy ale o počítačích mnoho nevěděli. Jejich životů se dotýkaly pouze skrytě. Vývoj patřil laboratořím, specialistům a vědcům. Pracovali stejně intenzivně jako dnes. Současně však už tehdy byla používána řada různých typů strojů a také řada různých operačních systémů.

Důležitost operačního systému jako nástroje komunikace uživatele se strojem se stávala zřejmou. Bylo třeba tuto komunikaci co nejvíce zefektivnit a ujednotit. Najít stejné řešení pro různé stroje. Byl to vývojový mezník, kterému se začalo říkat UNIX a jako produkt firmy AT&T nebyl zdaleka náhodným výsledkem. Nebyl to jediný kandidát na jednotný způsob přístupu programátorů a uživatelů k počítačům, ale vzhledem ke své jednoduchosti a průhledné struktuře se prosadil.
Od doby jeho vzniku v r. 1969 až po uvedení poměrně robustní verze do akademického prostředí a státní správy uběhlo ovšem 10 let. Už když byl na začátku 80. let uveden na trh a postupně jej začaly přijímat a implementovat všechny významné firmy (Hewlett Packard, IBM, Digital, Cray, ICL atd.), jeho odpůrci mu předpovídali brzký konec. Tento trend neustále prezentovat UNIX jako nevhodný operační systém trvá dodnes a určitě přežije rok 2000.

Ale teprve při bližším seznámení s architekturou UNIXu pochopíme, proč tomu tak je. UNIX je vskutku navržen geniálně jednoduše. Principy, na kterých je postaven, jsou až zarážejícím způsobem prosté, průhledné, a přitom zcela odpovídají potřebám organizace stroje pro potřeby programátorů. Promítá se v něm duch lidské invence jako v málokterém produktu lidské činnosti.

Toto novátorství, jednoduchost a inteligence jsou ovšem dostupné jen těm, kteří mají odpovídající schopnost intelekt používat. Pokud ji nemají, nepochopí, proč něco pro ně tak složitého a nepochopitelného, přestože funkčního dosáhlo takové obliby. Ne náhodou se UNIX stal favoritem akademického prostředí. I dnes jej vždy nově objevují studenti prvních semestrů vysokých škol nebo středoškoláci ve variantě pro osobní počítače (Linux). Zděšení představitelů i zastánců starých pořádků je na místě. Jejich myšlení velmi nerado přijímá nové myšlenky a úpěnlivě se brání novému pojetí. Odpor vůči UNIXu přicházel z této strany. Dnes pramení také z jeho neznalosti, jak uvidíme v dalším textu.

Jak vidíme, UNIX vznikl dávno před vznikem prvního osobního počítače. Vždy byl operačním systémem počítačů středního výkonu a počítačů střediskových, v dnešní terminologii serverů. Byl to UNIX, který obalil svět pavučinou Internetu, a to ze zcela jasných důvodů. Od svého prvopočátku byl jednotný v užívání a provozovatelný na různých platformách hardwaru. Po využití přenosových síťových protokolů TCP/IP se stal hlavním operačním systémem síťové komunikace. V polovině 80. let se stal provozně zcela spolehlivý.

Na začátku 90. let se stal základem k vytvoření normy ISO pro definici obecného chování operačních systémů směrem k uživateli. UNIX je jednotný z pohledu programování uživatelských aplikací, protože podpora operačního systému pro práci se soubory, procesy, komunikaci mezi procesy, přístupová kritéria ochrany dat atd. jsou definovány v závazných normách ISO. (Pod čarou: Standard je registrovaná přijatá norma. Standardem není produkt, který jako standard označí na trhu jeho výrobce. Standard je obecně přijatý závazný dokument, který splňuje kritéria obecných požadavků a vykazuje prvky vývoje, je perspektivní v používání do budoucna.)

Zájem veřejnosti o výpočetní techniku se probudil vznikem prvních mikroprocesorů, na jejichž bázi postupně vznikaly nejenom specializované výpočetní minisystémy v průmyslových výrobcích (automobil, pračka, mixér, ale i obráběcí stroj, zemědělský stroj atd.), ale také tzv. domácí počítače, jejichž následníky se velmi rychle staly osobní počítače (Personal Computers, PC). Jejich účel nebyl výrobcem (IBM) nijak jasně vymezen. Předpokládal se odbyt pro domácí kutily, kteří jej budou ovládat jednoduchým programovacím jazykem Basic k programování a provozování her. Také proto jej ponechala firma IBM bez operačního systému. Jako základní nástroj pro komunikaci se strojem byl tehdy naprogramován monitor stroje, program DOS, jehož způsob komunikace vycházel z ovladače domácích počítačů CP/M (Control Program/Monitor). Jako zakázku jej tehdy dostal synovec přítelkyně některých vedoucích osobností IBM, jistý William Gates.

Gates se časem projevil jako velmi mrštný obchodník. Využil svého nenápadného postavení a stal se nezávislým dodavatelem DOSu pro IBM. To bylo tehdy běžně zcela nemyslitelné, ale IBM nepřikládalo DOSu a PC zvlášť velkou důležitost.

Vlna zájmu světové veřejnosti o PC tak přinesla nezávislé firmě Microsoft velké zisky. Domácí kutilové a neodborníci byli fascinováni možnostmi osobních počítačů a začali programovat software pro své potřeby. Vzniklo velké množství individuálních operačních systémů. Vlastně každý trochu složitější program musel sám organizovat výpočetní zdroje, protože neměl k dispozici operační systém. Každý amatérský pokus o sestavení operačního systému však zklamal. Problém je totiž složitější, než se na první pohled zdá. Osobní počítač byla velmi úspěšná hračka a zůstala jí dodnes. V případě vážného zájmu totiž firmy a jednotlivci nepoužívali osobní počítače. Používali pracovní stanice (Workstations) pro místní práci nebo počítačové sítě pro distribuované informační systémy na bázi středně silných serverů a terminálů. Výběr byl a je stále velký, od jednoduchých stanic Macintosh přes stanice HP, IBM, SGI, Sun, atd. až po výkonné grafické systémy, jako je dnes např. panem Myšákem zmiňovaný ONYX2.

Osobní počítače vývojové trendy výpočetní techniky sice sledují a vždy se zpožděním několika let i využívají, ale ve formě dostačující nikoliv pro profesionální práci, ale pro domácí kutilství a hru. Směr vývoje však rozhodně neurčují, přestože známé technologie vždy prezentují jako své produkty. Masová výroba osobních počítačů křivě zobrazuje stav výpočetní techniky. Každý obyčejný člověk má představu, že jiné než osobní počítače neexistují. Existují, a pracují pro potřeby lidí stejně skrytě jako doposud. Příkladem je např. již zmiňovaný Internet.

Produkce firmy Microsoft byla vždy produkcí nadšených amatérů. Atraktivní zboží, jako jsou osobní počítače, jsou dnes doslova nuceny nešťastným uživatelům, kteří ani dobře nevědí, k čemu by je mohli potřebovat. Po roce používání musí každý, kdo podlehl, uznat, že mu osobní počítač nepřinesl žádnou úsporu času, ale naopak. Používá jej ke hraní her, psaní dopisů a jako diář. Nyní si však musí koupit počítač nový, protože ten koupený před rokem už nestačí ani na novou verzi her, ani na program na psaní dopisů a diář. Proč? To uživatel neví, prostě je to tak, říká to každý obchodník.

Naproti tomu je však také velké množství lidí, kteří se pokoušejí používat PC jako pracovní nástroj. Ale ke své práci potřebují specializovaný software, který musí být spolehlivý. Firma Microsoft se proto rozhodla, že také nabídne promyšlený operační systém pro platformu Intel. Měla tak být překročena hranice mezi amatérským světem PC a profesionálními pracovními stanicemi. Z PC se měl stát plnohodnotný nástroj ekvivalentní pracovní stanici. Myšlenka je to důstojná vývoji a každého odborníka potěšila. Potěšila ho i další fakta, která se při prezentaci nového operačního systému pro platformu Intel objevila. Operační systém MS Windows NT měl být implementován zkušeným týmem odborníků, které Microsoft zaplatí. Technologie by využila všech současných standardů z oblasti výpočetní techniky a zabudovala je jako součást rozhraní. Windows NT tedy měly být otevřeným operačním systémem koncových pracovních stanic s podporou různých trendů, které v dané době stav computer science nabízel. Mělo se jednat o grafické rozhraní uživatele s chráněným vstupem k výpočetním zdrojům a vstupem do sítí různých typů.

Vůdčí osobností vývojového týmu se měl stát David Cutler, člověk, který se významně podílel na vývoji operačních systémů firmy Digital (RSX, VMS, ale nikoliv jejich klonu UNIXu). Prvotní vývoj nasvědčoval, že vše je na dobré cestě. Členem vývojového týmu byla také Helen Custerová, která principy vznikajícího operačního systému dokumentovala, a výsledkem její práce byla publikace, která byla prezentována s první verzí operačního systému, viz [2]. Obsah knihy není nijak překvapivý. V koncepci Windows NT nenajdeme žádné převratné a nové myšlenky ani invenci podobnou duchu UNIXu, přesto se však nový operační systém jednoznačně odlišuje od předchozích produktů firmy Microsoft: odpovídá vývojovým tendencím a není produktem amatérů.

Není lehké určit, proč se promyšlená koncepce Windows NT jako operačního systému PC změnila v podivuhodnou změť různorodých směrů vývoje software firmy Microsoft a proč byla v průběhu několika let vývoje tolik poznamenána zásahy naprostých diletantů. Každopádně už prezentace prvotních neúspěchů jeho implementace jako výsledku promyšleného vývoje jsou zarážející. V době prvních instalací se totiž zjistilo, že výkon tehdy běžně používaných PC novému operačnímu systému nemůže stačit. Přistoupilo se proto údajně dočasně k řešení síťové koncepce silnějšího PC jako serveru s plnohodnotnou verzí Windows NT a běžná, výkonnostně slabší PC pak tento server využívala a chovala se jako grafické terminály.

Vedení Microsoftu toto řešení označilo za úspěch a ohlásilo tento projekt jako pilotní pro verzi Windows NT jako síťového serveru. Dovedu si představit zděšení programátorů z Cutlerova týmu. Operační systém koncové pracovní stanice, který je takto koncipován, přece nemůže sloužit jako síťový operační systém. Argument však jistě zněl: podařilo-li se to UNIXu, proč ne Windows NT. Skutečnost je však jiná. UNIX byl implementován pro potřeby pracovních stanic, teprve když uspěl na serverech, nehledě na to, že byl vždy koncipován obecně.

Megalomanie firmy Microsoft posílená obchodním úspěchem dalšího a dalšího prodeje softwaru pro domácí použití neznala mezí. Po obchodním neúspěchu implementace Windows NT také na jiné platformy hardwaru pracovních stanic a po neúspěšném pokusu ovládnout Internet (nevědomost amatérů je někdy až komická, čím jej vlastně chtěli ovládnout? Internet by se při nasazení jejich softwaru zhroutil jako domeček z karet) se firma rozhodla zahájit "válku operačních systémů". Nikdo o ni však nestojí, a vlastně se jí účastní pouze firma sama. Současný svět nestojí o konflikty, a války už vůbec ne, zvláště pak ne tam, kde je využíváno výsledků duševní práce.

Opravdu osvícený obchodník nebo manažer produktivní firmy dnes ví, že nemůže touhou po co nejvyšším zisku udusit to, co produkci vytváří, totiž lidské myšlení. V tomto smyslu je firma Microsoft pilou, která řeže větev, na které sedí operační systém Windows NT, je-li ovšem jeho účel opravdu takový, jak je postulován. Windows NT se stalo zaklínadlem všech problémů, které v computer science existují, respektive těch problémů, které se předkládají veřejnosti, protože Microsoft nezajímá vývoj computer science, ale pouze zisk z manipulace veřejným míněním.

Tak jsme dnes svědky nasazování varianty Windows NT jako serveru malých sítí nebo serveru pro internetové aplikace za podpory podivuhodných databází, které jsou směsí prezentovaných výsledků computer science (SQL) a amatérských pokusů z poloviny 80. let. Výsledkem je provozně nespolehlivý moloch, u něhož nikdo (ani specialisté od firmy Microsoft) nedokáže říct, proč je tak náročný na výpočetní zdroje a z čeho vyplývají jeho chyby. Obvykle po několika měsících provozu je pak nutné server nově instalovat, protože celý provoz uvázne v neznámé a jinak neopravitelné kolizi. Pokud by takto pracovaly provozní systémy pro řízení průmyslových provozů, hrozil by kolaps v odvětvích lidské činnosti, které ani nedokáže obyčejný člověk odhadnout.

Ruku v ruce s rostoucími nároky na hardware je také produkce firmy Intel, která pro odbyt svých produktů potřebuje neustálý zájem veřejnosti. Ten uměle vzniká vyššími a vyššími nároky operačních systémů Windows NT a Windows 95 nebo Windows 98. Na aplikace jednoduché databáze, psaní textů nebo hraní her není zdaleka třeba tak výkonných strojů, jak prezentuje Microsoft. Místnímu uživateli totiž stačí poměrně malý výkon, který může být posilován síťovými servery podle potřeb, ale tato podpora rozhodně neplatí pro lehké aplikace jako psaní textů nebo prohlížení Internetu. Nevědomé amatérské psaní aplikací, které enormě zatěžují výpočetní zdroje, tak bylo historicky využito pro účely dobře kvetoucího obchodu.

Vliv používání mikroprocesorů a osobních počítačů nebo pracovních stanic nelze ovšem přehlížet a už vůbec ne pominout. V průběhu posledního desetiletí dochází jednoznačně k distribuci výpočetního výkonu. Střediskové počítače, jejichž výkon pokrýval firmu nebo celou lokalitu, byly postupně vystřídány několika servery středního výkonu, z nichž každý je specializován na určitou oblast zájmu. Např. oddělení konstrukce výrobního podniku vyžaduje server pro archivaci již uskutečněných projektů nebo podporu výkonu jednotlivých grafických stanic, zatímco administrativa téhož podniku vyžaduje dobře fungující informační systém pro vedení účetnictví, skladové hospodářství atd., samotný provoz podniku pak řízení výroby a podporu výrobních technologií automatizovaných výrobních linek. Všechny části podniku pak obvykle vytváří jeden celek jako síť, která má přístup k Internetu a je tak připojena na další informační databáze, nehledě na to, že sama může prostřednictvím Internetu poskytovat informace o své produkci a uspokojovat své zákazníků či dokonce provádět finanční operace.

Takto rozsáhlá výpočetní síť není nic neobvyklého a je běžně stavěna a provozována. V takovém nasazení vystupuje do popředí řada problémů síťového charakteru, které se musí řešit. Je třeba lokalizovat centra výpočetního výkonu nebo centra poskytování diskového prostoru, počítat objem toku dat mezi jednotlivými koncovými uživateli a servery. Současné trendy vývoje podpory takového nasazení výpočetní techniky disponují termíny jako architektura klient - server nebo síťový operační systém.

Architektura klient - server vychází z myšlenky prezentace dat zpracovaných serverem, např. grafický displej může v okně zobrazovat postupně probíhající výpočty na výkonném serveru. Klientem je také program prohlížení Internetu, který využívá silné výpočetní a databázové síly vzdáleného uzlu sítě k zobrazení pouze malé části serverem poskytovaných informací. Nemusíte mít knihovnu lidstva doma, když si můžete knihu vypůjčit tehdy, kdy ji potřebujete. Rovněž tak si můžete přehrát film, který si vyberete na silném serveru v Internetu a promítnete jednoduchým klientem.

Pro podporu provozu středně silných sítí nebo i regionálních sítí je však obtížné používat heterogenní celky, tj. používat servery různých operačních systémů. Vývoj operačních systémů je proto dnes soustředěn především na řešení sítí. V laboratořích (a nejenom tam) se implementují operační systémy, které uvažují hardware sítě jako celek - tzv. síťové operační systémy. A to proto, že tam je soustředěn hlavní zájem provozovatelů výpočetní techniky, tedy nikoliv pouze na hraní her a psaní dopisů.

Pro účely práce v architekturách pracujících metodou klient - server byl vyvinut objektově orientovaný programovací jazyk Java. Pomocí něj je pak možné poměrně snadno programovat síťové aplikace jako distribuované aplikace dotazujících se klientů uživatelů, sedících u poměrně nepříliš náročných grafických displejů. Samotné využívané aplikace pracují jako servery ve vzdálených uzlech (ve vedlejší místnosti nebo 100 km daleko), které jsou robustní a udržované správci výpočetní techniky. Minimalizuje se tak havárie, která způsobí ztrátu dat nebo opomenutí zálohy dat atd. Současně je přístup autorizován, tj. přístup ke svým datům má pouze jednoznačně identifikovaný jednotlivec.

Tento trend vývoje se ovšem vůbec nehodí firmě Microsoft. Co se stane, až lidé budou používat pro hraní her, vstup do Internetu nebo psaní textů elektroniku běžné domácnosti, např. nové typy televizorů, jejichž displej je hygienický, prostorný a v pevných pamětech má k dispozici několik běžných klientů? Domácí kutilství v oblasti počítačů zanikne a firma Microsoft také, pokud nezačne vyrábět třeba prací prášky nebo populární hudbu. Její "válka operačních systémů" má tedy ryze obranný charakter. Nikdo však na ni neútočí.

Nezbývá mi než upozornit na fakt, že UNIX byl epochální změnou, zatímco Windows NT jsou pouhou epizodou, a věřím, že to z obsahu tohoto textu vyplývá. Mám-li se tedy vrátit k článku pana Myšáka, pokud by byla pravda, že UNIX pluje na utržené ledové kře, která míří do teplých vod firmy Microsoft, jsem pro pevnost této kry jako pro podporu obecného vývoje v computer science. Koneckonců nikdo z nás si tání ledovců nepřeje, každý ví, že jsou počátkem hrozící ekologické katastrofy.
 

Tento článek byl předložen specialistovi k odbornému posouzení. Jeho připomínky, které jsem považoval za opodstatněné, jsem poté do textu zapracoval. Jeho připomínky, které jsem za opodstatněné nepovažoval, jsem nepoužil, ale zdůvodnil jsem mu proč tomu tak je. Poté text prošel jazykovou korekturou. Toto je běžný postup při psaní jakéhokoliv textu, který se uchází o zveřejnění. Proč? Zvyšuje to sdělnost textu. Posiluje to jeho obsah. Dosahuje se vyšší obecné úrovně. Čtenář se opět stává čtenářem, přestává být dekodérem. Vývoj směřuje kupředu. Proto tento způsob doporučuji i vydavatelům periodik či publikací z oblasti osobních počítačů v naší zemi. Po deseti letech svobodného projevu jej používají pohříchu málo.

Luděk Skočovský,
je nezávislý specialista oboru operačních systémů
www.skocovsky.cz

Literatura:
[1] L. Myšák: Unix plující na ledové kře. Brno, Computer Design, prosinec 1998,
[2] Helen Custer: Inside Windows NT. Microsoft Press 1993, ISBN 1-55615-481-X,
[3] L. Skočovský: UNIX, POSIX, PLAN 9. Brno 1998/99, vydal autor, ISBN 80-902612-0-5, www.skocovsky.cz,
[5] Windows NT Workstation - Resource Kit, Microsoft Press 1996,
[6] Informační zdroje sítě Internet.