What does „computing” mean?
A rejoinder to Dr. Paula Quinon

§1.  Dr. Paula Quinon has kindly shared with me the abstract of her recent work, titled  „What „computing” means?”  (see item 6 in References), and added some comments to more accurately explain her key ideas. Among the comments there was a link to S.Feferman’s paper „Turing’s 'Oracle’. From Absolute to Relative computability and Back.” (2016).

In that paper I find a passage which seems to me crucial from an epistemological point of  view, though it does not contain any direct references to philosophy. Before I quote and comment on it, let me express my personal attitude to some issues investigated by Ms. Quinon, and how I see their relation to the passage in question.

Frankly speaking, I am no expert in the issues of computing, and my interest in them is  rather, so to say, old-fashioned, going back to Kazimierz Ajdukiewicz’s project in the early 1960s, concerned with the justification of statements and decisions. The subject was discussed at the very impressive international conference in 1961, chaired by Ajdukiewicz, and at a Polish conference, meant like a general rehearsal of Polish participants before that important international meeting.

What I remember best from those events, it is Andrzej Grzegorczyk discussion on the intuitive reasons of accepting axioms in mathematical theories. How such intuitions might be scientifcally justified? This issue seemed then like a puzzle which nobody was ready to solve in the situation (in philosophy of logic and mathematics) at that time. Let us call it
Ajdukiewicz-Grzegorczyk problem.

According to my knowledge, only Hao Wang’s publications in the nineteen-nineties, born from his penetrative discussions with Gödel, are likely to shed some light at the methodological problem of justifying axioms. They are related to the distinction between absolute and relative solvability as considered by Feferman.

Let the fact of adding a new axiom to a theory be exemplified by the transition from arithmetic without the Axiom of Complete Induction — ACI (like, e.g., Presburger arithmetic) to the theory enriched with this axiom. This results in an enormous amplification of the scope of solvability. However, such a success cannot be a decisive argument for the truth of so extended theory. One’s clear intuitive apprehension of the ACI’s truth, as witnessed by what Gödel says about his personal experience of its obviousness, also cannot suffice. However, there does exist an intersubjective evidence for ACI, to wit the gigantic range of its successful applications in every domain of human activity — astronomy,
accounting, engineering etc. — the success experienced during the tens of centuries in each civilization.

§2. Now it is in order to pay attention to Turing’s idea of oracle as presented in the mentioned (above) study by Feferman entitled:  Turing’s 'Oracle’: From Absolute to Relative computability and Back. The respective passage (slightly by me abbreviated) runs as follows (emphasis by Feferman).

>>The subject of effective computability began with what were offered as analyses of the absolute limits of effective computability, the immediate primary aim was to establish negative  results of the effective unsolvability of various problems in logic and  mathematics.

From this the subject turned to refined classifications of unsolvability.  […] The germinal step, conceptually, was provided by Turing’s notion  of computability relative to an 'oracle’. At the hands of Post, this provided  the beginning of the subject of degrees of unsolvability, less directly provided by Turing’s notion, but mplicit  in it, were notions of uniform relative computability.<< Sec. 13.1, Introduction.

Turing  did not say much about the way in which an oracle works, but made a very significant  statement: that an oracle is no mechanical device, and that a machine equipped with that device can solve problems unsolvable for ordinary machines, lacking such a device. In other words, an oracle is able to find the value of an uncomputable function. More is said on the issue by Turing’s commentators like Andrew Hodges who offers convincing arguments that the decisions of an oracle are, in fact (in Turing’s intention) some acts of mathematical intuition. A similar stance has been taken by Roger Penrose. Thus, the amount of negative results diminishes with successive steps extending the scope of the solvability relative to an oracle. Now, as we know that the inventing of new, more powerful, systems of axioms is due to intellectual intuitions, and that axioms should be credited not only for their intutive obviousness, but much more for an immense number of successful applications, we attain at an answer to Ajdukiewicz-Grzegorczyk problem of the intuitive justification of axioms. This is to the effect that the intuition, being at the bottom of the process in question, proves its mettle by the fact the those axioms in which it has been expressed do successively pass the most severe exam of very differentiated and long-lasting applications.

§3. To conclude this part of discussion, let us observe that the interest in the idea of oracle, as involving the theory of grades of relative computability (solvability), is not confined to circle of speculative philosophers (to which belongs the present author). Presently it is found in the focus of highly technical discussions in mathematical logic. As well as in computer science; in the latter not only at the level of theoretical foundations, but also in the everyday practice. As testified by Feferman in the Conclusion of his penetrative study (Section 13.6.6):

>>The case had been made here that notions of relativized (as compared to absolute) computability theory are essentially involved in actual hardware and software design.<<

I made the above comment on some statements by Feferman, having been encouraged by the fact that his conribution was highly appreciated by Dr. Quinon. I am grateful for her message as when making use of it, I gained a new pespective in my thinking about computability.

In this perspective, I think that her research in the extensional equivalence and intensional differences between various treatments of Turingian model of computation should embrace the issue of the gradation of of relative computability; one may also say „relative solvability” for the former is a special case of the latter: computing is one of the ways of problem-solving.

Turings (1939) model of problem-solving makes more precise the notion of mathematical intuition, and then we can moce precisely put important questions, say: whether such an intuition can be obtained by artificial intelligence?

