-
X-Received: by 2002:a37:77c5:: with SMTP id s188mr28324qkc.0.1547538381352; Mon, 14
Jan 2019 23:46:21 -0800 (PST)
X-Received: by 2002:a37:77c5:: with SMTP id s188mr28324qkc.0.1547538381352; Mon, 14
Jan 2019 23:46:21 -0800 (PST)
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!v55no81
66686qtk.0!news-out.google.com!m21ni4861qta.0!nntp.google.com!v55no8166676qtk.0
!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Mon, 14 Jan 2019 23:46:21 -0800 (PST)
In-Reply-To: <8...@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>
<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>
<a...@g...com>
<5...@g...com>
<q17bsf$1157$1@gioia.aioe.org>
<c...@g...com>
<q17fpf$1j06$1@gioia.aioe.org>
<4...@g...com>
<q17ltn$fmv$1@gioia.aioe.org>
<f...@g...com>
<q1aufn$15m2$1@gioia.aioe.org>
<3...@g...com>
<a...@g...com>
<8...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <2...@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: Tue, 15 Jan 2019 07:46:21 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 49
Xref: news-archive.icm.edu.pl pl.comp.programming:213281
[ ukryj nagłówki ]W dniu wtorek, 15 stycznia 2019 08:03:18 UTC+1 użytkownik Maciej Sobczak napisał:
> > W Haskellu jest (z grubsza) podobnie.
> > Tzn. tam wszystko jest funkcją, ale procedury są emulowane za pomocą typu IO,
który ma inne reguły kompozycji, niż zwykłe funkcje.
>
> Obrzydliwość. "Procedury są emulowane" - fuj. Ani odrobinę nie jest to lepsze od
funkcji, która zwraca obrzydliwy pół-typ void, który tu i ówdzie też ma inne reguły.
Nie wiem. Być może pod jakimiś względami jest lepsze.
Choćby pod takim, że jeżeli funkcja może potencjalnie mieć efekt uboczny, to
informacja o tym musi być zawarta w jej typie.
Albo pod takim, że stosunkowo łatwo wyabstrahować od konkretnego świata i dostarczyć
mockową implementację zachowania skutków ubocznych na potrzeby testów.
Albo pod takim, że owe "inne reguły" są mimo wszystko podporządkowane pewnemu
prostemu matematycznemu rygorowi.
> To również pokazuje, że funkcjonalność jest paradygmatem sztucznym i nie
odzwierciedla potrzeb i szkodzi zdrowiu. Skoro krytykujesz C i C++ za to, że nadużyły
pojęcia funkcji do niewłaściwych celów, to konsekwentnie powinieneś też krytykować
Haskella za to samo. :-)
Robię to. Tzn. mnie haskellowe rozwiązanie nie przekonuje, i traktuję je najwyżej
jako ciekawostkę akademicką.
Chciałem jedynie zwrócić uwagę, że zarówno Haskell jak i Ada uważa ten podział za
istotny i oferuje jakieś środki do wyrażania go.
Rozwiązanie z Ady uważam za naturalniejsze - tym bardziej, że nawet sami twórcy
Haskella używają na określenie działania typu IO słowa "magic".
(Tym niemniej, spotykam czasem ludzi, którzy uważają, że imperatywny program napisany
w Haskellu jest lepszy, bo... no bo tak)
> > > Język tego nie wymusza, ale naturalnie łatwiej wtedy o konwencję, że funkcje
robi się "czyste" a procedury zostawia się na te okazje, kiedy efekty uboczne są
celowe.
> >
> > A dlaczego to jest dobre? ;]
>
> Efekty uboczne? Bo świat ma efekty uboczne, już o tym pisaliśmy.
Nie o to pytam. Pytam dlaczego podział na czyste funkcje i dokonujące efektów
procedury jest dobry.
Następne wpisy z tego wątku
- 15.01.19 12:28 AK
- 15.01.19 12:32 AK
- 15.01.19 12:44 AK
- 16.01.19 11:13 Maciej Sobczak
- 16.01.19 12:01 g...@g...com
- 16.01.19 12:28 Maciej Sobczak
- 16.01.19 13:06 AK
- 16.01.19 13:08 AK
- 16.01.19 13:13 AK
- 16.01.19 13:15 Maciej Sobczak
- 16.01.19 13:27 Maciej Sobczak
- 16.01.19 13:37 g...@g...com
- 16.01.19 14:57 AK
- 16.01.19 15:06 AK
- 16.01.19 15:12 AK
Najnowsze wątki z tej grupy
- 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)
- 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
Najnowsze wątki
- 2025-01-18 Warszawa => Developer .NET (mid) <=
- 2025-01-18 Katowice => Administrator IT - Systemy Operacyjne i Wirtualizacja <=
- 2025-01-17 Zniknął list gończy za "Frogiem". Frog się nam odnalazł?
- 2025-01-17 Kto wytłumaczy "głupiemu" prezydentowi Dudzie wielką moc prawną "dekretu premiera" TUSKA? [(C)Korneluk (2025)]
- 2025-01-17 Warszawa => Inżynier oprogramowania .Net <=
- 2025-01-17 Natalia z Andrychowa
- 2025-01-17 Gliwice => Business Development Manager - Dział Sieci i Bezpieczeńst
- 2025-01-17 Warszawa => System Architect (Java background) <=
- 2025-01-17 Warszawa => Full Stack .Net Engineer <=
- 2025-01-17 Gliwice => IT Expert (Network Systems area) <=
- 2025-01-17 Lublin => Programista Delphi <=
- 2025-01-17 Warszawa => Developer .NET (mid) <=
- 2025-01-17 Ostrów Wielkopolski => Konsultant Wdrożeniowy Comarch XL/Optima (Ksi
- 2025-01-17 Katowice => Senior Field Sales (system ERP) <=
- 2025-01-17 Wróblewo => Analityk finansowy <=