Trurl i Klapaucjusz byli uczniami wielkiego Kerebrona Emtadraty, który w Wyższej Szkole Neantycznej wykładał przez czterdzieści siedem lat Ogólną Teorię Smoków. Jak wiadomo, smoków nie ma. Prymitywna ta konstatacja wystarczy może umysłowi prostackiemu, ale nie nauce, ponieważ Wyższa Szkoła Neantyczna tym, co istnieje, wcale się nie zajmuje; banalność istnienia została już udowodniona zbyt dawno, by warto jej poświęcać choćby jedno jeszcze słowo. Tak tedy genialny Kerebron, zaatakowawszy problem metodami ścisłymi, wykrył trzy rodzaje smoków: zerowe, urojone i ujemne. Wszystkie one, jak się rzekło, nie istnieją, ale każdy rodzaj w zupełnie inny sposób.
To będzie oczywiście polemika z poprzednim tekstem Pawła Stacewicza: liczby w informatyce potrafią nie istnieć na wiele sposobów, w czym są bardzo podobne smokom.
Ale zacznijmy od matematyki. Tutaj oczywiście liczby istnieją, choć nie jest to istnienie samoistne. Matematyk potrafi długo i z uciechą opowiadać o ciekawych własnościach liczb rzeczywistych (wszystkich, lub o każdej z osobna), ale gdy to robi, to przynajmniej w duchu zakłada nie tylko istnienie samych liczb, ale również istnienie ciała liczb rzeczywistych. Teoria ciał nadaje sens istnienia pojęciom takim jak liczby rzeczywiste, wymierne czy zespolone. Łącząc je z pojęciem operacji, jakie na tych liczbach można wykonać bez potrzeby powoływania do życia nowych bytów, którymi będą wyniki owych operacji. Jeśli ktoś w tym miejscu pomyślał o programowaniu obiektowym i jego paradygmatach, to znaczy, że ma dobre skojarzenia. Tak, pomysł traktowania działań jako „czynności wewnętrznych” stosowany jest w matematyce, jak i w językach programowania (poza tym jest chlebem powszednim dla monad Leibniza).
W komputerach dane istnieją pod postacią zmiennych, czyli wyznaczonych miejsc w pamięci. Żeby uznać istnienie liczb, musimy mieć zmienne typu liczbowego gotowe do ich przechowywania. Wczesne języki programowania (Algol) mają pierwotne typy: integer i real (całkowite i rzeczywiste). Czytelnik powinien tu zauważyć, że o nieistnieniu liczb rzeczywistych od dawna dobrze wiemy – do tego potrzebny by był komputer analogowy. Racja. Nie wiem co przyświecało twórcom języka w takim wyborze słowa, nadmierny optymizm czy może zuchwałość, ale w nowszych językach zamiast real już przeważnie występuje określenie float. Jest to termin bardziej techniczny niż matematyczny, opisuje sposób przybliżonego zapisu liczby w pamięci.
Skoro nie liczby rzeczywiste, to może istnieją chociaż liczby wymierne? Też nie. Przybliżenie w zapisie float dotyczy każdej liczby, nie tylko tej o nieskończonym rozwinięciu dziesiętnym. Nader często jest tak, że x + y = x, również dla niezerowych wartości y. Z kolei działanie 0.1+0.1+0.1-0.3 nie daje wyniku zerowego, jak można się spodziewać (liczba 0.1 nie ma skończonego rozwinięcia w systemie binarnym). Zmienne float sprawdzają się w obliczeniach inżynierskich (przy rozsądnym używaniu), w zagadnieniach rozstrzygalności nie mają zastosowania.
A jak wygląda sprawa istnienia liczb całkowitych (integer)? Słabo. Przed Algolem wiele komputerów mogło ich w ogóle nie używać. O tym fakcie często się zapomina, ale komputery z lat czterdziestych wcale nie operowały na liczbach binarnych. Miały arytmometry posługujące się notacją BCD (Binary-Coded Decimal) – obliczenia prowadzone były na symbolach odpowiadających cyfrom dziesiętnym. Dopiero gdy zmienił się sposób liczenia, zaczęto na ciąg bitów zapisanych w rejestrze procesora mówić integer. Określenie na wyrost. Dzisiaj i z tego też się wycofano. Osiem bitów zapisanych w pamięci i tworzących bajt przeważnie określa się jako zmienna typu char (znak). Zmienna 16-bitowa bywa jeszcze opisywana jako word (słowo), co miało sens przy 16-bitowych procesorach, a częściej używa się słowa short. Zmienne 32- i 64-bitowe to long i long long. Nazwa „Integer” na nowo pojawia się dopiero w językach obiektowych jako nazwa typu złożonego, który w swoim wnętrzu musi radzić sobie z tym, że opisuje coś, co nie jest liczbą w matematycznym znaczeniu.
Skoro nie w informatyce stosowanej, to może choć w teoretycznej jest godne miejsce dla liczb? Niestety, tu również słabo nadają się one na pojęcie pierwotne. A już zwłaszcza wtedy, gdy narzędziem w rozważaniach ma być maszyna Turinga. Załóżmy, że chcemy liczyć kolejne cyfry rozwinięcia liczby π bezpośrednio ze wzoru na szereg Leibniza:
\frac{\pi}{4} =\frac{1}{1}-\frac{1}{3}+\frac{1}{5} -\frac{1}{7}\cdotsNajpierw musimy pokonać problem zapisu ułamków dziesiętnych (teoretycznie mamy do dyspozycji tylko liczby całkowite). To nie jest trudne. Ale natychmiast wystąpi problem zapisu liczby 1/3 – ta ma nieskończone rozwinięcie. Cóż z tego że mamy nieskończoną taśmę, skoro musimy przeznaczyć nieskończony czas na zapis tak banalnej rzeczy, jak prosty ułamek? Jeśli chcemy w ogóle otrzymać jakiś wynik w skończonym czasie, to musimy pogodzić się ze skończoną dokładnością i z góry określić ile cyfr nas zadowoli.
Oczywiście istnieją też algorytmy, dzięki którym komputery potrafią szybko znajdować kolejne cyfry rozwinięcia (znamy już ponad 1013 cyfr). Algorytmy te operują nie na liczbach jako takich, tylko na liczbach w konkretnym systemie pozycyjnym. Inaczej mówiąc, algorytmu stworzony do liczenia w systemie szesnastkowym (często używany w informatyce) nie da się zaadaptować do liczb w systemie dziesiętnym. I odwrotnie. W operacjach istotna jest nie tylko sama wartość liczbowa, a symbole (cyfry) tworzące jej zapis. Dla bliżej zainteresowanych opis algorytmu Czudnowskiego, najszybszego w chwili obecnej.
Gdy niżej podpisany uruchomił podany na stronie Wiki kod pythona, ze zdziwieniem (i satysfakcją) stwierdził że cyferki wyskakują z niego z prędkością kilkadziesiąt razy większą, niż ze znanego w Uniksach od dziesięcioleci języka bc służącego do obliczeń arbitralnej precyzji, a do trygonometrii używającego algorytmów pokrewnych leibniziańskiemu. Zwięzłość algorytmu też powinna dziwić — to tylko kilkanaście linijek kodu z bardzo dziwnymi długimi liczbami. Śpieszę więc z wyjaśnieniem, że moc tkwi w przywołanej w pierwszym wierszu bibliotece Decimal. Ta ma przeszło sześć tysięcy wierszy i jest kunsztowną realizacją arytmetyki, całkowicie oderwaną od maszynowej reprezentacji liczb.
Tak oto dotarliśmy do finału, w którym możemy stwierdzić: liczby w podstawach informatyki nie istnieją, lecz bardzo łatwo powołać je do życia w takiej formie, że rozwiązywaniu problemów służą lepiej, niż liczby „matematyczne”
❄ ❄ ❄
Tekst ten napisany został w niedzielę 23 grudnia, po wyczerpaniu „polemicznych możliwości” pod tekstem Pawła Stacewicza. Jednak publikację zlecam dopiero na wigilijną północ, by nie mącić nikomu tradycyjnego spokoju dnia Wigilii. Korzystając z okazji składam wszystkim życzenia pogody: ducha, ciała i aury. Oraz zachęcam do polemiki — szczególnie tych, którzy mają zdanie całkowicie odmienne od mojego.
Zachęcony ostatnim zdaniem wpisu, przyznaję szczerze, że mam pogląd całkowicie chyba odmienny. Piszę „chyba”, ponieważ nie do końca rozumiem, o czym we wpisie mowa. Wyrazem mojego niezrozumienia są następujące wątpliwości.
1.
O jakim istnieniu czy nieistnieniu mówimy?
Czy chodzi tu o fakt, że informatycy w ogóle, na żadnym poziomie swoich badań i implementacji nie wykorzystują matematycznego pojęcia liczby? Czy definiując zmienne typu integer, nie odnoszą się do pojęcia liczby całkowitej? Czy określając położenie obiektu w tak prostym interfejsie programistycznym jak Scratch, nie podają współrzędnych liczbowych? Czy Turing pisząc pracę pt. „On Computable Numbers…”, uznawaną za jeden z fundamentów informatyki teoretycznej, nie pisał o liczbach obliczalnych? Dziwne…
2.
We wpisie czytamy „Ale zacznijmy od matematyki. Tutaj oczywiście liczby istnieją…”
Czy informatyka nie jest jedną z dyscyplin najbliższych matematyce? Czy jeden z najprostszych obiektów matematycznych, a więc liczba naturalna, nie ma dla informatyków żadnego znaczenia? Czy tworząc matematyczne modele obliczeń informatycy nie posługują się matematycznym pojęciem liczby? Czy definiując sztuczne sieci neuronowe informatycy nie wprowadzają pojęcia liczbowych wag połączeń między sztucznymi neuronami?
3.
Czytamy także „Żeby uznać istnienie liczb, musimy mieć zmienne typu liczbowego gotowe do ich przechowywania?”.
Czy w nazwie „zmienna typu liczbowego” nie ma odniesienia do liczby w sensie matematycznym?
4.
Czytamy dalej: „Czytelnik powinien tu zauważyć, że o nieistnieniu liczb rzeczywistych od dawna dobrze wiemy – do tego potrzebny by był komputer analogowy. Racja.”
Czy komputery analogowe i modele obliczeń analogowych nie są przedmiotem zainteresowania informatyków? Czy definiując modele obliczeń analogowych-ciągłych – tak jak zrobił to Shannon – nie odwołujemy się do matematycznego pojęcia liczby rzeczywistej? Czy komputery analogowe operujące na sygnałach ciągłych nie mogą z jakichś zasadniczych względów zaistnieć?
5.
Czytamy jeszcze: „Jeśli chcemy w ogóle otrzymać jakiś wynik w skończonym czasie, to musimy pogodzić się ze skończoną dokładnością i z góry określić ile cyfr nas zadowoli.”
Czy skończona dokładność nie ma żadnego matematycznego punktu odniesienia? Czy nie jest nim taka a taka liczba w znaczeniu matematycznym?
6.
I jeszcze: „Skoro nie w informatyce stosowanej, to może choć w teoretycznej jest godne miejsce dla liczb? Niestety, tu również słabo nadają się one na pojęcie pierwotne.”
Czy nieistnienie liczb w informatyce polega na tym, że nie są one pierwotnym pojęciem informatyki teoretycznej? A poza tym istnieją i są potrzebne?
7.
Kolejny cytat: „Algorytmy te operują nie na liczbach jako takich, tylko na liczbach w konkretnym systemie pozycyjnym”.
Czy fakt, że algorytmy (czy też maszyny) operują na pewnych zapisach liczb, oznacza, że dla informatyki nie jest w ogóle istotna liczba jako taka? Czy pojęcie zapisu liczby nie wymaga wcześniejszego zdefiniowania i zrozumienia pojęcia liczby?
8.
W podsumowaniu zaś czytamy: „liczby w podstawach informatyki nie istnieją, lecz bardzo łatwo powołać je do życia w takiej formie, że rozwiązywaniu problemów służą lepiej, niż liczby „matematyczne””.
Czy teoria obliczeń i modele obliczeń nie należą do podstaw informatyki? Czy w tych teoriach/modelach nie używamy liczb w sensie matematycznym i funkcji określonych na pewnych dziedzinach liczbowych? Czy można powołać do życia „liczby informatyczne” nie wzorując się na liczbach po prostu, czyli liczbach w znaczeniu matematycznym?
Wybacz Jarku natłok powyższych pytań, ale uznałem, że jest to najlepszy środek stylistyczny do tego, by wyrazić swoje ZDZIWIENIE tezą, iż liczby w informatyce NIE ISTNIEJĄ…
1. Jeden z aksjomatów Peano mówi, że „dla każdej liczby naturalnej istnieje liczba naturalna będąca jej nastepnikiem”. W przypadku liczb typu „integer” to nieprawda — liczba 65535 (0xFFFF) nie ma następnika. Tak jest w systemach 16-bitowych, za czasów których jeszcze bez skrępowania posługiwano się nazwą „integer”. Dzisiaj taką „nie-peanowską” liczbą (typu L) może być 18446744073709551615, ale do ℵ0 jeszcze jej daleko. Możemy to nazwać nieistnieniem pierwszego rodzaju — dobrze musiał o nim wiedzieć Alan Turing, pisząc o taśmie nieskończonej długości.
2. Ja nawet uznaję, że informatyka jest nie tyle bliska, co stanowi część matematyki. Nie należy z tego jednak wyciągać zbyt pochopnych wniosków. Topologia też jest częścią matematyki, a nie ma dla niej znaczenia wiele „najprostszych obiektów matematycznych”, o jakich myślał Euklides.
Ale skoro już jesteśmy przy starożytnych Grekach, to nasunęła mi się teraz taka definicja informatyki: to matematyka, w której ważna jest jedność miejsca i akcji. Analityk pisze wzór:
4 \sum_{n=1}^{\infty} \frac{(-1)^n}{2n+1} = \pi
i dla niego to π jest policzone z chwilą postawienia ostatniej kreseczki w powyższym zapisie. Informatyk na to wzrusza ramionami i mówi, że przy czymś takim ludzie zaczną wychodzić z teatru zanim głowica maszyny Turinga na dobre się rozrusza.
Informatyk zawsze musi też patrzeć na miejsce, w którym puszcza w ruch swoje modele, by go starczyło. Wagi w sieciach neuronowych są na to dobrym
przykładem. Liczby z przedziału zapisać łatwo w przeznaczonym miejscu, jeśli wcześniej określimy precyzje tego zapisu. W informatyce stosowanej bardzo często cały zakres zmiennej typu (zbliżonego do) „integer” traktuje się jak jednostkowy przedział liczb (jak choćby kodowanie koloru w HTML/CSS).
3. W sensie matematycznym nie ma. W nazwie „zmienna typu liczbowego” jest odniesienie lingwistyczne do liczb. Odniesienie matematyczne jest do przedziałów liczbowych (i jeszcze do czegoś innego — w przypadku zmiennych float).
4. Są. Jednak komputery analogowe całkowicie wymykają się aparatowi teoretycznemu, jaki został stworzony wokół maszyny Turinga, mniej więcej pokrywającemu się znaczeniowo z terminem „informatyka”. To zresztą bardzo ciekawa rzecz — zaistniała potrzeba powstania nowej dyscypliny matematycznej (niejako „konkurencyjnej” do teorii liczb i paru innych pokrewnych), a do zajmowania się komputerami analogowymi wciąż wystarcza poczciwa analiza matematyczna.
5. Czy za definicję „liczb w znaczeniu matematycznym” możemy uznać spełnianie aksjomatyki Peano? Jeśli tak, to do opisu dokładności można używać liczb w słabszym znaczeniu. Nawet jeszcze słabszym, niż ma je typ „integer”.
Tutaj pozwolę sobie przypomnieć o kolejnym ZDZIWIENIU, które powinno było nastąpić, lecz się po drodze zagubiło. Wrócę do liczby 1.1, której nieistnienie należy do zupełnie innego rodzaju, niż nieistnienie liczb maxint+1 i większych. Program „a=1.1; print(a)” daje wynik:
1.10000000000000008881784197001252
Jest to niezależne od języka i od sprzętu — taka jest własność zmiennych float, że nie potrafią przyjąć wartości dokładnie równej 1.1. A to wydawałoby się taka prosta, zwyczajna liczba.
6. Tak — nieistnienie liczb w informatyce polega tym, że słabo nadają się za podstawę, nawet w tej teoretycznej. A ja polemizuję z teza przeciwną (że są najbardziej pierwotne). Zgadzam się, że istnieją poza tym — czyli musiały zostać stworzone przez informatyków.
7. Tak, trafione w samo sedno: dla algorytmu nie jest w ogóle istotna liczba jako taka. Podany jako przykład algorytm nie musi „wiedzieć”, że liczy liczbę π. Jego istotne (i wydzielone) elementy operują na cyfrach. A te z kolei nie muszą wiedzieć, że operują tylko na fragmencie dłuższego zapisu liczbowego.
8. Właśnie tak to się odbywa — tworząc model obliczeń, trzeba najpierw powołać do życia model liczb. Informatyk nie ma tak lekko jak matematyk (analityk, dajmy na to), że sobie napisze: „a tu w zmiennych a, b, c i d będę aproksymował szukane liczby, o których na razie nic nie wiem”. Jeśli informatyk zastosuje wprost znane z matematyki teorie obliczeń i długotrwale będzie sumował liczby 1.1, to może nawet „udowodnić”, że 4=7.
Ktoś powiedział, że „Bóg stworzył liczby naturalne, wszystkie inne są wymysłem matematyków”. Najwyraźniej gdy Bóg rozdawał ludziom liczby, informatyków przy tym nie było — oni nawet liczby naturalne musieli sami sobie stworzyć. Boska nauka?
Starałem się dołożyć wszelkich starań, by z tytuł notki dało się od razu wywnioskować intencje autora. Być może nie udało mi się to do końca. Ale skoro udało się wywołać ZDZIWIENIE — to też dobrze. Zdziwienie to bardzo budująca postawa. Przed laty w jednym z zacnych periodyków popularnonaukowych była rubryka pod nazwą „Zdziwienia”. Tekst o liczbach w informatyce by tam dobrze pasował.
Nie tylko (ale zwłaszcza) jeśli traktuje sie informatykę jako „część matematyki”, to czemu konstruowane przez informatykow 'obiekty’ o jakich napisał P. Jarek nie miałyby być okreslone mianem liczb („informatycznych”)?
(Jaki płynąć by miał pożytek z przyjęcia tego, że 'obiekty’ wystepujace w informatyce jeśli sa liczbami- to tylko z nazwy?).
Skoro „poszczególne rodzaje liczb są definiowane za pomocą aksjomatów lub konstruowane z bardziej podstawowych pojęć, jak zbiór, czy typy liczb prostsze od konstruowanego” (chyba zupelnie trafnie oddająca istotę „sprawy liczb” Wikipedia), to czy procedura informatycznej konstrukcji z aksjomatów określonych
-z jednej strony chęcią zastosowania dobrze „ogranych” matematycznych zależności (jakie przynoszą z sobą poszczególne rodzaje matematycznych liczb),
– a z drugiej dostępnymi możliwościami informatycznego (fizycznego) nośnika,
tak istotnie odbiega od matematycznego sposobu konstruowania kolejnych rodzajów liczb, że bardziej wartościowe jest porzucenie miana „liczby” niż trzymanie się go?
Przywołując (z coraz częściej zawodnej pamięci) starą definicję Cassirera „Każda treść jaką można liczbie przypisać zawiera się w relacjach, których jest intelektualnym centrum”- w informatyce „znaczenie” dla wyniku „przetwarzania informacji” ma tylko wąski przedział ściśle wybranych fizycznych własności elementów maszynerii hardware’u- tak, że chyba jasno i krótko (parę przykładów podal P. Jarek) można je przedstawić jako właśnie zbiór aksjomatów „od-nośnikowych” (obok tych tradycyjnie „matematyko-genetycznych”). W przypadku „nie-liczbowych” obiektow (pojęć i ich symboli) sprawa ich rozumienia zdaje mi się bardziej „uwikłana” w nie-idealne związki i polegać na regularnym porozumieniu uzytkowników i ekspertów (z dziedziny użycia danego pojęcia) oraz „sprawach korespondencji” z realnością o zakresie własności zupełnie nie-wyabstrachowanym… Użyteczność liczb „informatycznych”, ich możliwość zastosowania do rozmaitych „interpretowanych” przekształceń (obliczeń) sprawia, że traktowanie ich jako obliczeniowych elementów („pozycji w idealnym uszeregowani”- znów Cassirer) wydaje mi się być trafne.
Dlatego pytam o pożytek z odejścia z matematycznego kontekstu/koncepcji 'liczby’ w opisie elementarnych/podstawowych informatycznych elementów składowych? Chyba, że w deklaracji nieistnienia liczb w informatyce chodzi o zupełnie nie-pragmatyczne i nie-pozytywne powody: założeń „wstępnych” co do idei liczb (istniejacych niezależnie od banalnych ograniczeń materii i paznajacego). P. Jarek pokazał, że „Informatyczne liczby” są ograniczone (np. z góry) ale przecież można to traktować jako konsekwencję przyjęcia aksjomatów (nawet jeśli „od-nośnikowych”) lub sposobu konstrukcji – analogicznie jak ograniczoność (z dołu) najnaturalniejszych liczb (naturalnych).
(A krotko mówiąc: Czy zbiór rzeczywistych liczb z przedziału od 1 do 10, ale z dziesiętnym rozwinięciem tylko do drugiego miejsca po przecinku przestaje być zbiorem… liczb?)
Jaki płynąć by miał pożytek z przyjęcia tego, że „obiekty” występujące w informatyce jeśli są liczbami – to tylko z nazwy?
Wyłącznie porządkowy. Stoimy przed wyborem: albo (1) te obiekty są liczbami, lecz innymi niż „liczby matematyczne” i nie ma do niech zastosowania choćby arytmetyka Peano, albo (2) liczby w informatyce nie istnieją.
Przyjęcie jednego z wymienionych poglądów świata nie odmieni, to tylko osobista postawa wobec dualizmu rzeczy. Zdaje się, że pogląd (1) przynależy bardziej praktykom informatyki (sprawdza się! naprawdę!), a drugi pasuje do teoretyków. Jeśli zabrałem głos w tej kwestii (a nawet wywołałem małą burzę), to z tego powodu, że przyjęcie a priori twierdzenia, że „liczby są podstawą wszystkiego w informatyce” zdaje mi się błędem.
Czy zbiór rzeczywistych liczb z przedziału od 1 do 10, ale z dziesiętnym rozwinięciem tylko do drugiego miejsca po przecinku przestaje być zbiorem… liczb?
Bardzo dobre pytanie. I prosta odpowiedź na nie — informatyka z lubością zajmuje się takimi zbiorami. Ograniczonymi. Ten ma moc wyrażony naturalną liczbą 901 (ładnie mieści się w dziesięciu bitach — 1024). Informatyka świetnie sobie też radzi z większymi zbiorami, takimi o mocach 10 do potęgi 20 trylionów — wyliczona liczba π jest jednym wyróżnionym elementem tego zbioru. Ale jakieś alefy? Poproszę drugie drzwi na lewo, tam siedzą matematycy.
Uporządkowanie przedstawienia sprawy jak najbardziej może mieć pozytywny wynik.
Mam tylko wątpliwości definicyjne- czy takie rozróżnienie (zamiana „informatycznych liczb” na „informatyczne obiekty”) nie będzie wymagało (dla porządku) modyfikacji „rozumienia” pojecia liczb.
(Pozostawię zatem z boku sprawę tego czy pionierzy/ideolodzy informatyki mieli na myśli sprowadzenie królestwa matematycznych abstraktow na ziemię czy tylko wykorzystanie jawiących im się analogii pomiędzy ich pomyslami a przetwarzaniem liczb.)
W matematyce po prostu liczb (bez do określenia) nie ma, mamy różnie konstruowane/definiowane zbiory różnych liczb i trzeba by przyjąć zasadę, dla której zbiór wg tych zasad zdefiniowanych obiektów o mocy 1024 nie jest zbiorem liczb.
Przywołałem także cytatami kilka filozoficznych intuicji- z czasów przed informatyczną erą ale autorstwa matematycznie wykształconej osoby promującej filozoficznie przedstawić idee zarówno „bytu” pozwalającego mierzyć czy porządkować (własności drugiego rzędu czy intensji ekstensji – choć to już określenia liczby Carnapa) ale i opiewającej idealną konstrukcję przekrojów Deddekinda. I tu (w filozofii) także przydałaby się jakaś jasna demakracja umożliwiająca odmowę informatycznym obiektom miana („jakichś tam”) liczb. XlX i XX wieczna fizyka pogrążyły ostatecznie (pragmatyczną koniecznością istnienia do opisu/miary/porządkowania przedstawiających się w rzeczywistości zjawisk) zastrzeżenia starożytnych Greków co do tego czy liczby całkowite ujemne to „prawdziwe liczby”. Gdyby kryterium odmowy miana liczb była zawiłość i brak intuicyjności aksjomatów oraz ich uwikłaniaew dostosowanie do obserwowanych własności rzeczywistych (skwantowamych) zjawisk, to i kwaterniony musiały by „przestać być” liczbami. Zatem zgodzę się na nowy lepszy porządek- proszę tylko o jego jasne zasady.
Komentarz k-ma (z dnia 28.12.2018, godz. 20.55 ) trafił, moim zdaniem, w sedno:
Jaki pożytek dla informatyki (zarówno praktycznej, jak i teoretycznej) może płynąć z porzucenia matematycznych koncepcji liczb (np. naturalnych, rzeczywistych, obliczalnych, nieobliczalnych itp, itd…).
Są to wprawdzie obiekty idealne (a nie realne, tak jak fizyczne reprezentacje liczb w pamięci komputerów), ale studiując je, można dowiedzieć się wiele o możliwościach realnych komputerów. Studiując je, możemy na przykład uzyskać wiedzę o górnych ograniczeniach tychże możliwości. Na przykład, jeśli przyjmiemy, że realne „liczby informatyczne” spełniają mniejszą liczbę aksjomatów, lub bardziej restrykcyjne aksjomaty, niż idealne „liczby matematyczne”, to na pewno za pomocą realnych ”liczb informatycznych” nie można będzie zrealizować informatycznie tych zadań, których (z mocą dowodu matematycznego) nie można zrealizować za pomocą idealnych „liczb matematycznych”. Podobnie: jeśli pewnego problemu, np. problemu stopu, nie można rozwiązać przy użyciu maszyny o nieskończonych zasobach (np. pamięciowych czy czasowych), to nie można go zrealizować także przy użyciu maszyny o zasobach skończonych.
Z punktu widzenia filozofii informatyki tego rodzaju podejście ma charakter bardziej epistemologiczny (dowiadujemy się czegoś) niż ontologiczny (nie zakładamy np. istnienia nieskończonych obiektów w świecie) – ale jest bardzo efektywne. Stosował je m.in. Turing (prekursor informatyki teoretycznej).
Jarek napisał w odpowiedzi na wspomniany wyżej komentarz k-ma: pogląd, że „liczby w informatyce nie istnieją” pasuje do teoretyków.
Moim zdaniem jest wręcz przeciwnie.
To informatycy-teoretycy, np. specjaliści od modeli obliczeń (Tuing, Shannon – by wymienić najb. zasłużonych), opierają swe badania i modele na wstępnym założeniu, iż takie czy inne obliczenia (np. cyfrowe, analogowe, kwantowe) wymagają opisu za pomocą funkcji określonych w określonej dziedzinie liczbowej. Na przykład: funkcje rekurencyjne, opisujące w teorii realne obliczenia cyfrowe, są określone w dziedzinie liczb naturalnych (definiując te funkcje zakładamy także arytmetykę) , zaś rekurencyjne funkcje rzeczywiste, opisujące w teorii realne obliczenia analogowe, są określone w dziedzinie liczb rzeczywistych.
Co więcej, wydaje się, że tak pojęte jak wyżej, badania informatyków-teoretyków są dla informatyki praktycznej niezbędne również w tym sensie, że otwierają i penetrują (niejako zawczasu) pewne możliwe ścieżki realnych zastosowań. Na przykład: w tej chwili badamy teoretycznie różne modele hiperobliczeń (chociażby przyspieszające maszyny Turinga), które być może, w przyszłości znajdą takie czy inne przełożenie na informatyczną rzeczywistość.
W odpowiedzi Jarka znajdujemy także końcową sugestię: „Ale jakieś alefy? Poproszę drugie drzwi na lewo, tam siedzą matematycy.”
Czy Turing nie był matematykiem, który zapoczątkował, a później współtworzył, badania informatyczne? Czy nie interesowały go alefy?
Mnie do Turinga oczywiście daleko (być może nieskończenie ), ale jako ilustrację i szerszy kontekst dla powyższych moich uwag mogę podsunąć do lektury pewien mój opublikowany tekst nt. doniosłości kategorii nieskończoności w informatyce teoretycznej: http://stac.calculemus.org/pdf/Stacewicz-Czy-informatykom-musi-wystarczyc-niesk-potencjalna-publikacja-2018.pdf.
W wersji slajdowej zaś: http://stac.calculemus.org/pdf/Stacewicz-Czy-informatykom-musi-wystarczyc-niesk-potencjalna-konf-Poznan-2016.pdf
Ja rozumiem i wręcz podziwiam skrajnie praktyczne nastawienie Jarka (ilość i jakość podawanych przezeń przykładów imponują!).
Z tego jednak, że Jarek czy ktokolwiek inny przyjmuje takie nastawienie nie wynika, że nie istnieją w obrębie informatyki badania stricte teoretyczne, które jak do tej pory, nie mogą obyć się bez tradycyjnego, tj. matematycznego, pojęcia liczby.
Pingback: O różnych sposobach istnienia i nieistnienia liczb Rozmyślanie noworoczne na tle nieciągłości czasu | Polemiki i rozmówki w "Cafe Aleph"