-
Data: 2017-10-04 00:21:37
Temat: Re: Optymalizacja struktur danych dla programów funkcyjnych
Od: Maciej Sobczak <s...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]> 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.
> 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.
> Zatem nie jest ze swojej istoty czysto
> funkcyjny.
I dalej nie wiemy, co to niby miałoby oznaczać.
Podsumujmy co wiemy do tej pory:
- wszystkie programy deterministycznie przetwarzają wejście na wyjście i produkują
przy tej okazji skutki uboczne.
> Określenie "czysto funkcyjny" jest bardzo praktyczne, ponieważ
> wyznacza środki analizy potrzebne do tego, żeby analizować dany
> system.
Łomatko.
> 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.
> 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...
Więc znowu albo każdy program jest "czysto cośtam", albo każdy nie jest.
> > Poza tym, obowiązuje zasada "nie wiem o co chodzi, ale chętnie się wypowiem".
>
> A, to przepraszam :)
Proszę. :-)
--
Maciej Sobczak * http://www.inspirel.com
Następne wpisy z tego wątku
- 04.10.17 08:15 g...@g...com
- 04.10.17 18:36 M.M.
- 04.10.17 20:02 Roman Tyczka
- 04.10.17 20:58 g...@g...com
- 05.10.17 01:37 Maciej Sobczak
- 05.10.17 08:28 g...@g...com
- 05.10.17 13:48 Maciej Sobczak
- 05.10.17 18:58 g...@g...com
- 06.10.17 14:01 Maciej Sobczak
- 06.10.17 19:59 g...@g...com
- 07.10.17 23:22 Maciej Sobczak
- 08.10.17 10:47 g...@g...com
- 08.10.17 23:30 Maciej Sobczak
- 09.10.17 07:58 g...@g...com
- 09.10.17 14:25 Maciej Sobczak
Najnowsze wątki z tej grupy
- Bibl. Qt jest sztucznie ograniczona - jest nieprzydatna do celów komercyjnych
- Co sciaga kretynow
- AEiC 2024 - Ada-Europe conference - Deadlines Approaching
- Jakie są dobre zasady programowania programów opartych na wtyczkach?
- sprawdzanie słów kluczowych dot. zła
- Re: W czym sie teraz pisze programy??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
- Ada 2022 Language Reference Manual to be Published by Springer
- Press Release - AEiC 2023, Ada-Europe Reliable Softw. Technol.
- Ada-Europe - AEiC 2023 early registration deadline approaching
- Ada-Europe Int.Conf. Reliable Software Technologies, AEiC 2023
- Ile cykli zajmuje mnożenie liczb 64-bitowych?
- Ideologia Polskiego Programisty wer.3
Najnowsze wątki
- 2024-04-29 Warszawa => Staż w dziale Sprzedaży B2B (2 miejsca) <=
- 2024-04-29 Gdańsk => Kierownik Działu Spedycji Międzynarodowej <=
- 2024-04-29 Ulm => IT Network Engineer <=
- 2024-04-29 Gdańsk => UX/UI Designer <=
- 2024-04-29 Gdańsk => AI Specialist <=
- 2024-04-29 frankowicze odcinek NNN
- 2024-04-29 Warszawa => Specjalista ds. Cyberbezpieczeństwa <=
- 2024-04-29 Kraków => MS Dynamics 365BC/NAV Developer <=
- 2024-04-29 Zielona Góra => Inżynier R&D Energoelektronik <=
- 2024-04-29 Warszawa => Google Ads Freelancer <=
- 2024-04-28 wymiana przewodu od licznika do mieszkania
- 2024-04-28 Lustra w maszynie ASML
- 2024-04-28 Elektryk przytarł podłogę
- 2024-04-27 Nowy, "szybki "komputer AsRock nie posiada modułu TPM
- 2024-04-27 Nowy, "szybki "komputer AsRock nie posiada modułu TPM