eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingOptymalizacja struktur danych dla programów funkcyjnychRe: Optymalizacja struktur danych dla programów funkcyjnych
  • X-Received: by 10.31.169.76 with SMTP id s73mr978253vke.14.1507160264148; Wed, 04 Oct
    2017 16:37:44 -0700 (PDT)
    X-Received: by 10.31.169.76 with SMTP id s73mr978253vke.14.1507160264148; Wed, 04 Oct
    2017 16:37:44 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit
    0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder-in1.
    iad1.usenetexpress.com!border1.nntp.dca1.giganews.com!nntp.giganews.com!6no8137
    91qtw.1!news-out.google.com!s12ni856qtk.1!nntp.google.com!6no813787qtw.1!postne
    ws.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Wed, 4 Oct 2017 16:37:43 -0700 (PDT)
    In-Reply-To: <5...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=213.108.152.51;
    posting-account=bMuEOQoAAACUUr_ghL3RBIi5neBZ5w_S
    NNTP-Posting-Host: 213.108.152.51
    References: <c...@g...com>
    <4...@g...com>
    <b...@g...com>
    <d...@g...com>
    <f...@g...com>
    <b...@g...com>
    <1...@g...com>
    <4...@g...com>
    <5...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <e...@g...com>
    Subject: Re: Optymalizacja struktur danych dla programów funkcyjnych
    From: Maciej Sobczak <s...@g...com>
    Injection-Date: Wed, 04 Oct 2017 23:37:44 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Lines: 110
    Xref: news-archive.icm.edu.pl pl.comp.programming:211564
    [ ukryj nagłówki ]

    > Można sobie pomyśleć program, który oblicza wartość jakiegoś programu
    > czysto funkcyjnego

    Ale nie ustaliliśmy jeszcze, co to znaczy, że program jest czysto funkcyjny. Twoje
    argumenty to machanie rękami, bo każdy z nich da się rozciągnąć w dowolną stronę, co
    pokazałem w obu kierunkach. W tej sytuacji określenie "program, który oblicza wartość
    prograamu czysto funkcyjnego" to machanie rękami do kwadratu, jeszcze bardziej
    nieużyteczne.

    > To, czy liczba jest pseudolosowa, czy nie jest, czy pochodzi z wejścia,
    > czy z kosmosu, nie ma znaczenia dla *ISTOTY* danego programu.

    I właśnie tej istoty szukamy. Jeżeli istotą jest przetwarzanie wejścia na wyjście, to
    wszystkie programy w istocie takie są. Natomiast jeśli jest nią generowanie efektów
    ubocznych, to też wszystkie takie są.

    > > I dalej nie wiemy, co to niby miałoby oznaczać.
    >
    > No, jeżeli usilnie staramy się nie zrozumieć, co to oznacza,
    > to nie wiemy.

    A może staramy się ujawnić dziury w definicji? Bo skoro nie potrafimy przekonująco
    wyjaśnić co jakieś pojęcie oznacza, to może problem jest z samym pojęciem albo z
    naszym przekonaniem, że je rozumiemy?

    > Może sobie poczytaj https://mitpress.mit.edu/sicp/full-text/sicp/book/no
    de10.html

    Nie zakładaj, że jeszcze nie czytałem. Nie każdy troll jest niekompetentny. :-)

    > Dałem kilka kontrprzykładów. Systemy kolejkowe czasu rzeczywistego
    > nie są deterministyczną funkcją input->output. Być może mają komponenty,
    > które można w taki sposób analizować, ale ich istotą jest działanie
    > w czasie rzeczywistym, i reagowanie na zdarzenia w zależności od
    > jakiegoś ich wewnętrznego stanu.

    No to robimy ćwiczenie na wyobraźnię:

    1. *Narysuj* zdarzenia w środowisku i otoczeniu programu, w ich rozciągłości
    czasowej. Oś czasu, od lewej do prawej, z zaznaczonymi zdarzeniami, wartościami, itd.
    2. Zrób z tego obrazka plik, np. w formacie PNG. Czyli *jedną wartość*.
    3. Podobnie narysuj na osi czasu odpowiedź systemu na taką stymulację. Znowu, z
    odpowiednią skalą czasu, wartościami (tak, żeby po złożeniu tych dwóch obrazków
    powstał opis działania programu w czasie), itd.
    4. Z tego drugiego obrazka też zrób plik.

    Otóż okazuje się, że Twój "system czasu rzeczywistego" przetwarza pliki graficzne.
    Czyli przetwarza pojedyncze wartości. To, czy wczyta od razu cały plik z wejścia i
    wypluje cały plik na wyjściu, czy też będzie je przetwarzał po jednym pikselowym
    pasku wzdłuż jednego boku obrazka (czyli np. wzdłuż osi czasu, co odpowiada naszej
    percepcji działania w kontekście upływającego czasu) nie ma znaczenia dla istoty tego
    programu, którą jest transformacja jednego obrazka w drugi.
    Co ciekawe, ze względu na kwantyzację wszystkiego (łącznie z zegarem), takich
    obrazków jest duża, ale jednak skończona ilość (czyli użyteczne rozmiary i
    rozdzielczość obrazków są skończone). Czyli dałoby się nawet zrobić ten program jako
    jedną mapę.

    To teraz ten program jest "czysto funkcyjny", czy nie jest?

    > Natomiast programy w rodzaju kompilatorów, konwerterów LaTeXa,
    > sedów, są w istocie czysto funkcyjne w takim sensie, że dla określonego
    > wejścia dają określone wyjście i kropka.

    O, to program przetwarzający obrazki też się łapie.

    > Podałem podczas tej rozmowy kilka przykładów.

    A ja każdy z nich wygiąłem tam, gdzie chciałem.
    Dlatego twierdzę, że pojęcia, którymi operujesz, są nieużyteczne.

    > Istnieją programy, których istotą jest interakcja (np. gry komputerowe,
    > przeglądarki internetowe), takie, których istotą jest wykonanie
    > skutku ubocznego (np. mkdir albo rm), takie, które są w istocie
    > niedeterministyczne (jak wspomniany framework do algorytmów genetycznych).
    > A oprócz nich są programy czysto funkcyjne, które po prostu wyznaczają
    > przekształcenia jakichs wejść w jakieś wyjścia.

    I teraz ten cały podział nie dotyczy istoty działania programu (bo ta istota jest
    zawsze taka sama), tylko sposobu, w jaki my, ludzie, danego programu użyjemy. Możemy
    odpalić program jednym strzałem albo też delektować się powolnym budowaniem wyniku,
    ale to jest ten sam program. Czyli dotyczy naszej percepcji a nie jest fundamentalnym
    atrybutem problemu, który dany program rozwiązuje. Bo problem jest zawsze ten sam.
    Dlatego rzeczy "czysto cośtam" zwykle nimi nie są.

    --
    Maciej Sobczak * http://www.inspirel.com

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: