Nasze wypowiedzi zazwyczaj coś znaczą (są zrozumiałe) i coś oznaczają (do czegoś się odnoszą). Za rozróżnieniem znaczenia i oznaczania przytacza się dwa argumenty:
1. Wyrażenia o tym samym znaczeniu można stosować zamiennie. Frege podał przykład: “Gwiazda Poranna = Gwiazda Wieczorna”. Jak wiadomo to ten sam obiekt (planeta Wenus). Jeśli “Gwiazda Poranna” i “Gwiazda Wieczorna” miałyby identyczne znaczenie i oznaczały to samo – można by je stosować zamiennie. Jeśli zamienimy w powyższej równości “Gwiazda Poranna” na “Gwiazda wieczorna”, to w miejsce stwierdzenia ważnego odkrycia otrzymamy trywialną tożsamość.
2. Wyrażenia odnoszące się do obiektów nie istniejących, albo sprzecznych: “Obecny król Francji” jest zrozumiałe, ale nic nie oznacza.
Jednak dla pewnej klasy języków te argumenty nie są istotne. Można (i należy) w ich przypadku utożsamiać znaczenie i oznaczanie. Właśnie taka sytuacja ma miejsce w informatyce. Z całą pewnością dotyczy to języków programowania. Są to sztuczne języki służące do programowania komputerów (te języki nie są przeważnie używane w trakcie działania komputera, tylko na etapie jego programowania). Znaczenie terminów w tym języku to miejsce w pewnej przestrzeni (jak to teraz w modzie mówić: wirtualnej), w której jest przechowywana pewna wartość, albo procedura ją obliczająca. Zastanówmy się, czy takiego rozwiązania nie można uogólnić na każdy dostatecznie precyzyjny język.
Czy w w języku nauki odróżnienie znaczenia i oznaczania nie jest konieczne?
Czy wyrażenia „2+2” oraz „4” mają identyczne znaczenie i oznaczają to samo? Frege twierdzi, że oba oznaczają liczbę 4, ale ich znaczenie jest inne. Ale przecież języki programowania zawierają arytmetykę. Najwyraźniej więc między poglądami logików i informatyków na ten temat powstaje różnica (informatycy nie są skłonni do teoretycznych sporów, pewnie stąd ta różnica nigdy dotąd nie stanowiła istotnego problemu). Informatyk uzna zapewne, iż “2+2″ to procedura obliczenia sumy z dwóch dwójek, a “4″ to liczba. Nie oznaczają więc tego samego. Frege wykonuje działania w pamięci i ogłasza, że oba wyrażenia oznaczają to samo. Ale on odnosi się w ten sposób do wyniku działania, a nie do wyrażenia opisującego to działanie. To chyba możemy uznać z a błąd. A w konsekwencji – stwierdzić, że w arytmetyce można utożsamiać znaczenie i oznaczanie. Nie widać też żadnych przyczyn, dla których rozciągnięcie tej tezy na całą matematykę stanowiło jakikolwiek problem. Czy dotyczy to także sformalizowanych języków teorii naukowych?
Zastanówmy się, jak do przykładu z planetą Wenus odniósłby się astronom. Ogłoszenie odkrycia astronomicznego powinno brzmieć: obiekt oznaczany terminem “Gwiazda poranna” i obiekt oznaczany terminem “Gwiazda wieczorna” to ten sam obiekt. Stwierdzenie to odnosi się do znaczenia wyrażeń. Nie można w tym zdaniu w miejsce “Gwiazda wieczorna” wpisać “Gwiazda poranna” tylko z uwagi na to samo znaczenie – odnosimy się bowiem do wyrażeń, a nie jedynie do tego, co one oznaczają. Podany na wstępie argument traci więc na znaczeniu. Nie ma żadnych problemów semantycznych z tego rodzaju wypowiedziami, gdyż mają one charakter metajęzykowy. Można stwierdzić, że: w wyniku dokonanego odkrycia w języku astronomii „Gwiazda poranna” i „Gwiazda wieczorna” stają się synonimami. Przed tym odkryciem w astronomii zamienne używanie tych wyrażeń nie było uzasadnione. A po jego dokonaniu jak najbardziej. Frege najwyraźniej zakładał, że znaczenie terminów jest stałe i nie może ulec zmianie. Ale to bardzo wątpliwe założenie.
Dobrze ilustruje to inny przykład dotyczący terminów fizycznych (dotyczy on własności, a nie obiektów, ale to niczego nie zmienia). Mamy dwa terminy: “masa bezwładna” (związana z oporem ciała, które chcemy przesunąć) i “masa ciężka” (związana z ciężarem). W ramach mechaniki klasycznej nie udało się wykazać ich równoważności ze 100% dokładnością. Teoria względności przyjmuje tą równoważność jako założenie. I wydaje się, że zamienność tych terminów w wypowiedziach w teorii Einsteina nie prowadzi do nieporozumień (chyba że w komentarzach dotyczących pewnych intuicji, a nie samej teorii), a w mechanice klasycznej to błąd. Język mechaniki klasycznej i język teorii względności to różne języki.
W przykładzie z astronomii odkryta tożsamość nie jest tak fundamentalna, więc zakłada się że nadal mamy do czynienia z dokładnie tą samą teorią, co przed jego dokonaniem. Jednak formalnie rzecz biorąc nie jest to prawda.
W jednej teorii rozważane terminy znaczą co innego i oznaczają dwa różne obiekty (których tożsamość jest problematyczna), a w drugiej stają się synonimami – właśnie dlatego iż oznaczają to samo.
Pozostaje jeszcze do rozpatrzenia drugi z argumentów za rozróżnieniem znaczenia i oznaczania. Dotyczył on bytów nie istniejących i sprzecznych. Ta kwestia jest trywialna: teorie naukowe o takowych się nie wypowiadają!
Możemy więc przyjąć iż rozważane rozróżnienie nie jest w nauce konieczne.
Język potoczny
W języku potocznym odróżnienie znaczenia i oznaczania jest koniecznością. Aby to uzasadnić przeprowadźmy eksperyment myślowy. Wyobraźmy sobie, że siedzimy przy stole na którym stoi butelka czegoś z procentami. Na butelce jest naklejona etykieta. Wśród nas siedzi obcokrajowiec, który nigdy nie widział butelek z etykietami. Rozmawiamy o tej konkretnej etykiecie próbując wyjaśnić mu co to jest. W języku rozumianym przez obcokrajowca słowo “etykieta” ma jedno konkretne odniesienie (naklejka na butelce stojącej na stole). Można uznać, że to odniesienie wystarczy do zrozumienia słowa. Ale po opróżnieniu butelki znika ona ze stołu. Czy nasz obcokrajowiec przestaje rozumieć słowo “etykieta”? Nie. Wie on np., że na etykiecie umieszcza się informacje o procentach i parę innych rzeczy. Potrafi więc zrozumieć znaczenie słowa, choć nie potrafi wskazać do czego ono się odnosi. Odróżnienie znaczenia i oznaczania okazuje się bardzo użyteczne.
Wśród abstrakcji matematycznych nie ma znikających butelek! Wygodnym jest założenie, że ten świat jest trwały i my go jedynie odkrywamy (jeśli ktoś zetknął się z Szybką Transformatą Fouriera rozumie, czemu któryś z wielkich matematyków uznał, że pochodzi ona wprost od Boga).
Można więc podejrzewać, że konieczność rozróżnienia znaczenia i oznaczania w języku potocznym wynika stąd, że język ten nie oddaje precyzyjnie struktury rzeczywistości. Budowanie języka w którym znaczenie jest tożsame z oznaczaniem, jest równoznaczne z tworzeniem precyzyjnych narzędzi opisu.
Semantyka języka informatyki
Zarówno matematycy jak informatycy są w praktyce realistami – czyli tak jak Platon zakładają realne istnienie obiektów do których się odnoszą (jak powiedział pewien matematyk: w okopach wszyscy jesteśmy platonikami). Pisanie programów jest w rzeczywistości czynnością polegającą na opisywaniu pewnego wirtualnego świata.
Różnica między matematykiem a informatykiem polega na tym, że ten pierwszy może sobie pozwolić na używanie skrótów myślowych i komentarzy w języku potocznym. Informatyk piszący program wszystko musi objaśnić dokładnie i ściśle – bez tego nie da się wykonać kompilacji na kod maszyny.
Pisząc „2+2” programista zawsze odnosi się do jakiejś procedury wyliczania wartości tego wyrażenia (a nie do wyniku). Czy można takie podejście uogólnić na język matematyki? Do czego odnosi się matematyk pisząc takie wyrażenia? Może do jakiejś procedury obliczeń? Jednak wyrażenia typu “2+2″ można obliczyć na wiele sposobów. Znaczeniem wyrażenia może więc być co najwyżej klasa algorytmów, które pozwalają na wyliczenie tego wyrażenia (zobacz Reinhard Muskens w tekście „Logical Forms Denote Algorithms”).
Tkwi w tym jednak pewna trudność. Jakie znaczenie mają zdania poprawne, ale opisujące zadania nieobliczalne? Problemem może być też uwzględnienie nieskończoności. W informatyce ona nie występuje ani na poziomie języka (skończony alfabet itd) ani semantyki. Nie wydaje się jednak, by były to trudności nie do przezwyciężenia.
Podsumowanie
To oczywiste, że Frege nie traktował wyrażeń w rodzaju “dwa plus dwa” jako odniesienia do sposobu wyliczenia wyrażeń. W jego czasach liczby można było uznać za obiekty abstrakcyjne, ale procedury ich obliczeń już nie. Ale dziwne jest to, że takie przekonania przetrwały ostatnie 100 lat.
Nie ma istotnych argumentów za tym, że w językach nauk ścisłych znaczenie nie jest tożsame z oznaczaniem. Nauka posługuje się do prezentacji teorii językiem naturalnym – a w jego przypadku nie ma wątpliwości, że semantyka jest inna.
Przy okazji warto zwrócić uwagę na to, że jeśli uznamy, że nasz język musi uwzględniać rozróżnienie znaczenie – oznaczanie, a język informatyki nie, w konsekwencji świat realny zawsze będzie bogatszy od świata komputerów. To silny argument przeciw mocnej sztucznej inteligenci (”strong AI”).
Jerzy Wawro
(tekst z roku 2009)