DOMENA CALCULEMUS
Do Lectorium


Witold Marciszewski

Kodowanie cyfrowe - dobre na wszystko?


Pomysłodawca komputera czyli maszyny cyfrowej, matematyk z Oxfordu Alan M.Turing, był największym w dziejach kryptografem, specjalistą od kodowania i łamania szyfrów. Aby wyjasnić tę zbieżność, bynajmiej nie przypadkową, trzeba coś powiedzieć o historycznym sukcesie Turinga w kryptografii.

Nadchodziła druga wojna światowa. Turing spotyka się z matematykami z Poznania pracującymi dla polskiego wywiadu nad łamaniem szyfrów armii niemieckiej. Rozpracowali oni służącą do tego celu niemiecką maszynę o nazwie ,,Enigma'' i spotykają się, by przekazać wyniki wywiadowi sojusznika. Na tych wynikach Turing, powołany przez rząd brytyjski na szefa głównego zespołu od łamania kodów, oparł dalszą działalność. Okazała się ona kolosalnym wkładem wywiadowczym w ostateczne zwycięstwo, gdyż szyfrowane rozkazy dowódców niemieckich szybko docierały do dowództwa brytyjskiego. Do Turinga i jego zespołu również trzeba odnieść, co powiedział Churchil o lotnikach z bitwy o Anglię: jeszcze nigdy tak wielu nie zawdzięczało tak wiele tak niewielu.

Dlaczego to historyczne zadanie powierzono człowiekowi w wieku lat dwudziestu paru, którego nazwisko było znane tylko w wąskim kręgu logików matematycznych? Mianowicie, w tym kręgu podziwiano wynik Turinga w pewnej kluczowej kwestii atakowanej przez logikę od paru dziesiątków lat, który to wynik wymagał wyrafinowanej metody kodowania opisów procedur mechanicznych. To wystarczyło rządowi Jego Królewskiej Mości, szukającemu kogoś, kto by przechytrzył kryptografów niemieckich.

Wynik Turinga z 1936 okazał się podstawowy zarówno dla idei komputera, jak i dla projektu SI wysuniętego przez Turinga w 1948 (w 1998 - okrągły jubileusz!). Istotą tego wyniku jest zdefiniowanie nowej (nie znanej w dawniejszej matematyce) klasy liczb rzeczywistych nazwanych NIEOBLICZALNYMI i wyprowadzenie stąd zaskakujących konsekwencji co do możliwości rozwiązywania problemów matematycznych. Mianowicie, nie są dla maszyny rozwiązywalne te problemy, których rozwiązanie wyrażałoby się jakąś liczbą nieobliczalną.

Kluczem do tego wyniku jest definicja pojęcia obliczania. Jeśli (1) się ją posiądzie, i jeśli (2) WSZYSTKIE inne problemy dadzą się zakodować liczbowo, czyli w cyfrach, to odpowiedź na pytanie postawione w tytule będzie twierdząca. Definicja obliczania to niepodważalne osiągnięcie Turinga (i innych autorów, ale że u Turinga mamy punkt wyjścia dla SI, mowa tu tylko o nim). W punkcie 2 nie ma tak definitywnej odpowiedzi, ścierają się hipotezy na ,,tak'' i ,,nie''. W każdym razie, nawet jeśli kodowanie nie jest ,,dobre na wszystko'', to jego możliwości obejmują kolosalną sferę problemów. Tak wielką, że odkąd ludzie opanowali technikę kodowania cyfrowego - w formie programowania komputerów - nie będzie przesadą powiedzieć, że odmieniło się oblicze ziemi.

Jak algorytm kulinarny zamienić w łańcuch cyfr

Co to jest algorytm, wie uczeń szkoły podstawowej odrabiający lekcje z matematyki metodą ,,słupków''. Wie w tym sensie, że umie go stosować (nie musi znać samego słowa, jak nie musi wiedzieć, że pochodzi ono od nazwiska pewnego średniowiecznego Araba, któremu tę metodę zawdzięczamy). ALGORYTM nazywamy też PROCEDURĄ MECHANICZNĄ. oddając tym fakt, że jest to postępowanie, które nie wymaga twórczości, będąc tylko wykonywaniem instrukcji odnoszących się wyłącznie do kształtu symboli oraz ich usytuowania przestrzennego. Prawdę mówiąc, postępowanie mechaniczne - to tyle, co bezmyślne.

