-
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
Następne wpisy z tego wątku
- 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
- 09.10.17 18:12 fir
- 09.10.17 19:47 g...@g...com
Najnowsze wątki z tej grupy
- Brednie w wiki - hasło Dehomag
- Perfidne ataki krakerów z KRLD na skrypciarzy JS i Pajton
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- Instytut IDEAS może zacząć działać: "Ma to być unikalny w europejskiej skali ośrodek badań nad sztuczną inteligencją."
- U nas propagują modę na SI, a w Chinach naukowcy SI po kolei umierają w wieku 40-50lat
- C++. Podróż Po Języku - komentarz
- "Wuj dobra rada" z KDAB rozważa: Choosing the Right Programming Language for Your Embedded Linux Device
- Nowa ustawa o ochronie praw autorskich - opis problemu i szkic ustawy
- Alg. kompresji LZW
- Popr. 14. Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
- Arch. Prog. Nieuprzywilejowanych w pełnej wer. na nowej s. WWW energokod.pl
- 7. Raport Totaliztyczny: Sprawa Qt Group wer. 424
- TCL - problem z escape ostatniego \ w nawiasach {}
- Nauka i Praca Programisty C++ w III Rzeczy (pospolitej)
Najnowsze wątki
- 2025-05-06 Protoków komunikacyjny do urządzenia pomiarowego
- 2025-05-06 Łódź => Mainframe (z/OS, Assembler) Developer <=
- 2025-05-06 Warszawa => Key Account Manager IT <=
- 2025-05-06 Warszawa => Key Account Manager (Usługi HR) <=
- 2025-05-06 trasa Londyn - Koszalin
- 2025-05-06 "Unia Europejska poważnie myśli o wprowadzeniu całkowitego zakaz importu gazu
- 2025-05-05 Jak naładować akumulator iRobot DC 14,4V 3300 mAh zasilaczem ?
- 2025-05-05 Kopanie Bitcoinów kosztuje 137.000 $, więcej niż cena 95.000 $
- 2025-05-05 Kraków => Koordynator Produkcji / Przedstawiciel ds. rozwoju produktu
- 2025-05-05 Kraków => Production Coordinator / Representant Product Dev <=
- 2025-05-05 Gdynia => Konsultant wdrożeniowy (systemy controlingowe) <=
- 2025-05-05 Gdańsk => Senior Node.js Developer (doświadczenie z framework Nest.j
- 2025-05-05 Salwador
- 2025-05-05 Gdańsk => Controlling systems Consultant <=
- 2025-05-05 Czeladź => Key Account Manager IT <=