-
X-Received: by 2002:a0c:b917:: with SMTP id u23mr82925qvf.6.1547121157727; Thu, 10
Jan 2019 03:52:37 -0800 (PST)
X-Received: by 2002:a0c:b917:: with SMTP id u23mr82925qvf.6.1547121157727; Thu, 10
Jan 2019 03:52:37 -0800 (PST)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!fu-berlin.de!v55no2774142qtk.0!news-out
.google.com!m21ni19533qta.0!nntp.google.com!v55no2774140qtk.0!postnews.google.c
om!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Thu, 10 Jan 2019 03:52:37 -0800 (PST)
In-Reply-To: <9...@g...com>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=213.192.68.153;
posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
NNTP-Posting-Host: 213.192.68.153
References: <c...@g...com>
<f...@g...com>
<a...@g...com>
<7...@g...com>
<a...@g...com>
<6...@g...com>
<0...@g...com>
<a...@g...com>
<1...@g...com>
<e...@g...com>
<6...@g...com>
<1...@g...com>
<2...@g...com>
<5...@g...com>
<9...@g...com>
<1...@g...com>
<8...@g...com>
<d...@g...com>
<a...@g...com>
<c...@g...com>
<6...@g...com>
<3...@g...com>
<a...@g...com>
<9...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <5...@g...com>
Subject: Re: Jaki język polecić początkującemu? - komentarz do artykułu w
Programista 9/2018
From: g...@g...com
Injection-Date: Thu, 10 Jan 2019 11:52:37 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Xref: news-archive.icm.edu.pl pl.comp.programming:213231
[ ukryj nagłówki ]W dniu czwartek, 10 stycznia 2019 11:49:03 UTC+1 użytkownik Maciej Sobczak napisał:
> > > > > 2. Programowanie imperatywne w żaden sposób nie wyklucza analizy
podstawieniowej.
> > > >
> > > > Ok, w takim razie weź kod fira, który przekleiłem do swojej odpowiedzi, i
pokaż nam, jak by dla niego taka analiza podstawieniowa wyglądała.
> > >
> > > A na jakie pytanie chciałbyś taką analizą odpowiedzieć?
> >
> > Na przykład, jaki ten program da wynik dla argumentu "7".
>
> Uruchamiamy program i mamy wynik. Co ciekawe, są programy, których wykonania nie da
się pominąć.
No właśnie tu jest sedno problemu.
Program funkcyjny mogę wyjaśnić w terminach podstawiania wartości
za wyrażenia, a programu imperatywnego nie mogę.
Mogę w najlepszym razie przesymulować przebieg jakiejś maszyny.
Jest to możliwe, ale jest trudniejsze (ma większy narzut kognitywny)
> I nie całkiem to miałem na myśli pisząc o analizie - bardziej mnie interesuje np.
czy program nie wykona niewłaściwej operacji (jak dzielenie przez zero). Tutaj metody
analizy mają podobną moc.
>
> https://www.hillelwayne.com/post/theorem-prover-show
down/
>
> "I keep hearing that it's easier to analyze pure functional code than mutable
imperative code. But nobody gives rigorous arguments for this and nobody provides
concrete examples. Nobody actually digs into why assignments and transitions are so
much harder to reason about than pure functions ..."
>
> Ciekawe? to czytaj dalej. Człowiek zrobił konkurs i zaprosił do niego zwolenników
obu obozów, żeby pokazali siłę swoich rozwiązań.
>
> Wiesz, kto wygrał?
>
> Nikt nie wygrał. Wszyscy robili tak samo źle (!).
>
> Z "Final thoughts":
>
> "the claim "it's easier to reason about FP than imperative" is wrong"
>
> Ale polecam całość, bo oczywiście problem jest wielowymiarowy.
Tak, jest.
I ja też się zgadzam z wieloma obserwacjami Hillela.
Uważam że on i ten jego kolega, Ron Pressler, prezentują
bardzo wyważone podejście do tego zagadnienia.
Też spotykam się z osobami, które twierdzą, że programowanie funkcyjne jest lepsze,
bo tak, albo że używanie monady IO to programowanie funkcyjne.
Programowanie funkcyjne ma tę zaletę, że takie programy można sobie analizować,
podstawiając wartości za wyrażenia.
I na tym, być może, kończy się lista zalet.
(Może nie. Może też systemy typów pozwalają wyrażać jakieś własności, co ma pewną
dodatkową wartość w niektórych przypadkach. Może też niektóre problemy znajdują
elegantszy wyraz w językach funkcyjnych. No ale inne pewnie nie).
Ja nie mówię - i to od początku tego nie mówię - że nie należy stosować operatora
przypisania.
Mówię, że tam, gdzie nie jest to konieczne, lepiej tego unikać.
Następne wpisy z tego wątku
- 10.01.19 12:55 AK
- 10.01.19 13:00 g...@g...com
- 10.01.19 14:02 AK
- 10.01.19 14:11 AK
- 10.01.19 14:22 g...@g...com
- 10.01.19 15:47 AK
- 11.01.19 07:57 Maciej Sobczak
- 11.01.19 08:05 Maciej Sobczak
- 11.01.19 19:14 g...@g...com
- 11.01.19 21:31 AK
- 11.01.19 22:42 g...@g...com
- 14.01.19 09:36 Maciej Sobczak
- 14.01.19 09:47 g...@g...com
- 14.01.19 10:12 AK
- 14.01.19 10:29 AK
Najnowsze wątki z tej grupy
- 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)
- testy-wyd-sort - Podsumowanie
- Tworzenie Programów Nieuprzywilejowanych Opartych Na Wtyczkach
- Do czego nadaje się QDockWidget z bibl. Qt?
- 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
Najnowsze wątki
- 2025-01-01 Już nie płoną
- 2025-01-01 Digikey, SN74CBT3253CD, FST3253, ktoś ma?
- 2025-01-01 Co tam u Was
- 2025-01-01 Koder szuka pracy. Koduję w j.: Asembler, C, C++ (z bibl. Qt) i D.
- 2025-01-01 Gdańsk => Delphi Programmer <=
- 2025-01-01 Łódź => Programista Full Stack .Net <=
- 2025-01-01 Żerniki => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-01-01 Wrocław => Specjalista ds. Sprzedaży <=
- 2024-12-31 Warszawa => Spedytor Międzynarodowy <=
- 2024-12-31 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2025-01-01 Przypomnienie: Mini Netykieta polskich grup dyskusyjnych wer. 3.2.2
- 2024-12-31 Zamykanie konta dziecka.
- 2024-12-31 Czy apka bankowa to gra komputerowa?
- 2024-12-31 Szukam: czujnik ruchu z możliwością zaączenia na stałe
- 2024-12-31 Warszawa => Solution Architect (Java background) <=