Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]


Groups > pl.comp.programming > #30737

Re: Optymalizacja struktur danych dla programów funkcyjnych

From Roman Tyczka <noemail@because.no>
Newsgroups pl.comp.programming
Subject Re: Optymalizacja struktur danych dla programów funkcyjnych
Date 2017-10-04 20:02 +0200
Organization ATMAN - ATM S.A.
Message-ID <w1nv54d3e363$.dlg@tyczka.com> (permalink)
References (5 earlier) <b28b624e-6549-4b9c-9c5e-ea5e5a42cd27@googlegroups.com> <15f31349-863c-46a4-98f5-35501f1ea797@googlegroups.com> <4a8e7499-d2f2-4633-a873-6b31b53ba744@googlegroups.com> <58a53855-29ed-4086-8489-a4ce12e5ebc0@googlegroups.com> <bcc6d122-9147-4596-9b79-29a63e2c1db2@googlegroups.com>

Show all headers | View raw


On Wed, 4 Oct 2017 09:36:14 -0700 (PDT), M.M. wrote:

> On Wednesday, October 4, 2017 at 8:15:08 AM UTC+2, godek....@gmail.com wrote:
>> W dniu środa, 4 października 2017 00:21:38 UTC+2 użytkownik Maciej Sobczak napisał:
>>> > Nie. Na przykład unixowe polecenia takie jak mkdir czy rm nie są czysto
>>> > funkcyjne, bo ich istotą jest wykonanie pewnego skutku ubocznego -- zmiana
>>> > pewnego stanu.
>>> 
>>> Dokładnie to samo można powiedzieć o każdym programie, który cokolwiek produkuje na swoim wyjściu - bo operacje I/O (czyli również pisanie na stdout) to skutki uboczne. Nawet dokładnie tak się to nazywa w standardzie np. języka C.
>>> 
>>> Czyli przeginając argument w drugą stronę, można powiedzieć, że wszystkie interesujące programy produkują jakieś skutki uboczne (w przeciwnym razie nie ma po co ich uruchamiać), więc zgodnie z Twoją definicją nie są "czysto funkcyjne". Czy znowu to pojęcie nie jest użyteczne.
>> 
>> Otóż nie. Ale widzę, że po raz kolejny zamiast spróbować zrozumieć
>> pojęcie, starasz się je strolować i wmówić, że nie jest użyteczne.
>> 
>> Można sobie pomyśleć program, który oblicza wartość jakiegoś programu
>> czysto funkcyjnego i wyświetla ją na ekran. (Na przykład takie coś
>> robi interpreter). Interpreter nie jest czysto funkcyjny, a obliczany
>> przez niego program jest.
>> 
>>> > bazuje na operacji niedeterministycznej,
>>> > ponieważ losuje pewien obiekt.
>>> 
>>> "Losowanie" generatorem liczb pseudolosowych jest deterministyczne, tak jak każda inna sekwencja operacji arytmetycznych. A odwoływanie się do zewnętrznych źródeł szumu jest operacją wejścia, czyli znowu mówimy o deterministycznym programie, który przetwarza wejście na wyjście - i który dla takiego samego szumu da zawsze te same wyniki. Czyli który dla takiego samego wejścia da takie same wyjście. Sorry.
>> 
>> Widzę, że nie rozumiesz.
>> To, czy liczba jest pseudolosowa, czy nie jest, czy pochodzi z wejścia,
>> czy z kosmosu, nie ma znaczenia dla *ISTOTY* danego programu. Na tym
>> właśnie polega abstrakcja niedeterminizmu.
>> 
>>> > Zatem nie jest ze swojej istoty czysto
>>> > funkcyjny.
>>> 
>>> I dalej nie wiemy, co to niby miałoby oznaczać.
>> 
>> No, jeżeli usilnie staramy się nie zrozumieć, co to oznacza,
>> to nie wiemy.
>> 
>>> > Określenie "czysto funkcyjny" jest bardzo praktyczne, ponieważ
>>> > wyznacza środki analizy potrzebne do tego, żeby analizować dany
>>> > system.
>>> 
>>> Łomatko.
>> 
>> Może sobie poczytaj https://mitpress.mit.edu/sicp/full-text/sicp/book/node10.html
>> 
>>> > Systemy czysto funkcyjne można analizować w terminach
>>> > podstawień wartości wyrażeń za wyrażenia.
>>> 
>>> Czyli wszystkie programy można tak analizować. Każdy program jest deterministyczną funkcją Input -> Output.
>>> Dlatego to pojęcie nie jest użyteczne.
>> 
>> 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.
>> 
>> 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. Pojęcie "wewnętrznego
>> stanu" nie należy do ich opisu.
>> 
>>> > Bo rzeczywiście, wiele kompilatorów działa tak, że wykonuje pewien
>>> > efekt uboczny, np. sprawia, że na dysku pojawiają się jakieś pliki
>>> > (i czasem też znikają). Ale to nie należy do jego istoty, tylko
>>> > jest szczegółem implementacyjnym
>>> 
>>> W ten sposób można opisać każdy program - tzn. że owszem, robi efekty uboczne przy okazji operacji I/O (które są potrzebne, że przeczytać wejście i wyprodukować coś na wyjściu), ale one nie należą do jego istoty, tylko są szczegółem implementacyjnym, więc...
>> 
>> Nie, nie można.
>> Podałem podczas tej rozmowy kilka przykładów.
>> 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.
>> Dla mnie taki podział jest użyteczny. Jeżeli dla Ciebie nie jest,
>> to Twoja sprawa.
> 
> Pytanie, czy dla ogółu jest użyteczny? Póki co, ja to nawet nie widzę
> wyraźnej granicy podziałów ani korzyści z dzielenia - ale to pewnie
> coś ze mną nie tak.

