Jak najdete telefonní číslo mého oblíbence Vaška Šedého ? Konveční postup spočívá v nahlédnutí do pražského telefonního seznamu, který je uspořádán podle jmen a hledání v oddíle "Š". Každý algoritmus má totiž omezené množství téměř optimálních variant a pak nepřeberné množství - neepředstavitelně neefektivních variant. Takže extrémní možností z neefektivní strany je začít vytáčet linky od čísla 000 000 000 do 999 999 999. Statisticky vzato v polovině této miliardy se vám Mr. Šedý v telefónu ozve, pokud náhodou nebojuje se svýmí bludnými nepřáteli z policejního sboru.
Myslíte si, že si dělám legraci - umění počítačového programování však upadá : Běžný postup jak třídit čísla od 0 do miliónu je dnes ten, že deklarujete pole miliónu položek a do každé položky si poznamenáte, jestli taková cifra ve vstupním seznamu existuje, nebo ne. Na co Quicksort, který potřebuje jen tolik paměti, kolik je dat, uvedený "paskvil-sort" je formálně ještě rychlejší ( pokud nepočítáme spotřebu paměti a práci operačního systému při její alokaci / dealokaci ). Schválně si při surfování po Internetu někdy dejte do lišty uklazatel volné paměti - budete se divit : "blogísek" puberťačky s dvěma odstavečky textu a jedním obrázkem 100 megaBajtů - blogísek se 2 obrázky - 300 megaBajtů.
Takže my tlustí fotři, co jsme ještě zažili programování "opravdového softwaru" v assembleru vždycky vzdycháme : "Kdyby tak dnešní hardware někdo naprogramoval stylem hry na ZX spectru !!" Vysvětlení mládeži - ZX spectrum byl domácí počítač s 8 bitovým procesorem Z80 a 48 KILO(!!)BAJTY RAM, který udělal, když dobře 700 000 8bitových instrukcí za sekundu, zatímco dnešní PC, když dobře, udělá 50 000x tolik 32 nebo 64bitových instrukcí za sekundu ( aby zobrazilo půl-stránkový blogísek se 2 růžovými obrázky ).
Víte tedy co by se stalo, kdyby nějaký tlustý fotr se znovu vrátil k assembleru na PC ? Byla by to "exploze počítačového výkonu" ? Nebyla !! Dnešní kód je tak hrozivě neefektivní, že udržet software v chodu vyžaduje všechna člověku známá "magická arkána" která počítačová věda zná. Exotické procesorové architektury s paralelním vykonáváním instrukcí mimo původní pořadí. Kompilátory produkující zcela nepochopitelný kód přizpůsobený tomuto hardwaru atd. Sám jsem to několikrát zkoušel když jsem viděl jaký kód produkuje GCC protože to není kód, ale "bordel" tak jsem si říkal "naprogramuju řádný kód jak se to má dělat" - a výsledek ? Po vyčerpávající práci byl můj "řádný" kód o "vlásek" pomalejší než "bordel" z GCC.
Takže v oblasti softwaru nám už technologická singularita pomalu probíhá. Počítače programují jiné počítače. To čemu frikulíni říkají "program v Pythonu", o kterém si myslí, že na počítači běží, je jen velmi hrubý, vzdálený a obrysový náčrt toho, co je ve skutečnosti prováděno. A jak s hardwarem ? Myslíte si, že je na světě člověk schopný navrhnout exotický "bordel" současných procesorových architektur ? Před pár lety tu byla ohromně zajímavá, ale neúspěšná procesorová architektura : AMD Bulldozer. Zaostávání AMD za Intelem se vysvětlovalo tím, že AMD "kompiluje" křemíková hradla strojově až na úroveň jednotlivých tranzistorů zatímco ( tehdy ) vítězný Intel "kompiluje" své procesory "jen" do úrovně modulů ručně optimalizovaných jeho inženýry. Od té doby AMD zapracovalo na "kompilátoru" a dnes má na trhu architekturu AMD Ryzen, která "plně strojovou kompilací" hardwaru dosahuje stejných výsleků jako Intel se svými inženýry ( nebo je už taky vyhodil ? )
Kam dnešní pohádka směřuje ? Sám jsem do nedávna byl alarmista, který volal "počítače narazí na fyzikální limity křemíku" a to bude "konec světa jak jej známe !!" Jenomže mezitím se objevily exotické multithreadové multijádrové architektury konvenčních procesorů, CUDA, jednočipové superpočítače, podivné programovací jazyky "velmi vysoké úrovně". Je na čase si položit opačnou otázku : "co se stane s civilizací až se počítačový výkon stane nepodstatným technickým detailem" ?
Představte si tu variantu, že třeba konstruktéři robotických aut konečně přijdou na to, že stereovize je robustnější než laserové dálkoměry. Dnes je tato cesta velmi komplikovaná výpočetním výkonem, který analýza obrazu ze stereoskopické kamery vyžaduje. Představte si že ode dneška za 5 roků řeknou programátoři "staniž se" - a po celonoční kompilaci exotického kódu pro exotické PC budete mít funkční stereoskopický řídící modul, který bude udržovat "přehled o situaci" kolem vozu na úrovni těch nejbdělejších chvilek těch nejlepších šoférů. Nebo vymyslíte nějakou kapitální kravinu, kterou naprogramujete mimořádně prasácky, ale ona těmto faktům navzdory - hladce poběží na tehdejším ( dnešním ) PC. Co to bude znamenat pro "společenský význam počítačů" ?
Sám jsem zažil tu situaci, že v okamžiku, kdy jsem zjistil, že dnešní PC architektura je "neuhonitelná" běžnými úlohami - přestalo mě programování PC bavit. Je-li možné všechno - má vůbec smysl se o to pokoušet ? Nestane se z počítačové části technického problému "infrastruktura" ? Asi jako když považujeme za samozřejmé, že ve všech budovách jsou svítící světla a funkční elektrické zásuvky. Tomu taky odpovídá, že dnešní elektrikáři se z "elektro-vizionářů" typu Edisona a Westinghouse změnili na borce v motérkách, kteří sotva rozumí tomu, co dělají !! ( Myslím třeba "ústavní elektikáře" ve špitále - ne ty 2 čety "lucidních" z našich atomových elektráren ! ) Jsou naše technologie připraveny na to, že díky výkonnosti hardwaru jsme v situaci že "software se nakonec vždy nějak zplichtí ?" Není to tak, že neefektivitou "zplichtěného softwaru" přicházíme o část funkčnosti a účinnosti současných technologií, ba dokonce jsme sami sebe zahnali do slepé uličky ?
Výkonovou převahou současného PC hardwaru poučen vidím celkem 4 ( špatné ) varianty budoucího vývoje :
- Počítače se stanou natolik "bezešvou" součástí naší reality, že nutnost jejich použití začne brzdit nové technologie, protože i mezi techniky převládne mentalita "nějak to funguje, asi jsou uvnitř trpajzlíci, nebudeme do toho rýpat".
- Uvázneme v oblasti kdy "dobří programátoři" už nebudou, ale "špatní programátoři" nebudou schopní dodat počítačům poslední 1% ke vzniku sebe-programující umělé inteligence, která by nebyla na kvalitě programátorů závislá.
- Sebe-programující umělá intelgence vznikne, ale bude lidskému myšlení natolik vzdálená, že bude v praxi nepoužitelná ( spíše nebezpečná ). Tím, spíše když programátorské myšlení - tedy lidská strana interfejsu počítač-člověk bude nadále upadat současným tempem.
- Vždy je možná i poslední varianta - zcela univerzální, na počítačích nezávislá - technický pokrok půjde vpřed bez zaškobrtnutí, ale výtěžek z něho se utopí v chamtivosti megakoporací a hlouposti veřejné správy i samotných lidí. Něco jako - robot ti vzal práci, peníze i, myšlení i zručnost. Tím zcela zničil tvoji budoucnost, ale jiný robot tě kontroluje dnem i nocí, stovkami kamer, abys náhodou nedal najevo, že ti to vadí. Mimochodem - nahradime-li slovíčko "robot" slovíčkem "Centrum hybridnich hrozeb" - jakoby takový systém krystalizoval už dnes.