Now, when considering other theoretical models of computability (as those of Post, Church, Markov, Kleene, etc.), can we find in them an analog to relative computability as defined in terms of oracle? May be, the answer in the affirmative would be trivial, but I ask so being aware of my limited in that area expertise.

Another result which may be expected from Dr. Quinon’s inquiries is related to the question being the title of her abstract: „What „computing” means?” Should the notion of computing embrace the non-algorithmic activity performed by an oracle, namely that of finding the value (does it mean computing?) of an uncomputable function? If there is a puzzle in this question, what should be done to improve the terminology?

There would be more interesting issues inspired by  Quinon’s project,  but let those listed above suffice for the time being.

Recommended References

Items 1 and refer to the present author’s articles in which the concept of oracle is  discussed, fairly extensively, with quoting and commenting Turing’s (1939) texts. Note that in both titles there appears the phrase „ever higher solvability”  closely related to the notions of effective computability,  effective unsolvability and  relativized (as compared to absolute) computabilityas employed by Feferman (quotations in §1 and §2 and the title in §1).  Items 3 and 4 are concerned with the idea of oracle. Item  5 is related to that idea as dealing with Gödel’s theorem which can be used to exemplify Turing’s relative computability with respect to oracles.

1. „The progress of science from a computational point of view: the drive towards ever higher solvability” in: Foundations of Computing and Decision Sciences, Volume 44,  Issue 1, 2019, pp. 11-26.

2. „Does science progress towards ever higher solvability through feedbacks between insights and routines? ” in: Studia Semiotyczne,  XXXII no.2 (2018), pp. 153-185.

3.  A.M. Turing. „Systems of Logic Based  on Ordinals”. 1939. URL – local copy:  turing-1939.pdf.

4. Robert I. Soare.  Turing Oracle Machines, Online Computing, and Three Displacements in Computability Theory.  2009.  URL  – local copy:  soare.pdf.

5. Samuel R. Buss.  On Gödel’s Theorems on Lengths of Proofs I:
Number of Lines and Speedup for Arithmetics.  1992. URL  – local copy : god-buss.pdf.

6.  Paula Quinon. Abstract of the paper:  What computiong” means

The Church-Turing thesis identifies the intuitive concept of what means ˙to compute˙ with a formal model of computation. There are multiple models of computation and all of them can be proved to be extensionally equivalent (they capture the same functions, such as ˙identity˙, or ˙the next element of the sequence˙). However, despite the extensional equivalence, models differ intensionally (they capture different aspects of computation, for instance computations on abstract natural numbers are intensionally different from computations performed by a machine using concrete electric signals). The main objective of this project is to characterize intensional differences between various concepts of computation.

Postscript

When browsing  my notes  on solvability, I found a very illuminating remark by Gregory Chaitin. His phrase „intuition and creativity” may be interpreted as an exemplification of oracle,  while the infinite chain  of ever stronger axiomatic systems does resemble Turing’s ordering of logics.

Gödel’s own belief was that in spite of his incompleteness theorem there is in fact no limit to what mathematicians can achieve by using their intuition and creativity instead of  depending only on logic and the axiomatic method. He believed that any important mathematical question could eventually be settled, if necessary by adding new fundamental principles to math, that is, new axioms or postulates. Note however that this implies that the concept of mathematical truth becomes something dynamic that evolves, that changes with time, as opposed to the traditional view that mathematical truth is static and eternal.  See „Chaitin interview for Simply Gödel website” (9 February 2008).

Consider the phrase I have emphasised (through red type). Does the process of  „adding new fundamental principles” belong to the processes of computation? If so, which model of computation would explain the intuitive meaning of the a phrase like that? This is a question which seems to be implied by Quinon’s plan of comparing the existing explications of the term „computing”.

Zaszufladkowano do kategorii Bez kategorii, Epistemologia i ontologia | Otagowano , | 7 komentarzy

Jakie techniki obliczeniowe są przyszłością informatyki?

Niniejszy wpis kieruję przede wszystkim – choć nie tylko! – do uczestników moich zajęć na Wydziale Elektroniki i Technik Informacyjnych PW, pt. „Filozofia informacji i techniki”. Na kolejnym spotkaniu mamy dyskutować temat  technik obliczeniowych przyszłości. Umówiliśmy się, że osoby zapisane do dyskusji przedstawią swoje argumenty w blogu, w postaci osobnych komentarzy…

Czekając na pierwsze głosy, przedstawiam niżej – dla rozgrzewki i zachęty zarazem – krótką składankę argumentów, których używali studenci w roku ubiegłym.

Oto ona:

1. Pierwszą kwestią na jaką warto zwrócić uwagę jest fakt, że dzisiaj przy budowie tranzystorów, które stanowią konieczny element współczesnych komputerów cyfrowych, używa się krzemu. Naukowcy przewidują że do 2023 roku możliwości tego pierwiastka wyczerpią się i nie będziemy w stanie bardziej zmniejszyć układów, ponieważ będą nas ograniczały rozmiary elektronów.
W tym kontekście warto zauważyć, że często lepsze osiągi otrzymujemy nie dzięki rozwojowi hardware’u, lecz dzięki optymalizacji software’u. Dlatego, nawet kiedy wykorzystamy już całkowicie możliwości krzemu, mimo wszystko wciąż będziemy mogli z niego „wyciągnąć” więcej. Również za sprawą technik sztucznej inteligencji.

