6 Zrozumieć Asembler
my automatycznie, nie zdając sobie zupełnie sprawy, że o nich myślimy.
Najlepszym modelem logiki programu komputerowego jest logika, jaką wykorzystujemy tworząc nasz własny, dzienny plan zajęć. Zupełnie nieważne, co robimy, zawsze sprowadza się to do porównywania dwóch możliwości i wyboru jednej. To, co może wydawać się pojedynczą skomplikowaną decyzją, w rzeczywistości jest niczym innym, jak ciągiem wielu drobnych decyzji. Zdolność do zobaczenia ciągu małych decyzji w jednej skomplikowanej bardzo Gi pomoże w zdobyciu umiejętności programowania. Następnym razem zwróć uwagę, w jaki sposób będziesz podejmował jakąś decyzję. Policz wszystkie te drobne decyzje, które składają się na nią składają. Będziesz zaskoczony.
I następna niespodzianka! W ten sposób staniesz się programistą.
Nie musisz być zdegustowany czy zły na mnie. To, o czym do tej pory mówiliśmy, to były metafory. Nic była to rzeczywistość, jeszcze nie.
W tej książce często będę korzystał z metafor. Metafora jest luźnym podobieństwem, utworzonym między czymś co znasz (jak np. spis spraw do załatwienia w sobotni poranek) i czymś nieznanym (jak program komputerowy). Celem tworzenia takich metafor jest powiązanie nowych, nieznanych pojęć z tym, co znasz. Gdy później zacznę podawać dużo nowych informacji, będziesz w stanie je uporządkować i umieścić na swoich miejscach. Te prawdziwe informacje zaczną się dopiero w rozdziale 1. Dlatego też ten rozdział ma numer O to też tylko metafora.
Teraz najważniejszą sprawa dla Ciebie, żebyś był uważny. Jeśli wiesz coś na temat komputerów lub programowania, nie czepiaj się drobiazgów. Oczywiście istnieją wyraźne różnice między panią domu wykonującą swój plan dnia a komputerem wykonującym program. Wszystkie te różnice omówię w odpowiednich miejscach.
Narazie mamy w dalszym ciągu rozdział O. Informacje w nim zawarte traktuj tylko jak metafory. Później znacznie Ci one pomogą.
Któregoś wieczoru mój najlepszy przyjaciel Artur powiedział „nie bez powodu pożyczka i plansza są homonimami” (ang. bored i bo-ard). Byliśmy wtedy dwójką młodych zarozumiałych dwudziestolatków i graliśmy u niego w pewną grę. (Był w niezbyt wesołym nastroju, bo właśnie przegrał.) Co to było? Monopoly? A może Business? Może Bankrut? A może zupełnie coś innego? Pamiętam tylko, że przesuwaliśmy jakieś małe kolorowe pionki po kolorowych polach, na których napisane były różne dziwne polecenia, jak na przykład „cofnij się dwa pola”, czy „kup coś za 100 dolarów”, bądź też „jedź na safari”.
Ten wyjazd na safari jest dobrym przykładem podobieństwa tej szczególnej amerykańskiej obsesji jaką były gry planszowe i Asemblera - języka programowania. Przede wszystkim, we wszystkich grach planszowych posuwamy się cały czas do przodu krokami i wykonujemy sprawdzenia. W niektórych grach na każdym kroku należy przeprowadzić sprawdzenie. Sprawdzić, czy się umie odpowiedzieć na pytanie zawarte na karcie, czy nie umie. W innych grach planszowych na każdym polu planszy znajduje się jakaś instrukcja: „opuść jedną kolejkę”, „cofnij się o dwa pola”, „wyciągnij kartę losu” lub oczywiście „idź do więzienia”.
Niektóre gry planszowe były przyczyną poważnych kłótni między Arturem i mną. Chodziło nam o to, jak należy wykonać polecenie „idź naprzód” lub „cofnij się o pięć pól”. Wydawało mi się, że należy liczyć od pola, na którym się stoi. Artur uważał, że liczenie należy zaczynać w momencie wykonania pierwszego kroku we wskazanym kierunku. To oczywiście dawało różnicę w wynikach gry. (Ja zwykle myliłem się o to jedno pole, bo gdybym bez „pomyłki” wylądował na czymś takim jak Park Place z 15 hotelami Arta, płaciłbym mu bajońskie sumy za czynsz - zgodnie z regułami gry.)
0.3.1 Gra „Big Bux"
Aby nie wpaść w poważne kłopoty przy wyjaśnianiu naszych problemów, utworzyłem swoją własną grę „Big Bux” będącą obrazem życia w Krzemowej Dolinie, gdzie pieniądze zdają się same wchodzić do portfela (zwykle jednak do cudzego) i gdzie pieniądze stale wpa-