Programovanie pomôže porozumieť svetu, hovorí slávny IT “geek”

Autor: Miroslav Nesrsta | 21.11.2019 o 17:34 | (upravené 22.11.2019 o 7:34) Karma článku: 0,00 | Prečítané:  251x

Z prednášky prof. Donalda E. Knutha: emeritný profesor, Stanford University, USA. Tiež prvý honorárny doktor Fakulty informatiky, Masarykova Univerzita Brno (od r. 1996).  

Prednáška sa konala na Masarykovej univerzite Brno 08. 10. 2019 s názvom “Programovanie počítača ako umenie – názory a odpovede ku akýmkoľvek súvisiacim otázkam a komentárom”.

Profesor Khnuth je americký informatik, matematik, spisovatel a pedagóg, nar. 1938. Doktorát z matematiky získal na California Institue of Technology v roce 1963. Je autorom diela The Art of Computer Programming / Umenie programovania, zakladateľom odboru matematickej analýzy algoritmov a autorom metódy „dokumentovaného programovania“.
V roku 1974 bola vtedy 38 ročnému profesorovi udelená Turingova cena, tiež známa pod prezývkou „nobelovka za informatiku“.

Z prezentácie vyberám len tie časti, ktoré sa priamo vzťahujú k problematike podľa názvu tohto článku.

Hovoriť počítaču, čo má robiť, je celkom unikátna činnosť. Naučí nás to oveľa viac, než si uvedomujeme. Programovať nezvládne každý, ale všetci by mali vedieť, ako algoritmy fungujú. To si myslí profesor Donald Knuth, jeden z najslávnejších počítačových nadšencov a držiteľ prestížnej „počítačovej nobelovky“.

Pri prezentácii nás rýchlo preniesol cez čas i priestor až na začiatok rokov päťdesiatych. Do sveta filozófie poznania, jednotiek a núl, biblických symbolov, presných definíc a umelej inteligencie.

Niekedy ste označovaný za otca analýzy algoritmov. Ako počítače za posledných 70 let menili ľudskú civilizáciu?
Čo je to civilizácia? Povedzme, že je to všetko, čo sa nevyskytovalo v prírode, ale čo pridali alebo vynašli ľudia. Len tu v miestnosti si môžeme všimnúť veľa rôzných výtvorov civilizácie. Svetiel, skla, i to, že sedíme a sme oblečení, budovy samotnej. Naša civilizácia je neuveriteľne zložitá; a bola zložitá už predtým, než sa objavili počítače.

Keď som bol vo vašom veku, boli počítače príšerne pomalé. A pokiať ide o úložíská … Dvadsať rokov som programoval s menej než megabytom pamäti. Dnes môžete mať vo vrecku terabajt. Veľa vecí bolo nepredstaviteľných – ani sme nevedei, že by sme ich mohli chcieť – a dnes fungujú a sú bežné. Počítače sú všade. Digitálne môžeme nasimulovať prakticky čokoľvek. Istotne, digitálneho jedla sa nenajeme, ale je ťažké nájsť nejakú oblasť našej civilizácie ktorú počítače nezmenili.
Pretože počítače sú všade, máme problém, ktorý sme pred 20 rokmi nemali. Dlhú dobu nás, počítačových vedcov, nikto nepočúval. Mám obavy, že teraz nás ľudia počúvajú až príliš a majú pocit, že vieme viac, než v skutočnosti vieme. Máme podľa nich vyriešiť celkom všetko.
Takmer každý odbor dnes využívá počítače. Dokonca aj hudobníci a básnici využívajú počítače. To dává nám, počítačovým odborníkom, príliš veľkú zodpovednosť.