2. Jedną z najbardziej obiecujących technologii przyszłości, rozwijaną już dzisiaj, są komputery kwantowe. Pozwalają one na tysiące razy wydajniejsze przetwarzanie danych, ponieważ stosowane w nich q-bity (kwantowy odpowiednik bitów) mogą być jednocześnie w obu stanach (a w standardowych komputerach przyjmują tylko jeden stan).
Istnieje już IBM Q Experience – platforma online dająca każdemu dostęp do zestawu prototypów komputerów kwantowych IBM przez chmurę. Może być wykorzystywana do testowania algorytmów „kwantowych” czy innych eksperymentów.

3. Kolejne kilka technologii, o których wspomnę jest wymieniana jako jedne z możliwych technologii, które zastąpią komputery cyfrowe, jednak póki co są dalekie do jakiejkolwiek realizacji.
Pierwszą z nich są komputery oparte nie o przepływ elektronów, ale o przepływ światła. Jak wiemy światło osiąga największą prędkość we wszechświecie, czyli dałoby to możliwości zbudowania komputera o maksymalnej możliwej szybkości przesyłania sygnałów. Problemem jaki napotykamy jest to, że fotony nie mają masy i związane z tym problemy zbudowania czegoś podobnego do tranzystora w oparciu o światło.
Drugą ciekawą koncepcją jest zbudowanie komputera opartego o DNA. DNA posiada każdy organizm żywy, więc jeśli chodzi o zasoby to są one ogromne zwłaszcza, że może się ono odnawiać. Z pewnych opracowań naukowych wiadomo także, że za pomocą odpowiedniej manipulacji łańcuchami DNA udaje się rozwiązywać bardzo złożone problemy kombinatoryczne.
Kolejną ideą, która stanowi rozwinięcie powyższej, jest komputer biologiczny, którego i podstawowe elementy przetwarzające byłyby wzięte wprost z natury (np. byłyby to realne komórki nerwowe jakiegoś organizmu, np. szczura). Architektura takiego układu byłaby również wzorowana na naturze, np. przypominałaby architekturę mózgu.

Powyższe argumenty są oczywiście tylko „sygnałem wywoławczym”.
Czekam na głosy tegoroczne, równie ciekawe (i rozbudowane) jak powyższy miks.

Zapraszam do dyskusji WSZYSTKICH czytelników bloga — Paweł Stacewicz

Zaszufladkowano do kategorii Filozofia informatyki, Filozofia nauki, Światopogląd informatyczny | 14 komentarzy

Czy komputery mogą zagrozić naszej cywilizacji?

Jakiego rodzaju zagrożenia może nieść ze sobą wynalazek, którego zaistnienie pchnęło cywilizację ludzką na zupełnie nowe tory? Tory, po których ruszyliśmy w przyszłość z iście zawrotną prędkością. Ku automatyzacji, robotyzacji, wirtualizacji, globalizacji… W stronę zupełnie nowej jakości życia i międzyludzkiej komunikacji.

A jednak… Coraz częściej słyszy się o komputerowych uzależnieniach: od gier, portali społecznościowych, internetowej pornografii… Coraz głośniej o programach i systemach, które z powodzeniem zastępują lekarzy, prawników czy doradców podatkowych, a tym samym wysyłają na bezrobocie  całe rzesze dobrze wykształconych specjalistów. Coraz śmielej przebijają się do ludzkiej świadomości wizje autorów science fiction, w których sztuczna inteligencja przejmuje władzę nad światem…

Czy mamy zatem się czego bać? Czy są jakieś istotne racje po temu, by postrzegać komputery, technologie informatyczne oraz  towarzyszące im zjawiska społeczne jako pewnego rodzaju zagrożenie? Czy stanowią one zagrożenie w skali cywilizacyjnej? Czy mogą przyczynić się do degeneracji, upadku, a może nawet całkowitego zniknięcia naszej cywilizacji?

Do podjęcia powyższych pytań zapraszam przede wszystkim –  ale nie tylko! – uczestników seminarium pt. „Społeczeństwo informacji i wiedzy”, które prowadzę  na wydziale WEiTI PW…

Przydatne w dyskusji lektury, w tym wybrane prezentacje studentów,  znajdują się na stronie:

♦   Społeczeństwo informacji i wiedzy

Zapraszam serdecznie do dodawania komentarzy, najlepiej odnoszących się do siebie wzajem, czyli dyskusyjnych.

Pozdrawiam i zapraszam – Paweł Stacewicz

Zaszufladkowano do kategorii Dydaktyka logiki i filozofii, Światopogląd informatyczny, Światopogląd racjonalistyczny | 12 komentarzy

O różnych sposobach istnienia i nieistnienia liczb
Rozmyślanie noworoczne

Pomysł, żeby w filozofii matematyki i filozofii informatyki dyskutować o nieistnieniu liczb jest  inspirujący. Pojawił się on we wpisie  25.XII.2018 pt. „O nieistnieniu liczb w informatyce” podpisanym „Jarek”:  http://marciszewski.eu/?p=10032

Myślowym punktem wyjścia jest  dla Jarka słynne zdanie Leopolda Kroneckera (1823-1891):  Die ganzen Zahlen hat der liebe Gott gemacht, alles andere ist Menschenwerk (Miły Bóg stworzył liczby całkowite, wszystkie inne są dziełem ludzkim). Tę sentencję przytacza Jarek, zmieniając tylko zwrot „liczby całkowite” na „liczby naturalne”, z pożytkiem dla obecnych rozważań. Skupią się one bowiem na PA  (Arytmetyce Peano), a więc na liczbach naturalnych (czyli całkowitych dodatnich z uwzględnieniem zera).

