Filozoficznie o programach komputerowych

Z Otwarta edukacja
Skocz do: nawigacja, szukaj

Informacje o module:

  • Poziom: Podstawowy
  • Profil: Dla humanistów i pasjonatów


Automatyczne obliczenia

Przyzwyczailiśmy się do automatów, których pełno jest wokół nas. Dla przykładu na ruchliwych ulicach spotyka się czasem przejścia dla pieszych z przyciskiem przełączającym światła. Taki automat ma szereg stanów, różniących się między sobą: stan w którym świeci się dla samochodów światło żółte, stan w którym świeci się światło zielone i.t.d. Automat jest zbudowany w taki sposób, że zawsze z danego stanu przechodzi do tego samego stanu następnego.

System iteracyjny

Automat można scharakteryzować opisując jego stan w danej chwili oraz zasady przejść między kolejnymi stanami. Istotę takiego działania trafnie scharakteryzował polski matematyk Z. Pawlak przy pomocy pojęcia systemu iteracyjnego. Taki system składa się z pamięci i funkcji określającej zmiany jej stanu. Funkcja ta nazywana jest funkcją przejścia. Podanym przez Pawlaka przykładem systemu iteracyjnego jest kostka do gry, którą odwracamy zgodnie z określonym algorytmem (na przykład: 1 -> 3 -> 4 -> 2 -> 1). Każdy deterministyczny system cyfrowy – niezależnie od jego złożoności – działa w taki właśnie sposób.

Komputer = maszyna uniwersalna

W przykładzie ze światłami elementami pamięci są konkretne urządzenia techniczne: przycisk, światła, zegar. W dzisiejszych czasach – gdy komputery są w powszechnym użyciu, nie wydaje się niczym dziwnym propozycja, by w miejsce tych różnorodnych elementów wprowadzić jednorodne elementy pamiętające: komórki pamięci komputera, a połączenia między elementami zastąpić połączeniami przekształcającymi ten stan na fizyczną realizację. Na przykład: włączenie napięcia na żółtej żarówce, gdy stan odpowiadającej jej komórki pamięci wynosi 1. Przewaga urządzeń sterowanych komputerem uwydatnia się wówczas, gdy rośnie złożoność systemów. Prosty automat sterujący światłami można zbudować z użyciem kilku elementów. Jeśli mamy do czynienia z siecią skrzyżowań, na których musimy zapewnić synchronizację zmian świateł – komplikacja takiego urządzenia byłaby zbyt duża.

Implementacja

Aby zastosować komputer w opisany powyżej sposób, należy wykonać dwie kolejne operacje. Najpierw musimy stworzyć dokładny opis (model) fragmentu systemu, a następnie przenieść go do pamięci komputera. Takie postępowanie nazywa się implementacją. Implementacją (na przykład implementacją systemu sterowania światłami) nazywa się przy tym zarówno sam gotowy system komputerowy, jak i proces proces jego tworzenia.

Pojęcia i symbole w filozofii

Czy człowiek w ogóle potrafi myśleć bez posługiwania się symbolami? To trudne pytanie, gdyż w myślach zaciera się różnica między słowami języka którego używamy do porządkowania myśli, a uczuciami. Wielki spór filozoficzny toczony przez wieki dzielił empirystów i racjonalistów. Pierwsi uważali, że pojęcia jakimi operujemy rodzą się na podstawie bodźców zmysłowych (empirii) z których budujemy doznania i idee (czyli pojęcia). Racjonaliści uważają, że nie wszystko pochodzi z empirii (doświadczenia). Matematyka nie powstała wskutek porządkowania pomiarów! To można udowodnić (racjonalizm zwyciężył!).

Symbole jakimi się posługujemy możemy utożsamiać z pojęciami.

Komputer = logika ucieleśniona

Trzy w jednym

Najmniejsza komórka pamięci komputera może pamiętać jedną z dwóch wartości. Odpowiada to wprowadzonej w teorii informacji podstawowej jednostce: bitowi. Taka najprostsza informacja, to na przykład odpowiedź na pytanie: „orzeł czy reszka?”. Ponieważ komputery używamy do przetwarzania informacji - wielkość pamięci komputerów określa się także w bitach (choć ze względów technicznych w praktyce stosuje się nieco większe jednostki: 1 bajt = 8 bitów). Jeden bit pamięci można także użyć do zapamiętania wartości zmiennej logicznej (prawda / fałsz). W takim przypadku funkcja przejścia to nic innego, jak zbiór funkcji logicznych, określających nową wartość określonej komórki pamięci na podstawie aktualnej wartości wszystkich komórek. Następny stan każdego elementu wynika bowiem z aktualnego stanu (wartości zmiennych) wszystkich elementów. Stosowane niekiedy określenie „maszyna logiczna” ma więc w odniesieniu do komputerów dobre uzasadnienie. W komputerze następuje utożsamienie trzech różnych pojęć: elementu pamięci, jednostkowej informacji (bit), oraz wartości zmiennej logicznej.

Wirtualna rzeczywistość

