Obecny wpis ma charakter nietypowy, ponieważ przedstawiam w nim urywki dyskusji, która wynikła przy okazji analizy pewnego mojego tekstu nt. granic kodowania w informatyce (samego tekstu nie linkuję, ponieważ przygotowuję go do publikacji). Dyskusja była prowadzona drogą e-mailową, ale wspólnie z drugim jej uczestnikiem, postanowiliśmy udostępnić ją w blogu.
Dyskusja dotyczy niezbędności matematycznej kategorii liczby w szeroko pojętych badaniach informatycznych, obejmujących także metodologię i filozofię tej dyscypliny.
Ja uważam, że kategoria ta jest niezbędna.
I to zarówno w aspekcie syntaktycznym, gdy odwołujemy się do samych zapisów liczb w odpowiedniej notacji (tzw. numerałów), jak i w aspekcie abstrakcyjnym, gdy odwołujemy się do własności liczb rozumianych jako obiekty abstrakcyjne (np. takich własności liczb rzeczywistych, które gwarantują ciągłość zbioru R).
Mój oponent przekonanie powyższe traktuje co najmniej sceptycznie.
W przedstawionych dalej fragmentach rozmowy moje wypowiedzi są oznaczone jako PS (Paweł Stacewicz), zaś wypowiedzi oponenta jako Harry (co jest jego blogowym pseudonimem).
A oto zapis anonsowanej dyskusji:
1. (PS)
W mojej opinii zarówno pojęcie liczby, jak i pokrewne mu pojęcie kodowania liczbowego (tj. zapisywania danych przetwarzanych przez komputery za pomocą liczb), jest w metodologii i filozofii informatyki niezbędne. Obydwa pojęcia są niezbędne, o ile chcemy traktować informatykę szeroko, a nie tylko jako teorię i praktykę działania/wykorzystywania maszyn cyfrowych.
W informatyce rozumianej szeroko możemy rozważać chociażby maszyny analogowe, operujące na kodach rzeczywisto-liczbowych (de facto układy takie były konstruowane i opisywane teoretycznie przed erą maszyn cyfrowych); w przypadku obliczeń biologicznych też nie jest wykluczone, że przez odpowiednie układy są przetwarzane sygnały, którym odpowiadają liczby rzeczywiste; a są ponadto pewne przesłanki, żeby przyjąć, iż dla opisu sygnałów przetwarzanych przez komputery kwantowe są niezbędne liczby zespolone.
Można próbować ująć sprawę tak, że opis sygnałów przetwarzanych przez takie czy inne maszyny w kategoriach liczb jest tylko wygodnym zabiegiem teoretycznym…
Rzecz jednak w tym, że ten zabieg jest niezbędny do uprawiania informatyki teoretycznej, która w przeszłości inicjowała, a w przyszłości prawdopodobnie będzie inicjować, pewne rozwiązania praktyczne i fizyczne zarazem (np. komputery cyfrowe o takiej a takiej konstrukcji fizycznej).
2. (Harry)
Co do kwestii konieczności reprezentacji matematycznej (w informatyce), to powyższe Twoje wyjaśnienia nie bardzo przekonują mnie. Ten sam problem pojawia się bowiem na poziomie metateoretycznym: czy na pewno reprezentacja matematyczna jest niezbędna w informatyce teoretycznej? Jeśli tak, to dlaczego?
3. (PS)
Powołam się na trzy argumenty:
– argument historyczny: fizyczne komputery cyfrowe nie zaistniałyby bez koncepcji uniwersalnej maszyny Turinga (która jest obiektem matematycznym, powiązanym z pojęciami liczby obliczalnej i nieobliczalnej; a w dodatku jest punktem wyjścia teorii obliczeń, czyli fundamentu informatyki teoretycznej).
– argument metodologiczny (obecny pośrednio wyżej): poprzez pojęcie algorytmu (objaśnianego m.in za pomocą pojęcia f. rekurencyjnych albo UMT; czyli obiektów matematycznych ) informatyka jest w sposób konieczny (tak mi się wydaje) częściowo przynajmniej matematyczna; niemożliwa do uprawiania bez narzędzi matematycznych.
– inny argument metodologiczny: bez rozważań/dowodów matematycznych dot. UMT, a także aktualnie nieskończonych reprezentacji liczb nieobliczalnych (czego dotyczy anonsowany we wstępie artykuł), nie dowiedzielibyśmy się niczego o (minimalnych) ograniczeniach technik cyfrowych.
4. (Harry)
Nie do końca mnie zrozumiałeś. Chodziło mi o „matematyczność” w wąskim sensie, związanym z teorią liczb. W tym sensie maszyny Turinga i algorytmy nie są obiektami matematycznymi. Są właśnie obiektami typowo informatycznymi, w opisie których nie posługujemy się (lub ostrożniej: nie musimy posługiwać się) „językiem liczb”. Dlatego wydaje mi się, że podane przez Ciebie (powyżej) argumenty są nie do końca trafne.
Nawiązywałem do zawartej w Twojej ostatniej wypowiedzi tezy:
opis sygnałów przetwarzanych przez takie czy inne maszyny w kategoriach liczb jest teoretycznie niezbędny
Wydaje mi się, że przyjmujesz ją w sposób mało krytyczny i wyciągasz z niej mocne filozoficzne wnioski lub metafory (jak np. ta o dualnej, liczbowo-fizycznej naturze programów). Nawet gdyby okazało się, że ze względu na swój praktyczno-inżynieryjny charakter (np. dwójkowy charakter impulsów elektrycznych) nie może istnieć inna informatyka niż „liczbowa” (w co zdają się powątpiewać niektórzy praktycy), to i tak z tego nie wynika, że reprezentacje liczbowe programów są niezbędne w ich teoretycznej charakterystyce. Dość dobitnie świadczą o tym niektóre twierdzenia o nierozstrzygalności (m.in. twierdzenia Grzegorczyka o nierozstrzygalności teorii konkatenacji). Wynika z nich, że można skutecznie posługiwać się pojęciem obliczalności bez używania kategorii liczby (i co za tym idzie – bez pojęcia liczbowej reprezentacji).
5. (PS)
Rozumiem.
Uznaję jednak, że rozróżnienie między liczbami naturalnymi i rzeczywistymi jest niezwykle ważne dla informatyki, bo pozwala uchwycić/wyrazić/wyjaśnić różnicę miedzy technikami/maszynami cyfrowymi i analogowymi. Nawet jeśli ktoś twierdzi, że prawdziwe maszyny analogowe nie istnieją, to najbardziej podstawowe uzasadnienie tego faktu musi czerpać z założenia, że nie istnieją obiekty fizyczne odpowiadające liczbom rzeczywistym. Wtedy jednak odwołuje się do własności liczb (twierdząc coś o istnieniu bądź nieistnieniu maszyn, czyli obiektów informatycznych).
Zapraszam serdecznie wszystkich Czytelników bloga do kontynuacji powyższej wymiany argumentów…
Paweł Stacewicz