Z liczbami naturalnymi związany jest też fakt, że  właśnie zaistniały Nowy Rok numerowany jest liczbą 2019, a taka numeracja bierze się z naszej potrzeby widzenia świata jako struktury dyskretnej. Kapitalnie ujął to Boy.

By uniknąć ambarasu
wzięto rok za miarę czasu,
dzieląc go bardzo wygodnie
ma miesiące i tygodnie.

Na pomysł udyskretnienia czasu wpadli ludzie. A co ma do tego dobry Bóg przywołany przez Kroneckera? Istotnie się do tego przyczynił, każąc ziemi okrążać bez przerwy słońce, co podsunęło ludziom dowcipny pomysł, żeby z jednego takiego okrążenia uczynić miarę czasu. A dalej poszło łatwo, bo za sprawą tegoż Astronomicznego Wynalazcy mamy noce i dnie, a dzięki Euklidesowi, Peano etc. mamy arytmetykę z dzieleniem (czego nie ma np.arytmetyka Presburgera), tak więc podzielono liczbę dni roku, żeby wyszły zgrabnie „miesiące i tygodnie”. Za dzielenie płacimy nierozstrzygalnością arytmetyki (czym nie musiał martwić się Presburger), ale to drobiazg w porównaniu z wygodą poruszania się w tak uładzonym czasie.

Dzięki refleksji nad kalendarzem i astronomią, możemy nadać sentencji Kroneckera uchwytne znaczenie: liczby naturalne istnieją przynajmniej w ten sposób, że są niezbędne do opisu świata,  np.  do mierzenia upływu czasu. Nie zmusza to nas do poglądu że istnieją w jeszcze innym sensie, np. na sposób platoński. Mogą krytycy Platona ubolewać nad fantastyką wiary w istnienie liczb, ale to nie zmieni faktu, że będziemy się nimi posługiwać, jak gdyby one w najlepsze istniały. Pragmatyście to wystarczy.

Zauważmy jednak, że segmentowanie czasu za pomocą liczb naturalnych jest pomysłem ludzkim, a tak naprawdę, to owe segmenty składają się z punktów. Wprawdzie ignoruje to sekundnik zegara (według niego sekunda jest odcinkiem czasu), ale nie wszystko w przyrodzie pozwala ignorować punktowość. Nie pozwala m.in. mechanika, gdzie przyspieszenie jest pochodną prędkości względem czasu rozumianego jako zbiór punktów, a te są reprezentowane arytmetycznie przez liczby rzeczywiste. Mamy więc dobry powód  do zachowywania  się w sposób analogiczny jak w przypadku liczb naturalnych. Według pragmatysty usprawiedliwia to praktykę stosowania kwantyfikatora egzystencjalnego do zmiennych,  które  się odnoszą do liczb rzeczywistych. Jeśli nominalista się z tym nie zgadza, to niech składa skargę do Trybunału Rzeczywistości.

*** 9 stycznia 2019 ***

W miejscu do gwiazdek przerwałem 1-go stycznia pisanie, zapowiadając, że ciąg dalszy nastąpi. Żeby to zrealizować, uznałem, że trzeba w poszukiwaniu argumentów staranniej niż dotąd wniknąć w opublikowane wpisy i komentarze.  Zaczynam od  wpisu rejestrującego wymianę zdań między SP i Harrym, która zainicjowała dalszą dyskusję. Otwiera ją głos Pawła Stacewicza.