Počítače vedia robiť veci rýchlejšie ako ľudia. Program sa dá používať opakovane. Líši sa éra počítačov od tých predchádzajúcich predovšetkým v škálovaní, v akom meradle môžeme pracovať? 
Nie, je to niečo viac. Ked tvoríme inštrukcie pre počítač, niečo mu vysvetlujeme. A aby sme to zvládli, musíme presne rozumieť, čo mu chceme vysvetliť. Keď budem niečo vysvetlovať vám, tak pokývnete hlavou a ja budem vedieť, že ste ma pochopili. Od počítača takúto spätnú väzbu nedostanete. Počítač neprikývne. Musíte mu to vysvetliť dokonalo.
Keď niekto vytvára software na navrhovanie budov, musí im rozumieť oveľa lepšie. Všetci, kto sa na tom podieľajú, sa naučia veľa nového. Každý, kdo robí počítačové programy, musí presne rozumieť tomu, ako veci fungujú.

A samozrejme, ak vývojár urobí chybu, tak ju počítače budú bez rozmýšľania neustále opakovať.
Presne o to ide. Našu civilizáciu vvtvárajú miliardy vecí. Všetko nemôžeme urobiť bez chyby. Ale ak si uvedomíte, čo všetko by sa mohlo pokaziť, tak si nepočíname až tak zle. Vďaka počítačom sme si trocha lepšie uvedomili dôležitosť kontextu a meradlo, v ktorom sa pohybujeme.

Počítače nás nútia rozumieť svetu

Boli si prví programátori a informatici vedomí toho, aký dopad budú počítače mať?
Na začiatku 60. rokov mi George Forsythe (zakladateľ fakulty informatiky na Stanfordu) povedal, že najdôležitejšie na programovaniu je, čo nás počítače učia, keď ich používame. Nie to, čo pre nás robia, ale čo nás učia.
Až potom som zistil, že to tak bolo od začiatku. Keď firma Remington v 50. letech postavila svoj prvý počítač UNIVAC, bol to v podstatě prvý počítač, ktorý nestál na vojenskom či vedeckom pracovišti. Prvý UNIVAC mal asi 4 zákazníkov. Pojisťovacie spoločnosti, americký Úrad pre spočítavanie ľudu a armádu. Ďalším bola společnost Nielsen. Neskoršie ich preslávil systém zisťovania televíznej sledovanosti. Ale v 50. rokoch mal Arthur Nielsen spoločnosť, ktorá sa pokúšala analyzovať rôzné aspekty prevádzky firmy. Nielsen mal predstavivosť a napadlo ho, hm, možno by som mohol využiť počítač.

Takže takový priekopník veľkých dát.
Áno. Potom ľudia od UNIVACu prišli a študovali Nielsenovu firmu, aby zistili, ako by im počítač mohol pomôcť. A vdaka tomu Nielsen zistil, ako by mohol viesť firmu efektívnejšie. I bez počítača. Stačilo, že bol donútený premýšľať, ako využiť počítač, aby lepšie pochopil, ako jeho spoločnosť funguje.

Počítače nás nútia vyjadrovať sa tak, aby nebol možný žiaden iný výklad.
Ano, úplne a jednoznačne. Videl jsem to už veľakráť. Počítače menia ľudí, ktorí ich používajú,

Väčšina ľudí programovaniu nerozumie. Ale takmer všetko je – tak či onak – závislé na počítačovom kóde. Nekoledujeme si o katastrofu? Akú cenu platíme za to, že ľudia naprosto nerozumejú informatike?
Nechcem tu naznačovať, že iné vedecké odbory nie sú dôležité. Myslím si naopak, že biológia ie oveľa dôležitejšia. Ale v každom prípade nemôžeme čakať, že by sto percent ľudí rozumelo počítačovej vede. Rôznorodosť je dobrá. Rôzni ľudia rozumejú rôznym aspektom sveta viac ako ostatní. Vedomosti a znalosti nemajú len jeden rozmer.
A veda sa teraz na školách učí viac než v minulosti. Ľudia sa ma pýtajú, ako majú učiť programovaniu. To je ťažké, pretože väčšina učiteťov sama neprogramuje. Ale aj keby o programovaniu viac vedeli, nebudú si s ním rozumieť. Možno tak jeden človek z päťdesiatich v programovaní nájde sám seba.

Len niekto skutočne pochopí, ako to funguje pod kapotou ...
Takým ľuďom sa to bude javiť prirodzené. Poďme tým ľuďom hovoriť počítačoví geekovia. Ja som sa asi ako takový geek narodil. Mojím cieľom nie je zmeniť celý svet na geekov. Snažím sa písať knihy, z ktorých sa môžu niečo naučiť práve geekovia.