Mamy do dyspozycji jeszcze jeden termin - PROGRAM. W szerszym znaczeniu jest on synonimem obu wyżej wymienionych. W węższym zaś, tym szeroko znanym, jest to algorytm wyrażony w języku dającym się przełożyć na kod maszynowy czyli język wewnętrzny maszyny cyfrowej (system impulsów sterujących wykonywaniem przez nią zadań).

W popularnych wprowadzeniach w informatykę, żeby czytelników nie straszyć przykładami z matematyki, jako przykłady algorytmów podaje się przepisy z książki kucharskiej. Żeby ten chwyt dydaktyczny zdał egzamin, trzeba by pokazać, jak przepis kulinarny zastąpić łańcuchem cyfr opisującym pewną liczbę. Do istoty bowiem algorytmu - czyli procedury mechanicznej czyli programu (w szerszym znaczeniu) - należy możliwość zakodowania go cyfrowo. Jest to wielka idea Turinga, którą tak ujął jego biograf, fizyk z Oksfordu, Andrew Hodges.

Zdolność komputera do wykonania dowolnego programu wywodzi się z głębokiej idei, że programy i liczby nie różnią się od siebie.

Uniwersalność bowiem komputera na tym polega, że dysponuje on układem programów (systemy operacyjne i translatory), który potrafi realizować każdy inny program, o ile ten inny jest dostarczony w postaci ciągu liczbowego. Jak to zrobić? Częścią programu są operacje arytmetyczne, np. 2+3=5. W tym napisie są już symbole liczbowe (cyfry), odnoszące się do argumentów operacji. Symbolom operacji (jak +) i relacji (jak =) również przydziela się umownie pewne cyfry, a żeby nie mylić ich z argumentami, oddzielamy je stworzonymi w tym celu znakami interpunkcyjnymi, też kodowanymi w formie cyfr (w realizacji jest to raczej skomplikowane, ale sama idea jest prosta). Inne instrukcje programu, podobnie jak symbole operacji też oznacza się umownymi liczbami.

Taka technika kodowania nadaje się nie tylko dla programów obliczeniowych. Program do tworzenia tekstów (edytor) powstaje przez numerowanie liter (jak w ASCII) oraz instrukcji tworzenia tekstu (spacja, zmiana wiersza etc.). Program graficzny - dzięki rozpisaniu obrazu w układzie współrzędnych, co pozwala przypisać każdemu punktowi parę cyfr. Kolory i dżwięki już w samej przyrodzie wyrażają się liczbami, trzeba więc tylko zakodować te liczby w programie.

A jak zakodować przepis kulinarny? To proste, bo operuje on od początku liczbami: pół kilo mąki, dwa jajka itd. Trzeba jeszcze przypisać umownie jakieś liczby poszczególnym surowcom oraz dokonywanym na nich operacjom, np. rozbicia jajka. Może jednak powstać trudność z cyfrowym oddaniem instrukcji, która pojawia się czasem na końcu: ,,dodać soli i pieprzu do smaku". Jak zakodować smak? Tym pytaniem zajmiemy się niebawem.

Czy któregoś dnia się narodzi elektroniczny Paganini?

Żeby docenić potęgę kodowania cyfrowego, przenieśmy się ze świata liczb do realnego. Realnego? Niezupełnie. Będzie to bowiem mieszanina świata rzeczywistego z wirtualnym. Wirtualnym? Cóż to takiego? To właśnie świat symulujący realność za pomocą kodowania cyfrowego i wymieszany z tym ,,realnie realnym''. W tym drugim znajduje się np. człowiek uczący się pływania na jachcie oraz jego komputer, podczas gdy jacht, woda, wiatr etc. należą do sfery komputerowej symulacji.

,,Przeglądając oferty sklepów komputerowych, łatwo dojść do wniosku, że nie ma dziedziny życia, której nie można by symulować na komputerze. [...] Pojawił się np. program nauki pływania na jachcie. Na monitorze widać, jak zachowuje się łódka w zależności od takielunku, kierunku wiatru, ruchów sterem i ustawienia żagli. Początkujący wodniacy, nie narażając się na przypadkową kąpiel, mogą za pomocą klawiatury przeprowadzić szkolny manewr zwrotu przez rufę [...] czy poznać tajemnice sposobu pływania pod wiatr.'' (Krzysztof Król, ,,Wirtualne życie'', Wprost 8.11.98).