[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.”

Zdziwiło mnie trochę zastrzeżenie „w mojej opinii” dotyczące przecież poglądu wielce umiarkowanego („niezbędne”, a nie np. „fundamentalne”), którego oczywistość leży jak na dłoni. Skąd miałaby się brać różnica opinii? A jednak… Zabrał głos Harry,  wyznając, że owa opinia „nie bardzo go przekonuje”. Posłuchajmy.
[H] „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?

Mimo użycia słowa „bowiem”, passus ten , złożony tylko z pytań, nie daje jeszcze
uzasadnienia.  Pojawia się ono po replice PS-a, która przywołuje takie oczywistości, jak nieodzowność w informatyce koncepcji maszyny Turinga, także nieodzowność arytmetycznego pojęcia funkcji rekurencyjnej, a także rola nieskończonych  reprezentacji liczb nieobliczalnych. Harry odpowiada.

[H] „Nie do końca mnie zrozumiałeś. Chodzi 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’.”

Nerw argumentacji jest w ostatnim zdaniu.  Zdaje się zeń wynikać,  że  możliwy jest  opis maszyny Turinga,  w którym  nie wystąpiłyby ani razu słowa  „liczba” i  funkcja”,  ani jakieś konkretne liczby (a jest ich de facto mnóstwo, np. numery kodowe poszczególnych maszyn Turinga, nieskończone ciągi zer i jedynek w  argumencie przekątniowym etc.). Takie dokonanie — pokazanie zbędności  arytmetyki w informatyce — byłoby rewelacją na miarę osiągnięć samego Turinga.

Powyższa wypowiedź  tym bardziej godna jest uwagi, że powołuje się na pewien wynik, który Harry zdaje się uważać za sukces porównywalny z tym,  jakim byłoby owo sparafrazowanie wyników Turinga bez używania słowa „liczba” i nazw  konkretnych liczb. Tym przywołanym przezeń wynikiem jest A.Grzegorczyka dowód nierozstrzygalności zainicjowanej przez Tarskiego teorii konkatenacji, mianowicie dowód, który się obywa bez aparatu pojęciowego arytmetyki („Undecidability  without arithmetization” w „Studia Logica”, 1(79):163?230, 2005).

Ten punkt argumentacji  stanowi istotny wkład do dyskusji. Wskazuje bowiem  pewien wzorzec pomocny w szukaniu drogi, na jakiej należałoby bronić poglądu, że informatyka nie potrzebuje pojęcia liczby i, w ogólności, arytmetyki. Mianowicie, należałoby zastosować teorię konkatenacji, lub jakąś inną też nie posługującą się pojęciem liczby, żeby powtórzyć na innej drodze wynik Turinga, to jest: dać definicję funkcji obliczalnej i wykazać istnienie liczb nieobliczalnych, ale bez mówienia o liczbach.

Nim ktoś się podejmie takiego zadania, niechby jako zadatek dał krótką zapowiedź tego,  jak zamierza oddać tytuł przełomowego studium Turinga (1936) „ON COMPUTABLE NUMBERS, WITH AN APPLICATION TO THE ENTSCHEIDUNGSPROBLEM” bez użycia słowa „number”.

Dzięki powyższej sugestii, mogę z czystym sumieniem zaprzestać udziału w tej  żywej dyskusji (3 wpisy i 43 komentarze). To znaczy, mogę z pozycji aktywnej przejść do „spocznij”. I spokojnie czekać, aż Harry lub inny obrońca tezy o zbędności pojęcia liczby w informatyce opublikuje pracę, która (powtarzam): dostarczy definicji funkcji obliczalnej oraz dowodu istnienia liczb nieobliczalnych, bez posługiwania się aparatem pojęciowym arytmetyki.

O ile to się komuś uda, wrócę do obecnej dyskusji. Ale już po to tylko, żeby samokrytycznie wyznać, że błądziłem, uważając takie przedsięwzięcie za nierealne.

Zaszufladkowano do kategorii Epistemologia i ontologia, Filozofia informatyki, Filozofia nauki | Otagowano , , , , , , | 12 komentarzy

O nieistnieniu liczb w informatyce

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}\cdots

Najpierw 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.

Zaszufladkowano do kategorii Filozofia informatyki, Logika i metodologia | 7 komentarzy

O teoretycznej (nie)zbędności kategorii liczby w informatyce i jej metodologii

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

Zaszufladkowano do kategorii Epistemologia i ontologia, Filozofia informatyki, Filozofia nauki, Logika i metodologia, Światopogląd informatyczny, Światopogląd racjonalistyczny | Otagowano , | 35 komentarzy

Monadologia Leibniza w porównaniu
z obiektowym paradygmatem programowania

Niniejszy wpis powstał dzięki abstraktowi do odczytu dra inż. Jarosława Strzeleckiego pt. „Czy monada może być szczegółowym przypadkiem obiektu OOP?” przewidzianego na seminarium w PW 25.X.2018.  Zob. link do abstraktu w zawiadomieniu o referacie: http://marciszewski.eu/?page_id=8381

Zadaniem tych uwag jest konfrontacja proponowanych  przez Autora interpretacji  „Monadologii” z  odpowiednimi tekstami tego utworu.   W tabeli zestawiającej tezy monadologii z zasadami projektowania obiektowego Autor zawarł  definicję monady, rozpisując ją na 12 numerowanych wierszy. Cytuję te elementy definicji wg ich numerów, poprzedzając je literą R (od „Referat”). Odpowiadające im ustępy z tekstu „Monadologii” oznaczam numerami ustępów z tekstu Leibniza, poprzedzonymi  literą M oraz  wyróżniam kolorem.

R.1: „Monada jest substancją prostą, czyli bez części.”
M.1.  „Monada jest substancją prostą tzn. pozbawioną części.”

R.2: „Monada  jest elementem agregatu.”
M.66. „W najdrobniejszej cząstce materii [ożywionej] istnieje świat …
entelechii” (tj. monad,  por. M.18).