Z tego co zrozumiałem to taki program wykonuje sekwencyjnie* rozkazy wg
zadanego schematu/algorytmu, jedzie od A do Z i się kończy. 

Tylko z tego nic nie wynika poza samym tym faktem. Ale może taki podział ma
gdzieś zastosowanie praktyczne.

*sekwencyjnie w sensie kolejnych kroków, które oczywiście może rozdzielać
na np. wątki


-- 
pozdrawiam
Roman Tyczka

Back to pl.comp.programming | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread


Thread

Optymalizacja struktur danych dla programów funkcyjnych godek.maciek@gmail.com - 2017-09-21 03:10 -0700
  Re: Optymalizacja struktur danych dla programów funkcyjnych wół, wół roboczy, wół dojno roboczo obronny 'POPIS/EU <NOSPAMtestowanije@go2.pl> - 2017-09-21 19:44 +0200
    Re: Optymalizacja struktur danych dla programów funkcyjnych godek.maciek@gmail.com - 2017-09-21 11:49 -0700
      Re: Optymalizacja struktur danych dla programów funkcyjnych Roman Tyczka <noemail@because.no> - 2017-09-21 22:35 +0200
      Re: Optymalizacja struktur danych dla programów funkcyjnych "M.M." <mmarszik@gmail.com> - 2017-09-21 13:41 -0700
      Re: Optymalizacja struktur danych dla programów funkcyjnych wół, wół roboczy, wół dojno roboczo obronny 'POPIS/EU <NOSPAMtestowanije@go2.pl> - 2017-09-28 18:08 +0200
        Re: Optymalizacja struktur danych dla programów funkcyjnych godek.maciek@gmail.com - 2017-09-28 10:22 -0700
          Re: Optymalizacja struktur danych dla programów funkcyjnych wół, wół roboczy, wół dojno roboczo obronny 'POPIS/EU <NOSPAMtestowanije@go2.pl> - 2017-09-28 19:54 +0200
          Re: Optymalizacja struktur danych dla programów funkcyjnych fir <profesor.fir@gmail.com> - 2017-09-28 12:14 -0700
  Re: Optymalizacja struktur danych dla programów funkcyjnych fir <profesor.fir@gmail.com> - 2017-09-30 04:57 -0700
    Re: Optymalizacja struktur danych dla programów funkcyjnych godek.maciek@gmail.com - 2017-09-30 07:58 -0700
      Re: Optymalizacja struktur danych dla programów funkcyjnych wół, wół roboczy, wół dojno roboczo obronny 'POPIS/EU <NOSPAMtestowanije@go2.pl> - 2017-09-30 17:14 +0200
        Re: Optymalizacja struktur danych dla programów funkcyjnych Szyk Cech <szyk100@o2.pl> - 2017-09-30 20:13 +0200
          Re: Optymalizacja struktur danych dla programów funkcyjnych wół, wół roboczy, wół dojno roboczo obronny 'POPIS/EU <NOSPAMtestowanije@go2.pl> - 2017-09-30 20:18 +0200
      Re: Optymalizacja struktur danych dla programów funkcyjnych Maciej Sobczak <see.my.homepage@gmail.com> - 2017-10-02 05:20 -0700
        Re: Optymalizacja struktur danych dla programów funkcyjnych godek.maciek@gmail.com - 2017-10-02 11:00 -0700
          Re: Optymalizacja struktur danych dla programów funkcyjnych Roman Tyczka <noemail@because.no> - 2017-10-03 11:35 +0200
            Re: Optymalizacja struktur danych dla programów funkcyjnych godek.maciek@gmail.com - 2017-10-03 10:52 -0700
          Re: Optymalizacja struktur danych dla programów funkcyjnych Maciej Sobczak <see.my.homepage@gmail.com> - 2017-10-03 09:56 -0700
            Re: Optymalizacja struktur danych dla programów funkcyjnych godek.maciek@gmail.com - 2017-10-03 11:01 -0700
              Re: Optymalizacja struktur danych dla programów funkcyjnych Maciej Sobczak <see.my.homepage@gmail.com> - 2017-10-03 15:21 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych godek.maciek@gmail.com - 2017-10-03 23:15 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych "M.M." <mmarszik@gmail.com> - 2017-10-04 09:36 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych Roman Tyczka <noemail@because.no> - 2017-10-04 20:02 +0200
                Re: Optymalizacja struktur danych dla programów funkcyjnych godek.maciek@gmail.com - 2017-10-04 11:58 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych Maciej Sobczak <see.my.homepage@gmail.com> - 2017-10-04 16:37 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych godek.maciek@gmail.com - 2017-10-04 23:28 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych Maciej Sobczak <see.my.homepage@gmail.com> - 2017-10-05 04:48 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych godek.maciek@gmail.com - 2017-10-05 09:58 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych Maciej Sobczak <see.my.homepage@gmail.com> - 2017-10-06 05:01 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych godek.maciek@gmail.com - 2017-10-06 10:59 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych Maciej Sobczak <see.my.homepage@gmail.com> - 2017-10-07 14:22 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych godek.maciek@gmail.com - 2017-10-08 01:47 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych Maciej Sobczak <see.my.homepage@gmail.com> - 2017-10-08 14:30 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych godek.maciek@gmail.com - 2017-10-08 22:58 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych Maciej Sobczak <see.my.homepage@gmail.com> - 2017-10-09 05:25 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych fir <profesor.fir@gmail.com> - 2017-10-09 09:12 -0700
                Re: Optymalizacja struktur danych dla programów funkcyjnych godek.maciek@gmail.com - 2017-10-09 10:47 -0700
    Re: Optymalizacja struktur danych dla programów funkcyjnych "M.M." <mmarszik@gmail.com> - 2017-09-30 12:54 -0700

csiph-web