Informatika lahko a rychlo. A zle. Autor popularizacnej knihy o vede musi mat prevahu nad citatelom. Nemal by ju ale zneuzivat. Ak sa niekto podujme napisat knihu popularizujuci nejaky vedny odbor, mal by si na zaciatku dobre rozmysliet rozsah latky, ktory chce citatelovi predostriet. Maly zaber dopredu odradi, pri prilis obsiahlej teme ostane priestor len na prezentovanie vysledkov a nie toho zaujimavejsieho: myslienok, napadov, omylov a ludi, ktori cestu k nim lemuju. Pri prezentacii nesmie autor zabudnut odlisovat co su fakty akceptovane sirokou odbornou verejnostou a co su jeho vlastne nazory, zvlast, ked su znacne kontroverzne. A nesmie ani zabudnut na stare dobre pravidlo, ktore kaze, ze vyklad ma byt taky jednoduchy ako je to len mozne. Ale ani o kusok jednoduchsi. Na podnet Johna Brockmana, majitela a manazera edicie Majstri vied, mal Daniel Hillis napisat "kratku knizku sumarizujucu myslienky, ako pracuju pocitace". Vacsina z nas by si pod takto vagnou objednavkou predstavila popis konstrukcie sucasnych pocitacov s vysvetlenim funkcie jednotlivych casti. To by vsak nezapadlo do cyklu knih "ktore podavaju suhrnnu informaciu o stave poznania ludstva na konci dvadsiateho storocia", skor by vznikla sprava o stave techniky a technologie. A tak vznikla kniha o (teoretickej) informatike. Skoda, ze sa jej autor nedrzal ani jednej zo zasad popularizatora vedy. Abstraktne pocitace a vypocty Hoci zaklady informatiky ako vedy, boli polozene pred viac nez pol storocim, este jej dlho trvalo, kym sa plne odclenila na jednej strane od matematiky a na druhej strane od vied inzinierskych. Ta prva jej poskytuje presny jazyk, formalizmus, tie druhe ponukaju inspiraciu, kontakt s realitou. Informatika si vsak kladie odlisne otazky. Zaujima sa nie len o to, ci riesenie nejakej ulohy existuje, ale hlavne studuje postup ako toto riesenie najst. Zaujima sa efektivitu tohto postupu i o sposob ako ho presne vyjadrit. Inak povedane, je o algoritmoch, o ich existencii, efektivnosti a o ich zapise. Studuje abstraktne vypocty a abstraktne pocitace, takzvane vypoctove modely. Tie sa mozu navzajom od seba znacne lisit, typom a mnozstvom instrukcii, dat a podobne. Niektore modely maju k pocitacu velmi blizko v inych by ste ho sotva spoznali. Hillis zacina svoju knihu konvencne - od piky, ci presnejsie, od bitu. Bit predstavuje v realnom (digitalnom) hardveri i niektorych abstraktnych pocitacoch zakladnu entitu, stavebny kamen. Bit moze predstavovat dva stavy: otvoreny - uzavrety, plny - prazdny, vystrceny - zasunuty, vodivy - nevodivy a pod. S bitmi sa daju robit rozne operacie, ktorych abstrakcie nazyvame boolovskymi funkciami (bit interpretujeme ako hodnoty Boolovej logiky, t.j. pravda - nepravda) a je pritom jedno, ci ich realizuju mechanicke, opticke, pneumaticke ci elektronicke obvody. Toto dlhe entree sluzi Hillisovi nie len ako spomienka na mladost, ked skonstruoval mechanicky pocitac, ale hlavne ako odrazisko pre mohutny skok vo vyklade, na konci ktoreho sa ohromeny citatel dozvie: a takto funguje pocitac, ba co viac, presne takto mysli mozog. Pre citatela je to vsak to iste ako keby dostal ucebnicu organickej chemie s tym, ze takto funguje mozog. To pravda je i nie je, co ostatne plati i o inych Hillisovych sudoch, s ktorymi potom tazko polemizovat. Napriklad pise "spravne naprogramovanie pocitaca moze viest az k tomu, ze pocitac bude mysliet ako mozog" ale presne neurci vyznam pojmov "spravne", "naprogramovanie", "pocitac", "moze viest" a "mysliet ako mozog". Vyklad pojmu "vypocet" Hillis zacina najjednoduchsim "vypoctovym" zariadenim - konecnym automatom, zariadenim, ktore na zaklade vstupov a svojho vnutorneho stavu (ich pocet je konecny), vyprodukuje nejaky vystup. Ak konecny automat vybavime nekonecnou pamatou, tak dostaneme "najvykonnejsi" vypoctovy model. Presnejsie, podla Church -- Turingovej tezy, ziaden vypoctovy model nevie vypocitat viac. Tato teza sa samozrejme neda dokazat (dala by sa jedine vyvratit) kedze nevieme formalne uchopit vlastnost "ziaden vypoctovy model", ale vychadzajuc z tejto tezy, moze informatika skumat, ktore problemy su vypoctovo riesitelne a ktore nie, pri tych prvych si moze klast subtilnejsie otazky, napriklad ktore problemy nie su prakticky riesitelne, t.j. ktorych vypocet je prilis dlhy - pocet krokov vypoctu zavisi exponencialne od velkosti zadania. (medzititulok) P = NP Hillisov vyklad problemu riesitelnosti sa tazko da nazvat bravurnym. Uvadza sice najznamejsi nevypocitatelny (vhodnejsie by bolo zavedenejsie oznacenie nerozhodnutelny) problem - problem zastavenia. Ten suvisi s autoreferenciou a z nej plynucich paradoxov - mozeme skonstruovat stroj, ktory sa zastavi vtedy ked povie, ze sa nezastavi, a teda neviem rozhodnut ci sa zastavi. Ked vsak Hillis pise, ze "vacsina matematickych funkcii je nevypocitatelna"(strana 84) je tu zrejmy terminologicky mismas. Mnozina vsetkych programov je sice nekonecna ale je mensia (co vie matematika presne vyjadrit) ako mnozina vsetkych matematickych funkcii, a teda musia existovat take, ku ktorym neexistuje prislusny program. Lenze v tomto pripade ide skor o to, ze vacsinu matematickych funkcii ani nevieme uchopit, popisat, kedze aj mnozina nasich moznych zapisov funkcii je mensia ako mnozina tychto funkcii. V pripade problemu zastavenia sme vsak nevedeli vypocitat funkciu (problem), ktory sme vedeli explicitne vyjadrit. Hillis sa zaobera i praktickou riesitelnostou, ale rovnicu NP = P, ktora vyjadruje najslavnejsi otvoreny problem sucasnej informatiky, rovnicu, ktorej slava je porovnatelna s Fermatovou vetou alebo Einstainovou E=m.c2, ani presnu formulaciu problemu, ktory vyjadruje, v knihe nenajdeme. Problem vyjadruje nasledovne: Predstavme si, ze mame pocitac, ktory riesenie ulohy nemusi hladat, dokaze ho "uhadnut", no svoj typ si musi overit (takyto pocitac volame nedeterministicky). Predpokladajme, ze overenie riesenia nejakej ulohy vie urobit v polynomialnom case (t.j. pocet krokov overovania je dany mocninou velkosti vstupu). Ak by platila rovnost P = NP tak by riesenie tej istej ulohy vedel v polynomialnom case vyriesit aj pocitac, ktory typovat riesenie nedokaze, ale ho musi pracne hladat (deterministicky pocitac). Hoci znie problem abstraktne, ak by platila rovnost, malo by to obrovske teoreticke i prakticke dosledky. Nie ze by Hillis "peenpe" problem uplne ignoroval, len akosi zapadol, lebo autorov problem je, ze chcel napisat o vsetkom -- o algoritmoch i heuristikach, sifrovani, kompresii dat, kvantovych pocitacoch, neuronovych sietach i paralelnych pocitacoch. Mimochodom, posledna zmienena tema patri k najlepsim zvladnutym - necudo, Hillis sa preslavil (a zbohatol) ako architekt paralelneho pocitaca Connection Machine. Okrem maleho priestoru pre jednotlive temy, vyklad znehodnocuje aj argumentacia vedena z nesurodych pozicii, raz z pozicie teoretika, inokedy praktika ci dokonca obchodnika: Z hladiska teoretika je pamat skutocneho pocitaca obmedzena konecnostou vesmiru a nie "penazenkou" (str. 105). Ked popisuje konstrukcny detail sucasnych pocitacov, rozdiel medzi procesormi s redukovanou alebo plnou instrukcnou sadou, dilemu uzatvara zahadnou poznamkou, ze tento spor ma pre programatora maly vyznam, "kedze kazda rozumna mnozina instrukcii moze simulovat kazdu inu" . To je z hladiska teoretika pravda ale tento rozdiel ma vyznam prave pre praktikov, ktori musia zmienenu simulaciu implementovat. No a argument o tom, ze zlozitost instrukcnej sady nema vplyv na "komercny uspech" pocitaca je uz uplne z ineho cesta (str. 70). Dobre utajene formalne metody Informatika nie je len o algoritmoch a vypocitatelnosti ale i o tom ako tieto algoritmy zapisat. Tato oblast informatiky by sa dala zastresit nazvom formalne metody. Sem patria programovacie, specifikacne a verifikacne jazyky a logicke nastroje, pomocou ktorych mozeme algoritmy zapisat a spravnost zapisu overit rigidnymi formalnymi metodami, ktore umoznuju dokazat (v matematickom zmysle slova), ze program robi to, co chceme a nie sme odkazany len na jeho overovanie testovanim. Tuto, pre rozvoj informacnych technologii klucovu cast informatiky, Hillis jednoducho ignoruje ci zatracuje: v suvislosti so specifikaciami systemov pozostavajucich z viacerych casti tvrdi ze "sa tazko pisu, lebo je nemozne predvidat vsetky mozne interakcie" (str. 155) -- tu slovo "nemozny" ma ocividne ideologicky a nie exaktny vyznam. Hillis totizto ponuka vlastny recept na pisanie spolahliveho softveru: programy sa musia vytvarat "evolucnym sposobom". Ako priklad uvadza mozne evolucne vytvorenie programu na triedenie cisel z nahodne vygenerovanej a nasledne mutovanej postupnosti instrukcii. Vysledny program bude spolahlivo triedit, hoci sa moze stat, ze nebudem z jeho zapisu rozumiet, ako to robi. Hillisova viera je mocna: v suvislosti s kritickymi aplikaciami, akou je napriklad autopilot lietadla, pise: "radsej by som sa odovzdal do ruk evolucne vyvinutemu programu ako programu, ktory napisala skupina programatorov"(str. 159). Kazdy ma pravo na nazor, hoci chyba vecny argument v prospech toho, ze sa takychto lietadiel mozeme dozit. Ale ak autor neupozorni citatela, ze existuje aj iny pristup k tvorbe spolahliveho softveru, dopusta sa na nom podvodu. Hillis si s gustom dobera "filozofov" a ich uvahy (neudava konkretne pramene). Iste, podobne nutkanie ma kazdy specialista ked pocuje o svojej oblasti mudrovat niekoho, koho znalosti su na urovni popularizacnej prirucky. Tieto vypady si ale mohol odpustit -- to ze existuju filozofi tretej kategorie vieme i bez neho. Tym skor, ze sam sa pusta na tenky lad jaloveho mudrovania: "pocitace mozu robit urcite operacie, ktore velmi pripominaju myslenie cloveka a ludia sa casto znepokojuju, ze pocitace ohrozia nase jedinecne postavenie rozumnych bytosti. Su aj taki, co hladaju utechu v matematickych dokazoch obmedzeni pocitacov." (str. 76) Alebo zas inde o umelej inteligencii: "verim, ze sa umela inteligencia bude dat vytvorit ovela skor, nez porozumieme prirodzenej inteligencii" lebo "umelu inteligenciu nebudeme konstruovat - namiesto toho pripravime vhodne podmienky, v ktorych sa inteligencia moze objavit" (str. 150). Aj pri menej bombastickych uvahach je Hillis vzletny styl na ukor presnosti. Napriklad ked pise o metode sifrovania pomocou pseudonahodnych cisel, tak podla neho je tato "(alebo cosi, co sa jej velmi podoba) zakladom vacsiny sifrovacich schem" (str. 115) - kto uz co to pocul o sifrovani by potreboval znacnu davku fantazie aby sa mu zdal takyto zaver prijatelnym, a laika viac popletie nez informuje. Ine formulacie svojou skratkovitostou posobia az iritujuco: ("niektore podprogramy su take uzitocne, ze su v pocitaci vzdy k dispozicii. Takato mnozina podprogramov sa na nazyva operacny system", str. 71). V slovenskom vydani sa okrem stylu mohli uviest na pravu mieru aj ine technicke informacie, kedze od napisania knizky uplynul uz nejaky cas - vyjadrene recou pocitacov, ten na ktorom ju pisal, bezal na frekvencii 33Mhz. I keby prekladatel spolu s odbornymi redaktormi odstranili chyby, prilisne zjednodusenia, nepresnosti ci neaktualnosti, stale by Hillisova knizka mala vazne nedostatky. Nabral si na svoje plecia viac nez sa da uniest. V sirokom zabere sa na malom priestore sa utopila krasa i vzrusujucno informatiky, splynulo podstatne s okrajovym, science s fiction, problemy citatelovi casto skor skryl nez odhalil. Co sa da robit. I majstri vedy sa mozu utnut. Damas Gruska, informatik Daniel Hillis, Obrazce v kameni, Kaligram, 2002, (The Pattern On the Stone) prelozil Jan Habdak, 174 stran, cena 220 Sk