Wg Leibniza agregaty  to obiekty złożone. Są wśród nich ciała organiczne, które L. określa jako automaty boskie, tj. nie będące artefaktami człowieka (nazywa je też boskimi maszynami). Monady są częściami  takich agregatów (zob. M.66: „w najdrobniejszej cząstce materii istnieje … świat entelechii i dusz [tj. monad”]). Nie są to części w sensie
mereologicznym. Są częściami  w sensie, który L. określa w jednym z listów następująco: (cytuję za https://plato.stanford.edu/entries/leibniz-exoteric/, odc.6): „properly speaking, matter isn’t composed of constitutive unities, but results from them … Substantial unities aren’t really parts, but the foundations of phenomena„.

Nasuwa się tu interpretacja informatyczna, że monada jest częścią organizmu jako agregatu w takim sensie, jak np. system operacyjny jest częścią komputera. Przy takiej jednak interpretacji załamie się postulowana w Referacie analogia z OOP, gdzie w prawym wierszu R.2 mówi się, że OOP może być agregatem. Monada zaś nie może być agregatem, bo wtedy byłaby złożona, wbrew R.1 oraz M.1. Wiersz więc R2 wskazywałby na różnicę, a nie analogię.

Jest też dwoistość w używaniu przez Leibniza słowa „automat”. W sensie M.64 automaty są agregatami, a więc są materialne, monady zaś nie, ale w M.18 pojawia się pojęcie monady jako automatu bezcielesnego w sensie bytu mającego „własne czynności wewnętrzne”. Czy nie należałoby więc w Referacie odróżnić automaty bezcielesne (software?) od cielesnych (hardware?).

R.4: „Monada powstaje lub ginie za jednym zamachem”. To jest sprzeczne z następującą tezą Leibniza.

M.73: „Nie ma ani całkowitych narodzin ani śmierci zupełnej, ściśle pojętej, polegającej na odosobnieniu duszy [monady]. A to, co my zwiemy narodzinami  jest tylko rozwojem i wzrostem, podobnie jak to, co nazywamy śmiercią  jest tylko zwinięciem się i  zmniejszeniem.”

M.77: „Dusza jest niezniszczalna.”  Jak to się ma do R.4? Jest niezniszczalna w tym sensie, że nie rozpadnie się sama z siebie, ale może być unicestwiona przez Stwórcę (por. M.6). O który sens chodzi w R.4?

R.10: „Monada jest bezcielesnym automatem.”

M.64: Monada nie może być automatem, bo automaty czyli maszyny są złożone z części fizycznych. Punkt M.64 porównuje automaty wytworzone przez człowieka z „divina automata”, jakimi są żywe istoty. Pierwsze są złożone skończenie; np. trybik w zegarku jest częścią w danej strukturze zegarka, ale zawarte w nim atomy nie należą do tej  struktury, będąc bez ograniczeń wymienne. Organizmy natomiast są podzielne w nieskończoność (nawet jeśli wiedza o nich wiedza za tym podziałem nie nadąża, kończąc się po pewnej liczbie kroków).

Ten sam tekst w formacie PDF jest dostępny pod adresem: calculemus.org/CA/fil-inform/2018/blog-sem/10-monada.pdf

Zaszufladkowano do kategorii Epistemologia i ontologia, Filozofia informatyki, Światopogląd informatyczny | Otagowano , , , , , , | 9 komentarzy

Filozofia i matematyka. Zaproszenie na seminarium.

Na dobry początek blogowej aktywności po wakacjach chciałbym zaprosić Państwa na arcyciekawe wydarzenie, którego charakter koresponduje z tematyką naszego bloga. Jest nim wrocławskie seminarium pt. FILOZOFIA i MATEMATYKA, zaplanowane na 5 i 6 października 2018 roku.

Zapraszam na to seminarium w imieniu doktora Bartłomieja SKOWRONA, który przysłał taki oto opis:

<<
Co wspólnego ma matematyka i filozofia? Na pierwszy rzut oka wydaje się, że  nic. Matematycy to ścisłowcy, a filozofowie to humaniści. Matematycy nie przepadają za humanistyką, a humaniści chwalą się, że nie znają matematyki. Czy taki jednak obraz matematyki i filozofii jest adekwatny? Nie jest! Wielcy matematycy byli filozofami i na odwrót, wielcy filozofowie uprawiali też matematykę. Na styku filozofii i matematyki od zawsze była logika, raz będąc bliżej filozofii, raz będąc bliżej matematyki. Logicy wykorzystują zarówno narzędzia matematyczne, na przykład teorię mnogości lub teorię modeli, z drugiej zaś strony, w logice aktywnie rozwijane są wątki logiki nieformalnej, która zanurzona jest głęboko w tradycji filozoficznej. Filozofię z matematyką łączą też  rozważania nad filozoficznymi statusem obiektów matematycznych oraz nad sposobami poznania tego, co matematyczne, czyli zagadnienia z zakresu filozofii matematyki. Wszystkie te wątki pojawią się podczas organizowanego we Wrocławiu seminarium w dniach 5-6 października 2018 r. pt. Filozofia i matematyka. Głównymi organizatorami seminarium są Międzynarodowe Centrum Ontologii Formalnej (Wydział Administracji i Nauk Społecznych, Politechnika Warszawska) oraz Wrocławskie Centrum Akademickie  (Academia Europaea oraz Akademia Młodych Uczonych i Artystów). Seminarium wspiera Miasto Wrocław a patronat medialny objęło czasopismo popularyzujące filozofię Filozofuj! Seminarium odbędzie się w siedzibie Wrocławskiego Centrum Akademickiego we Wrocławiu, Rynek 13,  pierwsze piętro.

Mniej oczywistym, niż logika i filozofia matematyki, połączeniem jest filozofia matematyczna. Jest ona obecna w naszej tradycji od czasów Platona, przez czasy Leibniza, aż do naszych czasów, czyli czasów – powiedzmy – Gödla. Filozofię matematyczną nazywa się  czasem filozofią formalną lub filozofią logiczną.  Matematyka wtedy służy jako narzędzie do modelowania zagadnień filozoficznych, podobnie jak we współczesnej fizyce, gdzie struktury matematyczne są swoistym materiałem dla teorii fizycznych. Matematyka pomaga w zaawansowanych rozważaniach filozoficznych. Jednym z najszybciej rozwijających się centrów filozofii matematycznej na świecie jest Munich Center for Mathematical Philosophy. Centrum tym kieruje prof. Hannes Leitgeb, członek Academii Europaea, który weźmie udział w seminarium, zarówno jako prelegent, jak i jako panelista w debacie pt. „Mathematics, Philosophy and Mathematical Philosophy”. Wśród uczestników seminarium są  członkowie Academii Europaea: prof. Jan Woleński (filozof, logik) oraz prof. Marek Kuś (fizyk, filozof fizyki). Seminarium otworzy prof. Tadeusz Luty (chemik). Wśród prelegentów wystąpią także prof. Roman Murawski (matematyk, filozof matematyki), prof. Krzysztof Wójtowicz (filozof matematyki), dr Jakub Jernajczyk (artysta, filozof), dr Bartłomiej Skowron (filozof) oraz prof. Ludomir Newelski (matematyk, logik).

Program seminarium dostępny jest na PLAKACIE. Seminarium jest otwarte.

ZAPRASZAMY!

Wydarzenie na FB: https://www.facebook.com/events/328040321092435/

Strona internetowa wydarzenia: http://www.icfo.ans.pw.edu.pl/en/?page_id=2086

>>

Zaszufladkowano do kategorii Dydaktyka logiki i filozofii, Filozofia nauki | Dodaj komentarz

Cyfrowy idealizm?

Z wielką przyjemnością chciałbym poddać pod dyskusję pewien arcyciekawy materiał, który był prezentowany na ostatnim seminarium w PW przez dr Jakuba Jernajczyka z Wrocławia. Dotyczy on istotnych  podobieństw, jakie zachodzą między Platońskim (i nie tylko!) idealizmem a paradygmatem programowania obiektowego.

Podstawę dyskusji stanowią SLAJDY omawiane na seminarium.

Natomiast wprowadzeniem do niej jest przygotowany przez doktora Jernajczyka wpis, który zamieszczam niżej.

Zamieściwszy go zaś, serdecznie zapraszam do dyskusji – Paweł Stacewicz.

*****

Ogólne założenia oraz struktura mojego wystąpienia przedstawione zostały w prezentacji. W niniejszym wątku rozwinę dwa zagadnienia, które, ze względu na ograniczenia czasowe, nie miały okazji dostatecznie wybrzmieć.

1.
Rozważana analogia pomiędzy technikami stosowanymi w programowaniu obiektowym, a głównymi założeniami filozoficznego idealizmu [prezentacja, s. 2-12], ujawnia się również w odniesieniu do cyfrowych narzędzi służących do projektowania i edycji grafiki [prezentacja, s. 13-14]. W wielu tego typu środowiskach funkcjonuje mechanika wzorca oraz jego kopii, które zachowują wewnętrzną, często bardzo złożoną strukturę wzorca. Aby nie mnożyć terminologii (każdy program posługuje się własnym nazewnictwem), skupię się tutaj na omówieniu środowiska Adobe Flash (obecnie Adobe Animate). Złożoną strukturę wizualną, obejmującą nie tylko elementy graficzne, ale także ich zmianę (ruch), możemy we Flashu zawrzeć w pojedynczym symbolu, który początkowo istnieje tylko w bibliotece projektu, poza główną sceną [rys. 1].

Rys. 1
Rysunek 1. Symbol utworzony w bibliotece Flasha (odpowiedniku świata idei).
Wersja animowana znajduje się tutaj.

Utworzywszy symbol możemy umieszczać na scenie (warstwie prezentacyjnej, można rzec „świecie fizycznym” Flash’a) wiele jego instancji, które w pełni zachowują jego wewnętrzną strukturę [rys. 2].

Rys. 2
Rysunek 2. Wiele instancji jednego symbolu, umieszczonych na scenie Flasha (odpowiedniku świata fizycznego), które różnią się między sobą cechami zewnętrznymi, ale w pełni zachowują strukturę wewnętrzną wzorca.
Wersja animowana znajduje się tutaj.

Analogia do klas i ich obiektów jest tutaj sprawą oczywistą, ponieważ w środowisku Flash każdy symbol stanowi pewną klasę (dziedziczącą po ogólnej klasie Object), a instancje tego symbolu stanowią obiekty owej klasy. W tym miejscu nie chcemy jednak podkreślać obiektowości Flasha jako środowiska programistycznego (wyposażonego w pełni obiektowy język ActionScript), lecz wskazać podobieństwa do mechanizmów obecnych w filozoficznym idealizmie i programowaniu obiektowym, które ujawniają się na poziomie czysto wizualnym, obsługiwanym za pomocą graficznego interfejsu użytkownika.

Wszystkie utworzone na scenie instancje danego symbolu w pełni zachowują jego wewnętrzną strukturę (wygląd oraz zachowania), ale mogą różnić się między sobą cechami zewnętrznymi (można by rzec przypadłościowymi), takimi jak położenie, wielkość, pochylenie, obrót, kolor itp.
Zmiana cech zewnętrznych pojedynczej instancji nie wpływa na pozostałe instancje, natomiast każda zmiana wewnętrznych cech symbolu powoduje zmiany we wszystkich jego instancjach. Ponadto usunięcie ze sceny pojedynczej instancji nie wpływa na pozostałe instancje, podczas gdy usunięcie symbolu z biblioteki spowoduje usunięcie ze sceny wszystkich jego instancji. Mamy tu więc wyraźną analogię do programistycznych klas i obiektów oraz do Platońskich idei i rzeczy (z tą tylko uwagą, że, w przeciwieństwie do klas oraz symboli, wewnątrz Platońskich idei nikt nie może dokonywać zmian, ani człowiek, ani nawet Demiurg).

Ponieważ koncepcja symboli i ich instancji bezpośrednio bazuje na koncepcji klas i obiektów, uwidaczniają się w niej również inne mechanizmy obecne w programowaniu obiektowym. Symbole, podobnie jak klasy, mogą zawierać w sobie również instancje innych, dowolnie zagnieżdżonych symboli (z tym zastrzeżeniem, że dany symbol nie może zawierać swojej instancji, lub instancji symbolu, który już go zawiera).
Na poziomie graficznego interfejsu użytkownika mamy też pewne odpowiedniki mechanizmu dziedziczenia – jeśli chcemy utworzyć nowy symbol, który zachowuje wybrane cechy danego symbolu, ale dodaje lub zmienia jego inne cechy, wystarczy utworzyć duplikat istniejącego symbolu, który następnie można modyfikować, nie zmieniając oryginału.

2.
Głównym celem mojego referatu było zwrócenie uwagi na pewne wspólne intuicje, podobne modele myślenia, które ujawniły się w różnych czasach, w wydawałoby się bardzo odległych od siebie dyscyplinach (w filozofii, informatyce, w klasycznym rzemiośle i projektowaniu cyfrowym).

Warto zatem rozważyć możliwe przyczyny zaobserwowanych tu analogii:

A) Mogą one wynikać z bezpośredniej, świadomej inspiracji programistów koncepcjami filozoficznymi. Wariant ten należy jednak raczej odrzucić, gdyż w literaturze specjalistycznej nie ma wzmianek o takich nawiązaniach, chociaż niektórzy autorzy (np. B. Stroustrup) posługują się pojęciami charakterystycznymi dla filozofii.

