Podcast o Ako funguje počítač
Ako funguje počítač: Kompletný rozbor pre študentov
Podcast
Ako funguje počítač: Binárna sústava
Délka: 14 minut
Kapitoly
Mýtus o zložitosti
Bit a bajt
Kúzlo prevodov
Binárna matematika
Základné logické brány
Od brán k procesorom
Inštrukčný cyklus: Motor procesora
Tri základné kroky
Príklad z praxe
Bežné omyly o počítačoch
Jazyk počítača a záver
Přepis
Lukáš: Vieš, Lenka, väčšina z nás si myslí, že počítače sú extrémne zložité stroje, ktoré rozumejú všetkému, čo do nich napíšeme. Ale je to naozaj tak?
Lenka: To je skvelá otázka, Lukáš. A odpoveď je prekvapivá. V skutočnosti je počítač v jadre extrémne jednoduchý. Rozumie len dvom stavom: zapnuté alebo vypnuté. Jednotka alebo nula. Nič viac.
Lukáš: Počkaj, takže všetky tie videá, hry, celé maturity... všetko je len z jednotiek a núl? To znie... neuveriteľne.
Lenka: Presne tak. A dnes si ukážeme, ako táto jednoduchá myšlienka tvorí základ všetkého. Počúvate Studyfi Podcast.
Lukáš: Dobre, takže začnime od piky. Čo je to tá jednotka a nula v praxi?
Lenka: Super. Tá najmenšia informácia v počítači sa volá bit. Je to skratka pre „binary digit“, teda binárna číslica. A predstav si ho ako vypínač svetla. Buď je zapnutý, čo je stav 1, alebo vypnutý, čo je stav 0.
Lukáš: A prečo práve len dva stavy?
Lenka: Pretože elektronické obvody pracujú s elektrickým napätím. Buď tam napätie je, alebo nie je. Je to najjednoduchší a najspoľahlivejší spôsob, ako zaznamenať informáciu.
Lukáš: Okej, ale jeden vypínač mi veľa nepovie. To by som si ani neprečítal správu.
Lenka: Presne! Preto bity zoskupujeme do väčších celkov. Najznámejšia skupina je bajt, ktorý sa skladá z ôsmich bitov. A s ôsmimi bitmi už vieme vytvoriť 256 rôznych kombinácií.
Lukáš: A to už stačí na čo? Na jedno písmeno?
Lenka: Áno! Napríklad veľké 'A' je v kóde ASCII reprezentované ako 01000001. A odtiaľ už poznáme kilobajty, megabajty... všetko sú to len násobky bajtov.
Lukáš: Dobre, takže počítač hovorí jazykom jednotiek a núl. Ako mu ale povieme, že myslíme napríklad číslo 22?
Lenka: Skvelý prechod! My používame desiatkovú sústavu s desiatimi číslicami, ale počítač používa dvojkovú, teda binárnu. Ukážem ti, ako sa to prekladá. Povedzme, že máme binárne číslo 10110.
Lukáš: Fíha. To pre mňa nevyzerá ako číslo.
Lenka: Hneď bude. Každá pozícia v tom čísle má svoju hodnotu, ktorá je mocninou dvojky, sprava doľava. Takže 10110 je vlastne (1 krát 16) plus (0 krát 8) plus (1 krát 4) plus (1 krát 2) plus (0 krát 1).
Lukáš: Takže... 16 plus 4 plus 2... to je 22! Aha! Už to začína dávať zmysel.
Lenka: Vidíš? A naopak to funguje tiež, metódou delenia dvojkou. Ak chceš previesť číslo 23 na binárne, delíš ho dvojkou a zapisuješ si zvyšky. 23 delené 2 je 11, zvyšok 1. 11 delené 2 je 5, zvyšok 1... a tak ďalej.
Lukáš: A potom tie zvyšky prečítaš od konca? Wow.
Lenka: Presne tak. Výsledok pre 23 je 10111.
Lukáš: Dobre, hlava mi ide trochu okolo z tých prevodov. Len mi nepovedz, že v tom počítače aj počítajú.
Lenka: Ale áno! A teraz to najlepšie — ich matematika je oveľa jednoduchšia ako naša. Má len štyri pravidlá.
Lukáš: Štyri? Sem s nimi.
Lenka: Tak počúvaj: 0 plus 0 je 0. 0 plus 1 je 1. A jediné zložité pravidlo je, že 1 plus 1 je 0, ale prenesieš 1 do ďalšieho stĺpca. Ako keď v desiatkovej sústave sčítaš 5 a 5, napíšeš 0 a prenesieš 1.
Lukáš: Chápem. Takže je to vlastne jednoduchšie, lebo nemáš deväť rôznych číslic.
Lenka: Presne! Ukážme si to na príklade 101 plus 011. V prvom stĺpci máme 1 plus 1, to je 0 a prenos 1. V druhom stĺpci máme 0 plus 1, plus ten prenos, takže zase 0 a prenos 1. A v treťom to isté. Výsledok je 1000.
Lukáš: Takže aj tie najzložitejšie výpočty v našich smartfónoch sú v skutočnosti len miliardy takýchto jednoduchých sčítaní za sekundu. To je fascinujúce.
Lenka: Je. A pochopenie tohto základu ti pomôže lepšie rozumieť tomu, ako digitálny svet funguje.
Lukáš: Dobre, takže sme si povedali, že všetko v počítači sú len nuly a jednotky. Ale ako z toho vznikne niečo zmysluplné? Ako počítač s týmito bitmi reálne... premýšľa?
Lenka: Skvelá nadväzujúca otázka, Lukáš. A odpoveď je fascinujúca. Všetko sa to deje vďaka niečomu, čo voláme logické obvody. Sú to vlastne miniatúrne elektronické obvody postavené z tranzistorov, ktoré vykonávajú úplne základné logické operácie.
Lukáš: Logické operácie? To znie dosť... filozoficky.
Lenka: Je to oveľa jednoduchšie, než to znie. V podstate len porovnávajú nuly a jednotky na vstupe a na základe jednoduchých pravidiel dávajú na výstup opäť nulu alebo jednotku.
Lukáš: A aké sú to pravidlá? Predpokladám, že nejaké základné existujú.
Lenka: Presne tak. Máme tri úplne najzákladnejšie logické brány, z ktorých sa skladá všetko ostatné. Sú to AND, OR a NOT.
Lukáš: Dobre, poďme na to postupne. Čo robí AND?
Lenka: Predstav si AND ako veľmi prísneho vyhadzovača v klube. Na výstupe dá jednotku, teda „pustí ťa dnu“, iba ak sú OBA vstupy jednotky. Ak je čo i len jeden vstup nula, na výstupe je tiež nula. Obaja musia mať pozvánku.
Lukáš: Rozumiem. Takže ak ja mám lístok, ale môj kamarát nie, máme smolu.
Lenka: Presne tak. Dnu sa nedostanete. Potom je tu brána OR, ktorá je o dosť zhovievavejšia. Tam stačí, aby bol ASPON JEDEN vstup jednotka, a výstup bude jednotka.
Lukáš: Aha, takže to je ten typ klubu, kam sa dostanem, aj keď lístok má len môj kamarát a ja sa zveziem s ním.
Lenka: Áno, presne. A nakoniec je tu NOT. Táto brána je najjednoduchšia. Má len jeden vstup a vždy urobí presný opak. Dáš jej nulu, ona vráti jednotku. Dáš jej jednotku, vráti nulu. Je to taký malý rebel.
Lukáš: Dobre, takže máme prísneho vyhadzovača, toho pohodového a potom rebela. Ale stále sa mi to zdá príliš jednoduché na to, aby z toho vznikol napríklad taký Photoshop.
Lenka: A tu prichádza tá kľúčová myšlienka. Tieto jednoduché brány sa dajú spájať do zložitejších obvodov. Je to ako s LEGO kockami. Jedna kocka je jednoduchá, ale keď ich spojíš tisíce, postavíš hrad.
Lukáš: Takže spájaním týchto brán vytvoríme obvody, ktoré vedia napríklad... sčítať dve čísla?
Lenka: Presne! Obvod, ktorý sčítava binárne čísla, sa volá sčítačka a je zložený presne z týchto základných brán. A keď ich pospájaš miliardy... dostaneš procesor.
Lukáš: Wow. Takže celý ten zložitý procesor, ten mozog počítača, je v podstate len gigantická skladačka z týchto troch základných operácií?
Lenka: Áno! Je to neuveriteľná ukážka toho, ako sa z extrémne jednoduchých pravidiel dá postaviť niečo nesmierne komplexné. A práve si skvele nahral na ďalšiu tému. Keď už vieme, z čoho sa skladá, poďme sa pozrieť, ako presne ten mozog, teda procesor, funguje.
Lukáš: Takže tie registre, o ktorých sme hovorili, sú ako taká blesková odkladacia plocha priamo v procesore. Super rýchla, ale maličká.
Lenka: Presne tak. A procesor ich neustále používa, keď vykonáva príkazy. Ale ako vlastne vie, čo má robiť? Ako zoberie program a premení ho na niečo, čo vidíme na obrazovke?
Lukáš: To je skvelá otázka. Predpokladám, že to nie je len mágia.
Lenka: Žiadna mágia, len neuveriteľne rýchly a organizovaný proces. Volá sa to inštrukčný cyklus.
Lukáš: Inštrukčný cyklus. To znie... no, ako niečo, čo sa neustále opakuje.
Lenka: A presne to aj robí! Miliardykrát za sekundu. Think of it this way... predstav si procesor ako šéfkuchára, ktorý má pred sebou recept – to je tvoj program. Inštrukčný cyklus sú tri základné kroky, ktoré robí pre každý jeden riadok receptu.
Lukáš: A aké sú to kroky? Prečítať, zamiešať, upiecť?
Lenka: Skoro! Je to Vyhľadaj, Dekóduj a Vykonaj. Alebo po anglicky, Fetch-Decode-Execute. Je to základný rytmus každého počítača.
Lukáš: Fetch-Decode-Execute. Poďme si to rozobrať. Čo je prvé?
Lenka: Prvá je fáza **Fetch**, čiže vyhľadanie. Riadiaca jednotka procesora si z pamäte RAM načíta ďalšiu inštrukciu. Adresu tej inštrukcie má uloženú v špeciálnom registri, ktorý sa volá programový čítač.
Lukáš: Takže programový čítač je ako záložka v knihe receptov, ktorá ukazuje na ďalší krok.
Lenka: Perfektná analógia! Hneď ako inštrukciu načíta, tá záložka sa posunie na ďalšiu. Potom prichádza fáza **Decode** – dekódovanie. Riadiaca jednotka si tú inštrukciu, čo je vlastne len binárny kód, preloží. Zistí, čo má vlastne urobiť... sčítať, uložiť, načítať...
Lukáš: A nakoniec fáza **Execute** – vykonanie.
Lenka: Presne tak. Tu sa do práce zapojí hlavne aritmeticko-logická jednotka, ALU, a urobí, čo sa od nej žiadalo. Sčíta tie čísla, presunie dáta... A potom sa celý cyklus okamžite opakuje pre ďalšiu inštrukciu.
Lukáš: Dobre, teória znie logicky. Ale môžeme si dať nejaký úplne jednoduchý príklad? Povedzme, sčítať dve čísla.
Lenka: Jasné. Predstavme si, že chceme sčítať 5 a 3. To sa nestane v jednom kroku. Budú to minimálne tri samostatné inštrukcie, a teda tri cykly. Najprv procesor vykoná inštrukciu LOAD R1, #5.
Lukáš: Čiže, „načítaj číslo 5 do registra R1“.
Lenka: Áno. Potom ide ďalší cyklus pre inštrukciu ADD R1, #3. ALU zoberie obsah registra R1, čo je päťka, a pripočíta k nemu trojku. Výsledok, teda osmičku, uloží naspäť do registra R1.
Lukáš: Chápem. A nakoniec to treba niekam uložiť, však?
Lenka: Presne. Tretí cyklus vykoná inštrukciu, ktorá hovorí: STORE R1, čiže „ulož obsah registra R1 do pamäte RAM“. A až potom je operácia hotová. Takže aj jednoduché 5 + 3 je pre procesor vlastne celkom fuška.
Lukáš: Je to taký veľmi poslušný, ale nie veľmi kreatívny pracovník. Musí sa mu všetko povedať krok za krokom.
Lenka: To si vystihol dokonale. A práve preto je dôležité pochopiť tento základný cyklus. Pretože všetky zložité programy sú v skutočnosti len obrovské sekvencie týchto jednoduchých krokov.
Lukáš: Takže kľúčové je, že tento cyklus – Vyhľadaj, Dekóduj, Vykonaj – je základný stavebný kameň všetkého, čo počítač robí. A keďže sa to deje tak šialene rýchlo, často vznikajú rôzne mylné predstavy o tom, ako to celé funguje. Poďme sa pozrieť na tie najčastejšie.
Lukáš: A tým sa dostávame k nášmu poslednému dnešnému mýtu. Často sa stretávam s tým, že ľudia si mýlia bity a bajty. Je v tom naozaj taký rozdiel?
Lenka: Obrovský! A je to super otázka, lebo sa s tým stretávame denne. Pamätaj si toto: 1 bajt sa rovná 8 bitom.
Lukáš: Aha! Takže keď vidím rýchlosť internetu v megabitoch za sekundu, nie je to to isté ako veľkosť súboru v megabajtoch?
Lenka: Presne tak. Na stiahnutie 1 megabajtového súboru pri rýchlosti 8 megabitov za sekundu budeš teoreticky potrebovať jednu sekundu. A nie osminu sekundy, ako si mnohí myslia.
Lukáš: Fascinujúce. A čo programovacie jazyky? Rozumejú im počítače priamo?
Lenka: Vôbec nie. To je ďalší skvelý postreh. Všetko — či už je to Python alebo C++ — sa musí preložiť do binárneho kódu. Sú to len série jednotiek a núl.
Lukáš: Takže počítač je vlastne len extrémne rýchly v spracovaní týchto jednoduchých jednotiek a núl?
Lenka: Áno! Vykonáva miliardy extrémne jednoduchých operácií za sekundu. Práve v tom obrovskom množstve je jeho sila.
Lukáš: Lenka, ďakujem. Skúsme to na záver celé zhrnúť.
Lenka: Celé fungovanie počítača je ako komplexný tanec — od elektrických signálov a bitov až po procesor, ktorý všetko riadi. Dúfam, že vám to otvorilo dvere k chápaniu digitálneho sveta.
Lukáš: Skvelé zhrnutie. Ďakujem ti za všetky odpovede a ďakujem aj vám, naši poslucháči. Majte sa pekne!
Lenka: Dopočutia!