Komputer jest urządzeniem autonomicznym. Będzie działał tak samo – niezależnie od tego, jak urządzenie wyjściowe „interpretuje” jego wyniki (nie ma znaczenia, czy zostanie zapalone żółte światło, czy wyświetlony na ekranie napis: ‘zapal żółte światło’). Istotna jest wyłącznie struktura powiązań (możliwa do wyrażenia – jak pokazano – zdaniami logiki), oraz bieżący stan pamięci. Stan pamięci może być interpretowany przez nas. Możemy mówić, że w danej komórce pamięci jest pamiętany stan światła żółtego, a w innej – zielonego. Ale to jedynie nasza interpretacja (lub „interpretacja” zewnętrznych elementów wykonawczych maszyny) . Dla „duszka” zamkniętego wewnątrz komputera nie miałaby ona żadnego znaczenia.Możemy powiedzieć „świeci się żółte światło” w odniesieniu do obserwowanych świateł na ulicy, albo „obserwując” stan komórki pamięci komputera. Jeśli mówimy o stanach pamięci komputera, możemy odnosić się do systemu sterującego rzeczywiście światłami, albo symulacji. W tym drugim przypadku mówimy o świecie wirtualnym – stan pamięci może odzwierciedlać stan realnego światła, albo jedynie nasze wyobrażenia.W sytuacji, gdy odnosimy się do stanu systemu bez związku z rzeczywistością poza pamięcią komputera – mówimy o rzeczywistości wirtualnej.

Światy możliwe – prawda informatyki

Załóżmy, że dysponujemy pewnym spójnym opisem rzeczywistości (pewną teorią). Ten opis nie musi być prawdziwy. Może na przykład zawierać zdanie: „Paryż jest stolicą Niemiec”. Jednak nie może zawierać zdań sprzecznych. Mówimy, że taka teoria opisuje pewien świat możliwy. Dla każdego takiego opisu można stworzyć wirtualny świat, który będzie mu odpowiadał.

Pojęcie światów możliwych zostało wprowadzone w celu badania zdań modalnych. Teza jest możliwa, jeśli istnieje świat możliwy w którym jest ona prawdziwa, a jest konieczna – jeśli w każdym możliwym świecie jest prawdziwa. Zachodząca między światami możliwymi, a światami wirtualnymi analogia, pozwala na wykorzystanie badań dotyczących rzeczywistości wirtualnej, do opisu naszej rzeczywistości. Jeśli pewna implementacja (świat wirtualny) posiada określone cechy, to cechy te są możliwe. Jeśli każda implementacja posiada określone cechy – to są one konieczne.Na tej podstawie możemy sformułować swoiste „informatyczne kryterium prawdy”: jeśli pewien system możemy zaimplementować w komputerze, to jest on poprawny (możliwy). Dotyczy to nie tylko oczywistych przypadków symulacji komputerowych, ale także np. systemów gospodarczych (przypadki budowania struktur gospodarczych w oparciu o system komputerowy nie należą do rzadkości).Fundamentem informatyki są logika i implementacja. Dlatego teoretyczne spory należą w niej do rzadkości. Jeśli chcesz coś udowodnić – zaimplementuj to.

Informatyka a logika

Przypomnimy sobie szkolne lekcje logiki. Pamiętamy zapewne tabelki w których zapisywało się wartość zmiennych logicznych – po to, by ustalić wartość złożonego wyrażenia. Komputer działa podobnie, jak człowiek odczytujący wartość logiczną funkcji z tabelki. Podstawową różnicą jest to, że ten odczyt (ustalenie nowego stanu) powtarza się wielokrotnie. Czy komputer możemy uznać za maszynę, która sprawdza wartość logiczną zdania? Należałoby wówczas założyć, że na wejściu pojawiają się zdania prawdziwe i fałszywe, a na wyjściu – wynik analizy. Tak jednak nie jest! Komputer wskazuje („oblicza”) konsekwencje logiczne zdań prawdziwych. Dowolny zbiór zdań można przedstawić jako połączenie zbioru zmiennych, oraz powiązań między tymi zmiennymi. System iteracyjny jest równoważny sieci logicznej (lub inaczej – zbiorowi wyrażeń logicznych), która na podstawie zbioru wartości pewnych zmiennych wylicza wartość innych zmiennych (lub nowe wartości tych samych zmiennych). Każdy system komputerowy jest więc równoważny pewnemu zbiorowi zdań logiki pierwszego rzędu (funkcja przejścia = zbiór aksjomatów), który jest niesprzeczny i rozstrzygalny. Ilość zmiennych (stanów) jest w praktyce zawsze skończona (choć może być bardzo duża) a wszystkie funkcje są obliczalne. Biorąc pod uwagę twierdzenia limitacyjne, określające ograniczenia takich systemów - możemy stwierdzić, że systemy komputerowe nigdy nie obejmą wszystkich sensownych informacji.

Informatyczne perpetuum mobile

Uzyskany wynik może być dla wielu osób zaskoczeniem. Przecież każdy, dostatecznie dokładny opis rzeczywistości, można zaimplementować w systemie komputerowym. Nie istnieje jednak jeden, uniwersalny opis, zawierający rozstrzygnięcie wszystkich kwestii. Jeśli istnieje dowód jakiejś tezy – może on być zapisany w postaci formuł logicznych, a w konsekwencji – być zawartym w pewnym systemie komputerowym. Jednak człowiek zawsze może postawić sensowne tezy, których brak w jakimkolwiek wirtualnym świecie. Patrząc od środka – w komputerze nie ma niczego poza rozstrzygalnym zbiorem zdań. Ta fundamentalna prawda ma status podobny do twierdzenia zachowania energii. Próby stworzenia sztucznego mózgu, nie różniącego się co do możliwości od mózgu człowieka przypominają poszukiwanie perpetuum mobile. Pomysły w rodzaju wykorzystania elementów biologicznych w budowie komputera nie pozwalają na wyjście poza ograniczenia systemu iteracyjnego. I należy je ocenić dokładnie tak samo jak „genialne” pomysły konstruktorów perpetuum mobile. Sytuacja o tyle dziwna, że zasad budowy komputera nie musimy odkrywać (tak jak prawa zachowania energii), gdyż zostały one ustalone przez twórców komputerów.