A jednak, symulacja taka nie w pełni oddaje wielkości, które istnieją realnie. Czego tu brakuje? Zauważmy, że np. prędkość wiatru zakodowana cyfrowo musi się wyrażać skończonym ciągiem cyfr, skoro komputer ma skończoną pamięć i pracuje w skończonym czasie, podczas gdy w przyrodzie może się ta prędkość wyrażać liczbą niewymierną. A może nawet nieobliczalną?

Co da się rzec na obronę symulacji? Jest ona prawdomówna w tym sensie, że dostarcza tyle prawdy, ile na ogół potrzebujemy. Odcina wprawdzie nieskończenie wiele miejsc po przecinku, ale należą one do tak małego rzędu wielkości, że jest on praktycznie zbędny. Dlatego tak jesteśmy radzi np. z cyfrowych nagrań dźwięku. Nie mają one dokładności absolutnej, ale mają i tak większą niż ta zawarta w przedziale naszych możliwości percepcyjnych. W tym sensie, kodowanie cyfrowe jest dobre na wszystko.

Za wcześnie jednak, by świętować pełny sukces SI. Definicja liczb obliczalnych jest u Turinga złączona z dowodem, że istnieją liczby nieobliczalne. Obliczalne, przypomnijmy, to takie, dla których istnieje algorytm ich znajdowania. Nieobliczalne to pozostałe, a więc nie dające się uzyskać na drodze algorytmicznej.

Maszyna cyfrowa, działając pod dyktando algorytmu, nie umie obliczać liczb nieobliczalnych. To pewne. Jest więc równie pewne, że nie może tego umieć sztuczna inteligencja, stanowiąca atrybut maszyny cyfrowej. Tak dochodzimy do pytania: jak ma się do tego inteligencja ludzka? Czy jej możliwości nie rozciągają sie ani trochę dalej? Czy to, co nazywamy INTUICJĄ, a więc zdolnością umysłu do natychmiastowego ,,widzenia'' rozwiązań, poza językiem i wszelką procedurą, nie wyprowadza nas poza ograniczenia maszyny cyfrowej?

Na to pytanie, jedni dają odpowiedź twierdzącą, czerpaną w własnych doświadczeń umysłowych, inni - nihilistyczną, czyli taką, która unicestwia rzekomą (w ich mniemaniu) intuicję. Ta druga pokrywa się ze stanowiskiem tzw. mocnej SI (strong AI). Wedle tej doktryny, co jest produktem intuicji, nie zaś procedury mechanicznej, nie więcej zasługuje na wiarę niż, powiedzmy, prorocze sny. Jeśli porównujemy Paganiniego z jakimś grajkiem, który też nie robi błędów technicznych (dających się wyrazić cyfrowo), ale nie jest Paganinim, to różnica jest subiektywna; obiektywnie biorąc, Paganini nie góruje nad tym drugim.

Chyba, że... To ,,chyba'' nihilistów odnosi się do supozycji, że choć ani Paganini ani jego słuchacze nie potrafią sami zapisać cyfrowo swych procesów umysłowych, to jednak ich mózgi operują symbolami w postaci, powiedzmy, impulsów elektrycznych, a te symbole układają się w łańcuchy cyfr w wyniku jakiegoś algorytmu biologicznego. Podmiot tych procesów nie potrafi rozpoznać algorytmu i stąd przypisuje je intuicji, ale za czas jakiś nauka uzyska taki wgląd w zjawiska neuronowe, że dostarczy cyfrowego wykresu rzekomej intuicji Paganiniego. Wtedy można będzie idealnie odtworzyć ją w komputerze, co zaświadczy, że nie jest to intuicja. To samo dotyczy smaku kulinarnego: w owej hipotetycznej przyszłości także wskazówkę ,,dodać do smaku'' da się zakodować cyfrowo.

Nihiliści mogą wygrać w tym sporze jeszcze na inny sposób. Niech zbudują komputer o następującej własności. Zapisujemy na jego dysku partyturę utworu, a on ją odtwarza z nienaganną poprawnością techniczną w pierwszym dniu eksperymentu. Gdy w kolejnym dniu puszczamy melodię, zauważamy, iż pojawiły się w wykonaniu nowe elementy, bliższe grze ludzkiego wirtuoza. Wreszcie przychodzi dzień, w którym komputer osiąga doskonałość Paganiniego. To by znaczyło, że Paganini to nic więcej niż maszyna cyfrowa. Czy coś takiego kiedyś się zdarzy? Jeśli włączymy do eksperymentu nasze wnuki, to w ich lub ich potomków imieniu spokojnie możemy powiedzieć: ,,pożyjemy, zobaczymy''.


Do początku tekstu