Niekoľko zväzková kniha autora „The Art of Computer Programming“ vychádza postupne od roku 1968. Teraz má cez tri tisíce strán a Knuth na nej stále pracuje.

Píšte počítačový kód tak, aby ho mohli čítať ľudia

Veľa ste toho napísal o dokumentovanom programovaní (literate programming). Programátori by podťa vás mali písať kód nie len tak, aby fungoval, ale tiež zrozumiteľne pre ostatných ľudí.
A tiež to znamená, že sa v svojom kóde vyznáte, aj keď ho budete čítať po mesiaci. Nepremýšľajte o programovaní ako o pokynoch pre kompilátor. Predstavte si, že hovoríte s ľudskou bytosťou. Zlepší sa tým aj vaše porozumenie tomu, čo akurát programujete.
Ako profesor viem, aké to je hovoriť k triede plnej študentov. Takže keď programujem, predstavujem si, že ten program vysvetľujem celej triede. Preto do kódu pridávám i komentáre vysvetlujúce, prečo som niečo neurobil tak, ako ma to najprv napadlo. Snažím sa zahrnúť svoj myšlienkový proces.
Väčšina programátorov nedává do kódu komentáre, ktoré by vysvetlili zložitú časť kódu. To potom taký kód robí obtiažne čitateľný. Tento princíp sa netýka jen programovania. Obecne sa hodí, keď niečo vysvetľujete, povedať to formálne i neformálne.

Keď niečo ľuďom vysvetľujeme, tiež rozlíšujeme, na čom záleží, čo sa musí urobiť presne podľa našich inštrukcií a kde naopak nie je presný postup až tak podstatný.
Neformálne poviete „a teratz som došiel na koniec tabuľky“. Formálně byste to zistili podmienkou „KEĎ (i<n)“. Keď programujem, dávám tam vždy obidve vyjadrenia. Tie dve veci sa navzájom podporujú a doplňujú. Dokumentované programovanie kombinuje prirodzený a programovací jazyk.

O čo prichádza niekto, kto nikdy neprogramoval, kto neovláda žiaden programovací jazyk?
Taký človek si nevyskúšal, čo to znamená, keď musíte niečo povedať celkom presne a jednoznačne. V 60. rokoch bežal v USA seriál, v ktorom vystupovala robotická sekretárka. Pre niektorých ľudí bolo neuveriteľné, že počítač nerozumie kontextu a namiesto toho urobí presne to, čo mu poviete. Takto totiž ľudia nefungujú. Ta postava – mladá dáma – bola robot a ľudia okolo nej sa museli naučiť vyjadrovat precízne, nie len približne.

Čím sa programovanie odlišuje od akjekoľvek ľudskej činnosti?
Programovanie znamená, že musíte všetko rozdeliť do krokov a vysvetliť tak, aby to nebolo možné interpretovať ináč, ako chcete. Istotne, dá sa vymyslieť nějaký menej exaktný programovací jazyk … . Ale podstata programovania je jedinečná. Musíte byť dokonalo konkrétni, dokonalo jednoznační. To vás donúti premýšľať o tom, čo sa skutočne deje a čo by sa mohlo stať. Musíte zvážiť akýkoľvek scenár. Počítač nemá sám o sebe žiaden úsudok.

Bez toho, že si to uvedomujeme, algoritmy riadia takmer všetko okolo nás. Rozhodujú o tom, či dostaneme pôžičku, udeľujú pokuty za rýchlosť a parkovanie, vyhľadávajú dopravné spojenie. Čo by o algoritmoch mali vedieť celkom všetci, nielen programátori?
Viem, o čom sú algoritmy. Zasvetil som im veľkú časť svojho života. A tak ich viem využívať. Keď vidím akýkoľvek systém alebo rozhodovací proces, rozmýšľam, ako by mohol vyzerať algoritmus, ktorý za ním stojí. Ako funguje predikcia na mojej klávesnici? Môžem sa vďaka tomu viac dozvedieť o tom, ako to funguje, môžem si predstavovať, čo všetko by som musel počítaču vysvetliť, aby to fungovalo.
Pomocou algoritmov môžeme analyzovať hudbu. Ľudia vždy mohli analyzovať povedzme harmóniu akordov. Ale tým, že som musiel harmóniu exaktne a systematicky vysvetliť počítačovému algoritmu, mi umožnilo pochopiť hudobné zákonitosti lepšie ako predtým.

