eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingOptymalizacja struktur danych dla programów funkcyjnych › Re: Optymalizacja struktur danych dla programów funkcyjnych
  • X-Received: by 10.31.49.200 with SMTP id x191mr120588vkx.19.1507312783014; Fri, 06
    Oct 2017 10:59:43 -0700 (PDT)
    X-Received: by 10.31.49.200 with SMTP id x191mr120588vkx.19.1507312783014; Fri, 06
    Oct 2017 10:59:43 -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!d13no56
    6346qta.0!news-out.google.com!r5ni294qtc.1!nntp.google.com!d13no566340qta.0!pos
    tnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Fri, 6 Oct 2017 10:59:42 -0700 (PDT)
    In-Reply-To: <e...@g...com>
    Complaints-To: g...@g...com
    Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=46.186.90.250;
    posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
    NNTP-Posting-Host: 46.186.90.250
    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>
    <e...@g...com>
    <5...@g...com>
    <b...@g...com>
    <a...@g...com>
    <e...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <f...@g...com>
    Subject: Re: Optymalizacja struktur danych dla programów funkcyjnych
    From: g...@g...com
    Injection-Date: Fri, 06 Oct 2017 17:59:43 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Lines: 100
    Xref: news-archive.icm.edu.pl pl.comp.programming:211574
    [ ukryj nagłówki ]

    W dniu piątek, 6 października 2017 14:01:22 UTC+2 użytkownik Maciej Sobczak napisał:
    > > > Bez przesady. Nawet nie podałeś definicji, tylko przykład, z którym ja się nie
    zgodziłem. To mi się nie kwalifikuje jako "ustaliliśmy".
    > >
    > > Pozwolę sobie wkleić:
    >
    > > Miałoby znaczyć tyle, że dla danego wejścia daje zawsze to samo wyjście.
    > >
    > > (koniec cytatu)
    >
    > I bez wklejania, powtórzę: każdy program tak ma.

    Widzę, że masz wielką ochotę kręcić się w kółko.
    Otóż nie każdy. Jeżeli chcesz jeszcze inną garść przykładów,
    to na przykład programy na maszyny niedeterministyczne
    tak nie mają.
    Tutaj masz przykłady:
    https://en.wikipedia.org/wiki/Nondeterministic_finit
    e_automaton
    https://en.wikipedia.org/wiki/Non-deterministic_Turi
    ng_machine


    > > > Ogólnie, oodwoływanie się do takich pojęć jak "istota czegoś" jest trochę...
    nieinżynierskie.
    > >
    > > Owszem. Ale dlaczego miałoby to być problemem?
    >
    > Bo jest nieprecyzyjne i niedookreślone. A stąd prosta droga do nieporozumień.

    "Nieinżynierskie" nie znaczy ani "nieprecyzyjne" ani "nieokreślone".
    Pojęcie istoty też ma swój wpis na wikipedii:

    https://en.wikipedia.org/wiki/Essence

    > > Stwierdzenie, że kompilator jest w istocie programem czysto funkcyjnym
    > > oznacza tyle, że kompilacja jest rodzajem transformacji (przekształcenia).
    >
    > Każde przetwarzanie czegokolwiek takie jest.

    Nie każde. Istnieją przetwarzania niedeterministyczne, stochastyczne
    itd.

    > > Piszesz błędnie.
    > >
    > > Jeżeli mamy np. program
    > >
    > > int square(int x) {
    > > return x*x;
    > > }
    > >
    > > void main(int argc, char *argv[]) {
    > > assert(argc > 1);
    > > int n = atoi(argv[1]);
    > > printf("kwadrat liczby %d wynosi %d\n", n, square(n));
    > > }
    > >
    > > to square jest czystą funkcją.
    >
    > I w tym przykładzie kontekst jest ciekawszy, bo obszar użycia tego pojęcia jest
    dobrze określony. Pojęcie czystej funkcji (pure function) jest znane:
    >
    > https://en.wikipedia.org/wiki/Pure_function
    >
    > Co ciekawe, jest nawet użyteczne, nie tylko z powodów, o których pisałeś, ale
    również np. przy analizie poprawności albo optymalizacji programów wielowątkowych.
    >
    > Natomiast pojęcie *programu* czysto funkcyjnego jest słabe, bo właśnie granica
    pojęcia programu jest na jego efektach ubocznych, więc nie ma jak tej czystości
    zdefiniować. A podpieranie się hasłami typu "istota programu" prowadzi do kolejnych
    niedopowiedzeń, bo "istotą" Twojego ostatniego przykładu może nie być liczenie, tylko
    dialog z użytkownikiem albo formatowanie tesktu a programista użył square
    przypadkiem, bo akurat nie umiał napisać pierwiastkowania.

    Akurat w tym przypadku łatwo jest stwierdzić, że istotą tego
    programu jest podanie kontrprzykładu dla Twojego wcześniejszego twierdzenia.
    Natomiast nie ma nic kontrowersyjnego w tym, że np. istotą programu
    do dowodzenia twierdzeń jest dowodzenie twierdzeń, istotą kompilacji
    jest przekształcanie programów w języku zrozumiałym dla człowieka
    w równoważne programy w języku wykonywalnym przez maszynę, albo że
    istotą gry komputerowej jest dostarczanie interaktywnej rozrywki.
    Wynika to z samych definicji pojęć i nie potrzeba niczego więcej.

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: