Fotografie de Federica Galli pe Unsplash Cum funcționează computerele este ceva de care am fost întotdeauna curios, dar niciodată nu am crezut că voi avea de fapt cunoștințele de bază reale pentru a le înțelege, chiar și la un nivel înalt. Așa că a face cercetări pentru a scrie această postare pe blog și a afla că nu era atât de greu de înțeles a fost foarte satisfăcător, în plus, a ajunge să înțelegi cum funcționează computerele, din nou, chiar și la un nivel înalt, este destul de uluitor.
Cel mai elementar mod de a gândi un computer este ca o mașină de intrare/ieșire. Aceasta este o idee destul de elementară: calculatoarele preiau informații din surse externe (tastatura, mouse-ul, senzorii sau internetul), le stochează, le procesează și returnează rezultatul (Output) acestui proces. Apropo, dacă vă gândiți bine, în momentul în care computerele sunt conectate prin intermediul internetului, există o buclă nesfârșită de intrări și ieșiri, deoarece ieșirea unui computer (de exemplu, un site web) devine intrarea altui computer și așa mai departe(!!!).
Acum, suntem cu toții destul de obișnuiți și familiarizați cu modalitățile pe care un calculator le are pentru a primi intrări și pentru a tipări niște ieșiri, cu toții am folosit un mouse sau o tastatură, sau chiar am vorbit cu un calculator și cu toții am citit un articol pe un site web, am ascultat muzică sau am răsfoit niște poze vechi etc. Ceea ce nu ne este la fel de familiar și ceea ce de obicei ne străduim să înțelegem este modul în care un computer procesează de fapt informația.
Așa că da, la un nivel foarte fundamental, tot ceea ce înțelege un computer este 1 și 0, ceea ce înseamnă că fiecare intrare și ieșire este la un moment dat tradusă în sau din 1 și 0. Ceea ce este puternic la 1 și 0 (numiți și biți -de la BInary digiT) este că ne permite să transformăm orice informație în semnale electrice (ON/OFF). Vă rugăm să vă gândiți un moment la acest lucru: ORICE lucru pe care îl vedeți, gândiți sau cu care interacționați poate fi de fapt tradus și reprezentat ca semnale electrice(!!!). Reprezentarea informației sub formă de semnale electrice este ceea ce permite calculatoarelor să proceseze efectiv acea informație și să o transforme.
Deci cum funcționează sistemul numeric binar? Numerele binare înseamnă că toate numerele sunt calculate cu baza 2. Ca exemplu, majoritatea dintre noi suntem obișnuiți să ne gândim la numere cu baza 10. Dacă vă gândiți la un număr oarecare, să zicem 2561, puteți vedea cum, în funcție de poziția pe care o ocupă numărul de la dreapta la stânga, numărul are o valoare diferită, care este un multiplu de zece. În acest exemplu, de exemplu, 1 ocupă poziția 1s, 6 ocupă poziția 10s, 5 ocupă poziția 100s și 2 ocupă poziția 1000s. În acest fel, (2×1000) + (5×100) + (6×10) + (1×1) = 2561. Numerele binare funcționează exact în același mod, dar fiecare pas incremental reprezintă un increment de x2 față de cel precedent. Iată un exemplu de reprezentare a numărului 12:
Deci, cu 8 biți se poate reprezenta orice număr între 0 și 255, iar cu 32 de biți se poate reprezenta orice număr între 0 și 4 miliarde. S-ar putea să vă gândiți, sigur, dar cum rămâne cu șirurile de caractere și punctuația? Ei bine, până în prezent, încă mai respectăm codul ASCII, American Standard Code for Information Interchange (Codul standard american pentru schimbul de informații), care, în principiu, asociază orice caracter sau semn de punctuație, inclusiv literele majuscule, cu unul dintre numerele pe 8 biți. Și acesta este modul în care folosim numerele pentru a reprezenta literele.
Sigur, dar cum rămâne cu imaginile? Ei bine, de fapt, o imagine poate fi, de asemenea, redusă la 0-uri și 1-uri. După cum știți, orice ecran are un anumit număr de pixeli și fiecare pixel are o culoare și, după cum știți, folosind codurile de culoare RGB sau HEX putem reprezenta culorile sub formă de numere, ceea ce înseamnă că, practic, putem spune unui computer ce culoare trebuie să aibă fiecare pixel. Același lucru este valabil pentru muzică, video și orice alt tip de informație la care vă puteți gândi.
Dar cum naiba „calculăm” semnalele electrice? Aici intervin circuitele electrice. La un nivel foarte elementar și suprasimplificat, putem folosi circuitele electrice pentru a ne comporta ca niște „mașini logice”. Putem avea circuite care, dată fiind o anumită intrare, vor returna o ieșire în funcție de logica cu care au fost construite (Not, And, Or), dar și sume, scăderi, înmulțiri și împărțiri. Partea interesantă este că, folosind aceste forme foarte elementare de reprezentare și procesare a informației, putem atinge de fapt „completitudinea funcțională”, care este un termen folosit în logică pentru a se referi la un set de operatori booleeni care sunt capabili să reprezinte toate tabelele de adevăr posibile, ceea ce reprezintă un mod sofisticat pe care matematicienii îl au pentru a spune că cerul este limita. Toate aceste calcule au loc într-o unitate din interiorul procesorului dumneavoastră numită ALU (Arithmetic Logic Unit).
După cum probabil știți, CPU-urile – Central Processing Unit – sunt creierele calculatoarelor și este locul unde se desfășoară toate calculele. Partea interesantă despre CPU-uri este că acestea nu au memorie, ceea ce înseamnă că nu își pot aminti absolut nimic. Fără memorie, fiecare calcul ar fi pierdut imediat după ce îl efectuăm. În linii mari, și după cum probabil știți deja, există două tipuri de memorie pe care le folosesc calculatoarele noastre: RAM, care înseamnă Random Access Memory (memorie cu acces aleatoriu) și Persistent Memory (memorie persistentă). Vă puteți gândi la memoria RAM ca la o grilă imensă (matrice) care stochează numere pe 8 biți. Memoria RAM ține evidența „adreselor” din matricea de memorie a oricărui număr de 8 biți dat pentru orice moment în care CPU are nevoie de el. Și ghiciți ce? Pentru a efectua aceste operații, folosim exact aceeași logică de circuit pe care am folosit-o înainte. Adică, folosim exact aceeași logică pentru a permite ca o anumită intrare să fie stocată într-un anumit „loc” din memorie sau pentru a accesa orice informație stocată în ea.
Știu că abia zgârii suprafața modului în care funcționează computerele aici, dar doar să ajung să înțeleg acest lucru mi-a luat ceva timp și deja m-a dat pe spate de mai multe ori. Ceea ce mă fascinează la acest aspect este cât de puternice sunt computerele și cât de încorporate sunt în viața noastră de zi cu zi, de aceea cred că este important să avem cel puțin o intuiție a modului în care acestea funcționează. De asemenea, ca întotdeauna, dacă observați vreo greșeală, vă rog să mă anunțați.
Voi încheia această postare cu un videoclip care îmi place foarte mult în care Steve Jobs compară computerele cu bicicletele aici:
Iată o listă de resurse uimitoare pe care le-am găsit în timp ce făceam cercetări pentru această postare:
5 videoclipuri scurte despre cum funcționează computerele de la Khan Academy: https://www.khanacademy.org/computing/computer-science/how-computers-work2/v/khan-academy-and-codeorg-introducing-how-computers-work
Seria Crash Course on Computer Science sunt absolut uimitoare: https://www.youtube.com/watch?v=O5nskjZ_GoI
O introducere în logică și tabelele de adevăr: https://medium.com/i-math/intro-to-truth-tables-boolean-algebra-73b331dd9b94
Logica NAND, pentru a înțelege mai bine cum circuitele electrice pot efectua operații logice: https://en.wikipedia.org/wiki/NAND_logic
Pagina Wikipedia pentru ASCII: https://en.wikipedia.org/wiki/ASCII
Pagina Wikipedia pentru Codul binar, cu o scurtă istorie a aritmeticii binare: https://en.wikipedia.org/wiki/Binary_code
Dacă doriți să aprofundați mai mult, iată un loc excelent pentru a începe: https://softwareengineering.stackexchange.com/questions/81624/how-do-computers-work/81715
Mulțumesc că ați citit până acum.