Čo by ste povedal niekomu, kto chce začať s programovaním?
Ak môžete začať s nejakým zábavným systémom, ktorý bude vykonávať jednoduché príkazy, tak to na začiatok nie je nikdy zlé. Naučí vás to doslovnosti. Ako dávať presné inštrukcie, až do tých najmenších detailov. Hovoriť presne, celkom presen, čo se má diať. To je programovanie.


Rozprávanie v tomto článku je v súlade s mojimi vlastnými skúsenosťami. Napríklad pre meditovanie nad zložitými textami zákonov mi pomáha snaha o ich algoritmizáciu.
Na začiatku pokusov o “hobby” programovanie (to “hobby” pre mňa znamená schopnosť dobrej orientácie v zdrojových kódoch veľkosti do cca 1000 riadkov).
Mne ako začiatočníkovi pomohol systém u ktorého sa zdrojový kód neprekladá ale priamo interpretuje, takým systémom je JavaScript a s tým som začínal. Navyše u tohto systému možno napr. pri hrách priamo vidieť výsledok na obrazovke prehliadača v počítači.
Potom som zvládol základy Java systému, (ktorý už prekladač používa) a to aj vďaka vynikajúcemu IDE (vývojové prostredie) BlueJ. Java sa vyučuje na školách na začiatku zoznamovania sa s programovaním, po zvládnutí Javy sa prechádza na jazyk C++, plnohodnotný systém pre programátorov. Pre tento vyšší stupeň C++ som už nemal dosť energie ani to nebolo ambíciou, stať sa programátorom na úrovni "profi".
Cez JavaScript som prešiel na plnohodnotný systém pre vytváranie dynamických webov s použitím systému PHP a dátabázového systému MySQL. Tu sa v plnom rozsahu potvrzdzujú slová profesora Knutha o dokumentovanom programovaní. Zatiaľ čo sa vtedy používali redakčné systémy Drupal a Joomla, neskoršie Wordpress, ja som našťastie natrafil na redakčný systém phpRS od p. Lukáša. Skvele napísané a vynikajúco okomentované zdrojové kódy mi max. pomohli pre zvládnutie základov jazyka PHP a súčasne tvorbu modifikácií webov pre vlastné potreby.

Pokrok v oblasti počítačov znamenal veliké prínosy. Prechod z osobného počítača so spotrebou 200W na notebook so spotrebou 30 W. Prechod z mobilu na smartfón, v ktorom si nosíte výkon a funkcie počítača so sebou.  Posledný rok som objavil čo sú to cloudové úložiská, ktoré o. i. umožňujú vystačiť  u počítača i len s 32 GB na disku, ostatné dáta sa uložia do cloudu. Tých 32 GB sa dá súčasne uložiť na USB kľúč a nie je potom problém počítač hocikedy preinštalovať. Dnes je možné mať notebook čiastočne v technológii  tabletu, kde mechanický harddisk s jeho možnými problémami a obmedzenou životnosťou neexistuje a je už elektronický,
Som vďačný osudu, že som sa dožil veku internetu, je to o. i. vynikajúci prostriedok na zháňanie materiálov pre samoštúdium.  


Tento článok súvisí s predchádzajúcim článkom na tomto blogu “Našu interpretáciu pojmu ”Hlava štátu” svet neakceptuje”.


Zdroje:

Text prednášky prof. Knutha na Masarykovej univerzite Brno
Wikipedia


 

Páčil sa Vám tento článok? Pridajte si blogera medzi obľúbených a my Vám pošleme email keď napíše ďalší článok
Pridaj k obľúbeným

Už ste čítali?