B) Bardziej prawdopodobna wydaje się inspiracja nieuświadomiona – niejawne odwołanie się do koncepcji, które od wieków obecne są w nauce i kulturze, a które po raz pierwszy pojawiły się, czy może lepiej rzec, zostały sformalizowane w greckiej filozofii (wpływ Platona na myśl europejską dobitnie uwypuklił Whitehead w stwierdzeniu, że „całą historię zachodniej filozofii dałoby się sprowadzić do kilku przypisów do Platona”).

C) Możliwa jest również całkowicie przypadkowa zbieżność podobnych koncepcji. Wariant ten wydaje się jednak mało prawdopodobny a nade wszystko mało ciekawy.

D) Znacznie bardziej prawdopodobna i chyba najbardziej interesująca w sensie poznawczym jest hipoteza, że podobne, bardziej podstawowe koncepcje/intuicje wpłynęły zarówno na myśl filozofów, rzemieślników, jak i programistów. To, że podobne koncepcje mogą ujawniać się w różnych dziedzinach ludzkiej aktywności mówiłoby nam coś istotnego o sposobie działania ludzkiego umysłu, który według podobnych reguł ujmuje i rozwiązuje bardzo odległe problemy. Oznaczałoby to, że według podobnych reguł postrzegamy, organizujemy i opisujemy świat; w końcu według podobnych reguł tworzymy nasze modele rzeczywistości, co wcale nie oznacza, że są one prawdziwe. Choć modele te mogą doskonale spełniać kryteria naszych reguł (wedle których przecież powstały) a co za tym idzie, wydawać się nam bardzo wiarygodne, wcale nie muszą odpowiadać rzeczywistości.

