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

Ten wpis został opublikowany w kategorii Epistemologia i ontologia, Filozofia informatyki, Światopogląd informatyczny i oznaczony tagami , , , , , , . Dodaj zakładkę do bezpośredniego odnośnika.

Komentarze do Monadologia Leibniza w porównaniu
z obiektowym paradygmatem programowania

  1. Jaroslaw Strzelecki pisze:

    Bardzo dziękuję za uwagi.
    Korzystam z ,,Monadologii” dostępnej pod adresem http://classiques.uqac.ca/classiques/Leibniz/La_Monadologie/leibniz_monadologie.pdf
    Numery w cytatach odpowiadają numerom tez z Monadologii.

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

    ,,1. La Monade, dont nous parlerons ici, n’est autre chose qu’une substance
    simple, qui entre dans les composés ; simple, c’est-à-dire sans parties”

    Monada jest ,,simple’’-prosta, czyli ,,sans parties” – ,, bez części”

    Tłumaczenie „pozbawione części” nie tylko niepotrzebnie oddala się od dosłownego znaczenia ,,bez części’’, ale sugeruje, że monada mogłaby mieć części, ale coś/ktoś pozbawił ją tych elementów.

    Oczywiście inną kwestią jest koncepcja części i jej relacji do całości. Leibniz używa wyrażenia „entrer dans les composés” – „wchodzić/wkraczać/wnikać/wstępować w przedmioty złożone”

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

    „2. Et il faut qu’il y ait des substances simples, puisqu’il y a des composés ; car le composé n’est autre chose qu’un amas ou aggregatum des simples’’

    To, co złożone (le composé) jest tyko zbiorowiskiem lub aggregatum substancji prostych.

    Oczywiście oddzielną kwestią jest relacja łącząca substancje proste z agregatem. Nazwałem ją ,,jest elementem’’, co niepotrzebnie sugeruje teoriomnogościowy sens.

    Pan profesor zwrócił uwagę, że skoro monada nie może być agregatem, a obiekt może, to nie zachodzi tu podobieństwo monady do obiektu, ale różnica.
    I tak i nie. Chodziło mi o to, że pojęcie obiektu OOP jest szersze niż monady, że monada jest obiektem zredukowanym do jednego rodzaju, bo może być tylko prosta, a obiekty mogą być również złożone. Warto zaznaczyć, że jeżeli w OOP ten oto obiekt jest prosty, to nie może stać się złożonym, choć może niejako wejść w skład obiektów złożonych.

    Pan profesor zwrócił uwagę na dwa różne znaczenia słowa „automat” (cielesne i bezcielesne). Rzeczywiście dość bezmyślnie przeszedłem nad tym zagadnieniem.

    Ad. R.4. M.73. M.77.
    Pan profesor zwrócił uwagę na sprzeczność między R.4. (Monada powstaje/ginie za jednym zamachem) a M.73. (nie ma narodzin i śmierci.).

    Sprzeczności nie ma, bo R.4. i M.73. opisują inne sytuacje.

    Wyjaśnienie:
    – R.4. jest skrótowym wyrażeniem zdania ,,6. Ainsi on peut dire, que les Monades ne sauraient commencer, ni finir, que tout d’un coup, c’est-à-dire, elles ne sauraient commencer que par création et finir que par annihilation ; au lieu, que ce qui est composé, commence ou finit par parties”
    Ponieważ monada jest prosta, może zacząć być (commencer) albo zakończyć istnienie (finir) tylko tout d’un coup – nagle, za jednym razem.
    – M.73. dotyczy relacji między duszą a ciałem (śmierć to oddzielenie się duszy od ciała)
    -M.77. Teza opisuje niezniszczalność duszy/monady, bo zniszczalne jest to, co rozkładalne na części.

    Ad. R.10. M.64.
    Tezy dotyczą tego, w jakim sensie monada jest automatem.
    Jak już napisałem, dość bezrefleksyjnie potraktowałem to zagadnienie.

  2. Ad R.1 i M.1: Przyznaję, że mój przekład był mało przemyślany, niepotrzebnie odbiega od oryginalnego „sans”.

    Ad. R.10 i M.64. Nie sądzę, żeby powodem był brak refleksyjności. Raczej zaistniały stan terminologii logiczno-informatycznej w której słowo słowo „mechaniczny” raz przybiera sens fizykalny (pod który podpadają m.in. fizyczne realizacje maszyny Turinga) a raz sens, by tak rzec, metodologiczny, w którym odróżnia się wykonywanie zadania, w szczególności rozwiązywanie problemu, wymagające namysłu od takiego, które ogranicza się do mechanicznego realizowania instrukcji, czyli do pewnego automatyzmu.

    Powiedzenie o monadzie, że jest automatem nie musi znaczyć, że z natury działa bezmyślnie, ale że realizuje wbudowany w nią program, co nie musi wykluczać zachowań twórczych. Ale jest problem, jak zaprogramowanie monady (jako konsekwencja radykalnego determinizmu Leibniza) pogodzić z jej wolnością i twórczością. W pewien sposób poradził sobie z tym Turing (1939), odróżniając zwykłe maszyny Turinga od maszyn z wyrocznią, (a więc twórczych), ale taki pomysł był w czasach Leibniza nie do pomyślenia.

  3. Jarek pisze:

    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?).

    Gdyby ktoś miał mnie przekonywać do istnienia związku programowania obiektowego z monadami, tym zdaniem (M.18) zrobiłby to najlepiej. Ze wszystkich cech, jakie przypisuje się paradygmatowi obiektowemu, najbardziej dla mnie istotną jest ta, że obiekty w języku programowania mają „własne czynności wewnętrzne”. Ponieważ czym innym jest mnożenie liczb rzeczywistych, czym innym mnożenie macierzy (a jeszcze czym innym mnożenie królików), to czynność mnożenia (w sensie: zdolność do jej wykonania) lokuje się wewnątrz obiektu. Obiektowy język programowania może w ogóle nie uwzględniać istnienia „czynności zewnętrznych” – wszystko, co w nim „dzieje się”, dzieje się wewnątrz obiektów.

    Odczytywanie Monadologii Leibniza w języku programowania obiektowego (lub odwrotnie opisywanie bytów informatycznych językiem monad) jest podejściem ciekawym. Zauważę tutaj jednak, że słowo „monada” – ma już zastosowanie przy definiowaniu języków programowania. Z tym że nie obiektowych, lecz funkcjonalnych (funkcyjnych). W języku Haskel, w którym programista opisuje problem, by kompilator sam znalazł algorytm do jego rozwiązania, monady są bytami, które realizują połączenie (nieznanego) wnętrza algorytmu ze światem zewnętrznym.

    • Jaroslaw Strzelecki pisze:

      Zwrócenie uwagi na ,,własne czynności wewnętrzne” monady i obiektu, to celna i wartościowa uwaga.
      Dziękuję.

      ps. Do tropu z językiem Haskell podpisuję się obiema rękoma ;). Choć otwiera on nieco inny univers de discours.

  4. Czy zwrot „własne czynności wewnętrzne” można uznać za inny sposób powiedzenia tego, co wyraża metafora, że monada nie ma okien i drzwi? Nie umiem na to odpowiedzieć, choć powinienem umieć, strawiwszy nad Leibnizem spory kawałek życia. Może wiedza innych dyskutantów, znawców programowania obiektowego, mogłaby rzucić na to światło?

    • Jarek pisze:

      Po pewnym zastanowieniu mogę przedstawić swoje na ten temat zdanie: nie można. Nie można, gdy chodzi o porównanie z OOP. Studiom nad Leibnizem nie poświęciłem zbyt wiele czasu, mogę się tylko domyślać, że świat monad był dla niego modelem świata realnego. Sposobem opisania czegoś, na co wpływu nie mamy. Tymczasem obiekty w językach programowania są tworem sztucznym, stworzonym przez człowieka w konkretnym celu: żeby dało się łatwiej pisać programy. Te „własne czynności wewnętrzne” nie biorą się znikąd, ktoś je najpierw tworzy i opisuje w przemyślany sposób, a dopiero gdy uzna, że funkcjonują tak jak powinny, zatrzaskuje drzwi i okna. Może z monadami jest inaczej, ale obiekty języków programowania drzwi i okna mają, tyle że zamknięte. Ale klucz jest w miejscu wiadomym, zawsze można po niego sięgnąć.

    • Jaroslaw Strzelecki pisze:

      Zgadzam się z tym, co napisał Jarek.

      Jak zaznaczyłem w abstrakcie, monady nie mogą mieć zamkniętych okien w sensie absolutnym, ponieważ wówczas nawet nie wiedzielibyśmy, że są (pomijam problem ich realnego istnienia) i, że są jakieś (poza tym istnieje harmonia wprzódy ustanowiona oraz cielesne udostępnianie się monad) — więc przez zamknięte okna ,,wycieka” informacja.

      • Jarek pisze:

        Leibniz podał przykład monady szczególnej — Boga. O wnętrzu tej monady nie jesteśmy w stanie powiedzieć nic, jest ona tajemnicą. Możemy się tylko domyślać, że może tam znaleźć się wszystko. Nie wiemy jak działa, lecz wiemy, że działa w sposób doskonały. Drzwi i okna monady są szczelnie zamknięte, a może nawet nie ma ich wcale. W każdym razie nic nie wycieka.

        Leibniz nie mógł znać innych podobnych przykładów. Dzisiaj (progresywnie) wiemy na temat monad więcej. Czarna dziura jest monadą zamkniętą, o której wnętrzu nie możemy powiedzieć absolutnie nic. Jest to twór realny, dobrze opisany przez fizykę teoretyczną, o istnieniu potwierdzonym obserwacjami astronomicznymi. Jednak opis ogranicza się do oddziaływań zewnętrznych — na temat tego co w środku, nie ma nawet teorii.

        Ograniczenie to ma naturę trwałą, jest wymagane dla zachowania spójności całej fizyki. Gdy Krzysztof Kolumb dopłynął do brzegów „Indii Wschodnich”, to otwierała się długoletnia perspektywa poznawania nieznanego lądu. Odkrycie czarnych dziur miało inny charakter — oto znaleźliśmy coś, o czym wiemy, że nic nie wiemy i nigdy się nie dowiemy.

  5. Dziękuję za obie odpowiedzi na mój krótki komentarz z 23.X. Naprowadzają one na temat, którego nie poruszyłem w swoim wyjściowym wpisie, nie chcąc kumulować zbyt wielu kwestii. Teraz pojawił się odpowiedni kontekst

    Z pozycji historyka logiki zastanawiam się nad dwoma możliwymi kierunkami interpretacji jakichś dawnych i nowych koncepcji: interpretacja nowej za pomocą dawnej, lub odwrotnie. Niech pierwsza nazywa się regresywną (cofamy się do przeszłości), a druga progresywną (interpretujemy to co przeszłe w świetle obecnego). Przykładem progresywnej może być interpretacja prób algebraizacji logiki, jakie podejmowali matematycy 17-go i 18-go wieku, czyniona w świetle algebry Boole’a; a także interpretacja sylogistyki w kategoriach monadycznego rachunku predykatów.

    Pewien rodzaj interpretacji regresywnej ma miejsce, gdy się rozważa ciąg ewolucyjny; stadium późniejsze może dalece się różnić od wcześniejszego, ale zachodzi zwykle jakieś między nimi podobieństwo. Ich porównywanie ma sens, gdy dzięki znajomości stanu wcześniejszego lepiej rozumiemy późniejszy; np. początki monarchii konstytucyjnej w Anglii (Wilhelm Orański, 1689) rzucają światło na jej późniejsze losy. Trzeba jednak wyśledzić w tym celu jakiś związek dziedziczenia czy inspiracji. Np. Leibniza projekt „Characteristica universalis” był inspiracją dla Fregego „Begriffsschrift”; wiedza o tym pozwala lepiej uchwycić doniosłość dzieła Fregego.

    Teraz pytania do Prelegenta. Czy relację OOP do monadologii należy rozumieć na sposób którejś z tych interpretacji. Regresywna by znaczyła, źe Autor spodziewa się dla OOP jakichś pożytków paraleli z monadologią. Progresywna — że od OOP spodziewa się wkładu w rozjaśnienie monadologii, co istotnie by się przydało, bo po czterech wiekach pozostaje ona zagadkowa. A może moja dychotomia nie chwyta intencji Autora?

    Jaki jest zysk poznawczy w porównywaniu monadologii z OOP? Tabelka w Abstrakcie zestawia podobieństwa. Komentarz Jarka wskazuje, jak rozumiem, na ciekawą różnicę, która komuś kto coś niecoś wie o Leibnizu, a jest profanem w sprawach OOP, przybliża — na zasadzie kontrastu — pewną własność tych drugich. Czy dla profana byłby to przypadek interpretacji regresywnej? Czy sięgając wstecz, po wiedzę o Leibnizu, może on lepiej zrozumieć teorię OOP?

    Uwaga Jarosława Strzeleckiego, że monady nie mają zamkniętych okien nie wydaje mi się zgodna z treścią monadologii. Aby okna były zamknięte lub otwarte lub „przymknięte”, trzeba żeby istniały, a wg Leibniza one w ogóle nie istnieją. Jeśli takie stany mogą mieć obiekty OOP, to rysuje się w tym punkcie różnica między monadologią i OOP; też może owocna dla zrozumienia tych drugich?

    Krótko mówiąc, ciekawi mnie jaki pożytek poznawczy (teoretyczny lub praktyczny) może mieć podjęte przez Autora porównanie?

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *