Tak jak vlastně fungují počítače?
Vysokoúrovňový přehled toho, jak díky binárním číslům fungují počítače, pro zvídavé netechniky.
Jak fungují počítače je něco, co mě vždycky zajímalo, ale nikdy jsem si vlastně nemyslel, že budu mít skutečné základní znalosti, abych tomu rozuměl, a to ani na vysoké úrovni. Takže dělat rešerše pro napsání tohoto příspěvku na blogu a zjistit, že to není tak těžké pochopit, bylo velmi obohacující, a navíc pochopit, jak počítače fungují, opět i na vysoké úrovni, je docela ohromující.
Nejzákladnější způsob, jak přemýšlet o počítači, je jako o vstupně-výstupním stroji. To je docela základní představa: počítače přijímají informace z vnějších zdrojů (klávesnice, myš, senzory nebo internet), ukládají je, zpracovávají a vracejí výsledek (Output) tohoto procesu. Mimochodem, když se nad tím zamyslíte, v okamžiku, kdy jsou počítače propojeny prostřednictvím internetu, vzniká nekonečná smyčka vstupů a výstupů, protože výstup počítače (řekněme webové stránky) se stává vstupem jiného a tak dále(!!).
Všichni jsme si docela zvykli a známe způsoby, jakými má počítač přijímat vstupy a vypisovat nějaké výstupy, všichni jsme používali myš nebo klávesnici, nebo jsme dokonce s počítačem mluvili a všichni jsme si přečetli nějaký článek na webové stránce, poslouchali hudbu nebo si prohlíželi nějaké staré obrázky atd. Co už tak dobře neznáme a čemu se obvykle snažíme porozumět, je to, jak počítač vlastně zpracovává informace.
Takže ano, na zcela základní úrovni vše, čemu počítač rozumí, jsou jedničky a nuly, což znamená, že každý jednotlivý vstup a výstup se v určitém okamžiku převede na jedničky a nuly nebo z nich. Na jedničkách a nulách (nazývaných také bity -od BInary digiT) je silné to, že nám umožňují převést jakoukoli informaci na elektrické signály (ON/OFF). Zamyslete se nad tím, prosím, na chvíli: VŠECHNO, co vidíte, na co myslíte nebo s čím komunikujete, lze ve skutečnosti převést a reprezentovat jako elektrické signály(!!!). Reprezentace informací jako elektrických signálů je to, co umožňuje počítačům tyto informace skutečně zpracovat a transformovat.
Jak tedy funguje binární číselná soustava? Binární čísla znamenají, že všechna čísla se počítají se základem 2. Jako příklad lze uvést čísla, o kterých je většina z nás zvyklá uvažovat se základem 10. Pokud se zamyslíte nad libovolným číslem, řekněme 2561, můžete si všimnout, že v závislosti na pozici, kterou číslo zaujímá zprava doleva, má číslo jinou hodnotu, která je násobkem deseti. V tomto příkladu například 1 zaujímá pozici 1s, 6 zaujímá pozici 10s, 5 zaujímá pozici 100s a 2 zaujímá pozici 1000s. Tímto způsobem vznikne (2×1000) + (5×100) + (6×10) + (1×1) = 2561. Binární čísla fungují úplně stejně, ale každý přírůstkový krok představuje přírůstek x2 oproti předchozímu. Zde je příklad reprezentace čísla 12:
Takže s 8 bity můžete reprezentovat libovolné číslo mezi 0 a 255 a s 32 bity můžete reprezentovat libovolné číslo mezi 0 a 4 miliardami. Možná si říkáte, jasně, ale co řetězce a interpunkční znaménka? No, ode dneška se stále řídíme ASCII, American Standard Code for Information Interchange, který v podstatě mapuje jakýkoli znak nebo interpunkční znaménko včetně velkých písmen na jedno z 8bitových čísel. A takto používáme čísla k reprezentaci písmen.
Jistě, ale co obrázky? No, ve skutečnosti lze obrázek také redukovat na nuly a jedničky. Jak víte, každá obrazovka má daný počet pixelů a každý pixel má barvu a jak víte, pomocí barevných kódů RGB nebo HEX můžeme barvy reprezentovat jako čísla, což znamená, že počítači můžeme v podstatě říci, jakou barvu musí mít každý pixel. Totéž platí pro hudbu, video a jakýkoli jiný typ informace, na který si vzpomenete.
Ale jak sakra „počítáme“ elektrické signály? K tomu slouží elektrické obvody. Na velmi základní a zjednodušené úrovni se můžeme pomocí elektrických obvodů chovat jako „logické stroje“. Můžeme mít obvody, které při zadání určitého vstupu vrátí výstup v závislosti na logice, s níž byly sestaveny (Not, And, Or), ale také součty, odečty, násobení a dělení. Zajímavé je, že pomocí těchto velmi elementárních forem reprezentace a zpracování informací můžeme skutečně dosáhnout „funkční úplnosti“, což je termín používaný v logice pro množinu logických operátorů, které jsou schopny reprezentovat všechny možné pravdivostní tabulky, což je módní způsob, jak matematici říkají, že nebe je limit. Všechny tyto výpočty probíhají v jednotce uvnitř procesoru, která se nazývá ALU (Arithmetic Logic Unit).
Jak asi víte, CPU – Central Processing Unit – jsou mozkem počítačů a právě v nich probíhají všechny výpočty. Zajímavé na CPU je, že nemají žádnou paměť, což znamená, že si nemohou pamatovat absolutně nic. Bez paměti by se každý výpočet ztratil hned poté, co ho provedeme. Zhruba řečeno, a jak už možná víte, existují dva typy paměti, které naše počítače používají: RAM, což je zkratka pro paměť s náhodným přístupem, a trvalou paměť. Paměť RAM si můžete představit jako obrovskou mřížku (matici) uchovávající 8bitová čísla. Paměť RAM uchovává „adresy“ v paměťové matici libovolného 8bitového čísla, kdykoli je procesor potřebuje. A hádejte co? K provádění těchto operací používáme úplně stejnou obvodovou logiku, jakou jsme používali dříve. To znamená, že používáme úplně stejnou logiku, která umožňuje, aby se daný vstup uložil na dané „místo“ v paměti nebo aby se zpřístupnila jakákoli informace v ní uložená.
Vím, že se tu sotva poškrábu na povrch toho, jak počítače fungují, ale jen pochopení tohoto mi zabralo dost času a už mi více než několikrát vyrazilo dech. Fascinuje mě na tom, jak jsou počítače mocné a jak jsou zakotvené v našem každodenním životě, proto si myslím, že je důležité mít alespoň tušení o tom, jak fungují. A také, jako vždy, pokud si všimnete nějaké chyby, dejte mi prosím vědět.
Tento příspěvek zakončím videem, které se mi moc líbí a kde Steve Jobs přirovnává počítače ke kolům zde:
Tady je seznam úžasných zdrojů, které jsem našel při rešerši pro tento příspěvek:
Khan Academy 5 krátkých videí o tom, jak počítače fungují: https://www.khanacademy.org/computing/computer-science/how-computers-work2/v/khan-academy-and-codeorg-introducing-how-computers-work
Série Crash Course o informatice jsou naprosto úžasné: https://www.youtube.com/watch?v=O5nskjZ_GoI
Úvod do logiky a pravdivostních tabulek: https://medium.com/i-math/intro-to-truth-tables-boolean-algebra-73b331dd9b94
Logika NAND, abyste lépe pochopili, jak mohou elektrické obvody provádět logické operace: https://en.wikipedia.org/wiki/NAND_logic
Stránka Wikipedie pro ASCII: https://en.wikipedia.org/wiki/ASCII
Stránka Wikipedie pro binární kód s krátkou historií binární aritmetiky: https://en.wikipedia.org/wiki/Binary_code
Pokud se chcete dostat hlouběji, zde je skvělé místo, kde začít: https://softwareengineering.stackexchange.com/questions/81624/how-do-computers-work/81715
Děkujeme, že jste dočetli až sem.
.