3.
Podczas seminarium pojawiło się wiele cennych i interesujących uwag. Poniżej sygnalizuję wybrane wątki, które być może zostaną rozwinięte na tym forum:

a) podkreślono, że wiele mechanizmów programowania obiektowego stosowano w informatyce dużo wcześniej niż ukonstytuował się ów paradygmat; przywołano przykłady własnych rozwiązań programistyczny z lat 60-70-tych, które antycypowały możliwości współczesnych języków programowania;

b) rozwinęła się ciekawa dyskusja dotycząca stopnia pokrewieństwa pojęcia klasy stosowanej w programowaniu obiektowym oraz klasy definiowanej w matematyce;

c) zwrócono uwagę na inne specyficzne języki, takie jak POV-Ray (www.povray.org) czy Metafont (część systemu TeX), w których jeszcze wyraźniej uwidacznia się analogia do Platońskiego idealizmu.

Na zakończenie pragnę serdecznie podziękować organizatorom i uczestnikom seminarium za żywą i owocną dyskusję.

Jakub Jernajczyk

******

 

Zaszufladkowano do kategorii Bez kategorii, Dydaktyka logiki i filozofii, Filozofia informatyki, Filozofia nauki, Światopogląd informatyczny | 11 komentarzy

O matematyczności świata raz jeszcze…

Obecnym wpisem, widocznym w głównym panelu naszego bloga, chciałbym zwrócić uwagę czytelników i dyskutantów, że w ostatnich dniach odżyła pewna historyczna dyskusja o matematyczności świata.

Bardzo zachęcam, aby ją na nowo podjąć.

Podaję link do anonsowanej dyskusji: Matematyka – Człowiek – Świat
(komentarze są dostępne, jak zwykle, pod samym wpisem).

Udostępniam także pewien nowy materiał, który dyskutowaliśmy na seminarium w PW.
Są to SLAJDY opracowane przez prof. Józefa Lubacza z wydziału WEiTI PW.

Jeszcze raz zachęcam do dyskusji, która odbywa się tutaj  — Paweł Stacewicz.

 

Zaszufladkowano do kategorii Dydaktyka logiki i filozofii, Epistemologia i ontologia, Filozofia nauki, Światopogląd racjonalistyczny | Dodaj komentarz