Więc jak właściwie działają komputery?
Wysokopoziomowy przegląd tego, jak liczby binarne sprawiają, że komputery działają, dla ciekawskich osób nietechnicznych.
Jak działają komputery to coś, co zawsze mnie ciekawiło, ale nigdy nie sądziłem, że będę miał podstawową wiedzę, aby to zrozumieć, nawet na wysokim poziomie. Więc robi badania, aby napisać ten wpis na blogu i dowiedzieć się, że nie było tak trudno zrozumieć było bardzo satysfakcjonujące, plus, coraz zrozumieć, jak komputery działają, ponownie nawet na wysokim poziomie, jest dość mind-blowing.
Najpodstawowszym sposobem myślenia o komputerze jest jako Input/Output maszyny. To całkiem podstawowa idea: komputery pobierają informacje z zewnętrznych źródeł (klawiatura, mysz, czujniki lub Internet), przechowują je, przetwarzają i zwracają wynik (wyjście) tego procesu. Przy okazji, jeśli się nad tym zastanowić, w momencie gdy komputery są połączone przez Internet, powstaje niekończąca się pętla wejść i wyjść, ponieważ wyjście jednego komputera (powiedzmy strony internetowej) staje się wejściem innego i tak dalej(!!!).
Teraz, wszyscy jesteśmy całkiem przyzwyczajeni i obeznani ze sposobami, w jakie komputer otrzymuje dane wejściowe i drukuje jakieś dane wyjściowe, wszyscy używaliśmy myszy lub klawiatury, lub nawet rozmawialiśmy z komputerem i wszyscy czytaliśmy artykuł na stronie internetowej, słuchaliśmy muzyki lub przeglądaliśmy jakieś stare zdjęcia, itp. To, z czym nie jesteśmy tak zaznajomieni i z czym zwykle walczymy, aby zrozumieć, to jak komputer faktycznie przetwarza informacje.
Więc tak, na bardzo podstawowym poziomie wszystko, co komputer rozumie to 1’s i 0’s, co oznacza, że każde pojedyncze wejście i wyjście dostaje w pewnym momencie przetłumaczone na lub z 1’s i 0’s. To co jest potężne w 1’s i 0’s (zwanych również bitami – od BInary digiT) to fakt, że pozwalają nam przekształcić każdą informację w sygnał elektryczny (ON/OFF). Proszę poświęcić chwilę na zastanowienie się nad tym: WSZYSTKO co widzisz, myślisz lub z czym wchodzisz w interakcję może być faktycznie przetłumaczone i reprezentowane jako sygnały elektryczne(!!!). Reprezentowanie informacji jako sygnały elektryczne jest to, co pozwala komputerom faktycznie przetwarzać te informacje i transform it.
Więc jak działa system liczb binarnych? Liczby binarne oznacza, że wszystkie liczby są obliczane z podstawy 2. Jako przykład, większość z nas są używane do myślenia o liczbach z podstawy 10. Jeśli myślisz o dowolnej liczbie, powiedzmy 2561, możesz zobaczyć, jak w zależności od pozycji, którą zajmuje liczba od prawej do lewej, liczba ma inną wartość, która jest wielokrotnością dziesięciu. W tym przykładzie, na przykład, 1 zajmuje pozycję 1s, 6 zajmuje pozycję 10s, 5 zajmuje pozycję 100s, a 2 zajmuje pozycję 1000. W ten sposób, (2×1000) + (5×100) + (6×10) + (1×1) = 2561. Liczby binarne działają dokładnie w ten sam sposób, ale każdy kolejny krok reprezentuje przyrost x2 w stosunku do poprzedniego. Oto przykład, jak reprezentować liczbę 12:
Tak więc, z 8 bitów można reprezentować dowolną liczbę od 0 do 255, a z 32 bitów można reprezentować dowolną liczbę od 0 do 4 miliardów. Możesz sobie pomyśleć, jasne, ale co z ciągami znaków i interpunkcją? Cóż, na dzień dzisiejszy nadal stosujemy ASCII (American Standard Code for Information Interchange), który zasadniczo odwzorowuje każdy znak lub znak interpunkcyjny, w tym wielkie litery, na jedną z 8-bitowych liczb. I w ten właśnie sposób używamy liczb do reprezentowania liter.
Jasne, ale co z obrazami? Cóż, właściwie obraz może być również zredukowany do 0 i 1. Jak wiesz, każdy ekran ma określoną liczbę pikseli, a każdy piksel ma kolor i jak wiesz, używając kodów kolorów RGB lub HEX możemy reprezentować kolory jako liczby, co oznacza, że możemy w zasadzie powiedzieć komputerowi, jaki kolor musi mieć każdy piksel. To samo dotyczy muzyki, wideo i każdego innego rodzaju informacji, o którym możesz pomyśleć.
Ale jak do cholery „obliczamy” sygnały elektryczne? To jest, gdzie obwody elektryczne przyjść w. Na bardzo podstawowym i zbyt uproszczonym poziomie, możemy użyć obwodów elektrycznych do zachowania się jak „maszyny logiczne”. Możemy mieć obwody, które, biorąc pod uwagę określone dane wejściowe, zwrócą wyjście w zależności od logiki, z którą zostały zbudowane (Not, And, Or), ale także sumy, odejmowania, mnożenia i dzielenia. Interesujące jest to, że używając tych bardzo elementarnych form reprezentowania i przetwarzania informacji, możemy w rzeczywistości osiągnąć „funkcjonalną kompletność”, która jest terminem używanym w logice w odniesieniu do zestawu operatorów boolean, które są w stanie reprezentować wszystkie możliwe tablice prawdy, co jest wymyślnym sposobem, w jaki matematycy mówią, że niebo jest granicą. Wszystkie te obliczenia odbywają się w jednostce wewnątrz procesora zwanej ALU (Arithmetic Logic Unit).
Jak zapewne wiesz, CPU – Central Processing Unit – są mózgami komputerów i to właśnie tam odbywają się wszystkie obliczenia. Interesującą częścią o CPU jest to, że nie mają one żadnej pamięci, co oznacza, że nie mogą zapamiętać absolutnie nic. Bez pamięci, każde obliczenie zostałoby utracone zaraz po jego wykonaniu. Z grubsza rzecz biorąc, i jak być może już wiesz, istnieją dwa rodzaje pamięci, z których korzystają nasze komputery: RAM, który jest skrótem od Random Access Memory i Persistent Memory. Możesz myśleć o pamięci RAM jako o ogromnej siatce (matrycy) przechowującej 8-bitowe liczby. Pamięć RAM śledzi „adresy” w macierzy pamięci dla każdej danej liczby 8-bitowej, kiedy tylko CPU jej potrzebuje. I zgadnij co? Aby wykonać te operacje, używamy dokładnie tej samej logiki obwodu, której używaliśmy wcześniej. To znaczy, używamy dokładnie tej samej logiki, aby pozwolić danemu wejściu być przechowywanym w danym „miejscu” w pamięci lub uzyskać dostęp do jakiegokolwiek fragmentu informacji przechowywanej w pamięci.
Wiem, że ledwie zarysowuję powierzchnię tego, jak działają komputery, ale samo zrozumienie tego zajęło mi sporo czasu i już zdmuchnęło mój umysł więcej niż kilka razy. Fascynuje mnie to, jak potężne są komputery i jak bardzo są osadzone w naszym codziennym życiu, dlatego uważam, że ważne jest, aby przynajmniej mieć intuicję, jak one działają. Również, jak zawsze, jeśli zauważysz jakiś błąd proszę daj mi znać.
Zakończę ten post z wideo, które naprawdę lubię, gdzie Steve Jobs porównuje komputery do rowerów tutaj:
Tutaj jest lista niesamowitych zasobów, które znalazłem podczas robienia badań dla tego postu:
5 krótkich filmów Akademii Khana na temat działania komputerów: https://www.khanacademy.org/computing/computer-science/how-computers-work2/v/khan-academy-and-codeorg-introducing-how-computers-work
Seria Crash Course na temat informatyki jest absolutnie niesamowita: https://www.youtube.com/watch?v=O5nskjZ_GoI
Wprowadzenie do Logiki i Tablic Prawdy: https://medium.com/i-math/intro-to-truth-tables-boolean-algebra-73b331dd9b94
NAND Logic, aby lepiej zrozumieć, jak obwody elektryczne mogą wykonywać operacje logiczne: https://en.wikipedia.org/wiki/NAND_logic
Strona Wikipedii dla ASCII: https://en.wikipedia.org/wiki/ASCII
Strona Wikipedii dla kodu binarnego z krótką historią arytmetyki binarnej: https://en.wikipedia.org/wiki/Binary_code
Jeśli chcesz kopać głębiej, tutaj jest świetne miejsce, aby zacząć: https://softwareengineering.stackexchange.com/questions/81624/how-do-computers-work/81715
Dziękuję za przeczytanie do tej pory.