eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programmingJaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018 › Re: Jaki język polecić początkującemu? - komentarz do artykułu w Programista 9/2018
  • 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.

Podziel się

Poleć ten post znajomemu poleć

Wydrukuj ten post drukuj


Następne wpisy z tego wątku

Najnowsze wątki z tej grupy


Najnowsze wątki

Szukaj w grupach

Eksperci egospodarka.pl

1 1 1

Wpisz nazwę miasta, dla którego chcesz znaleźć jednostkę ZUS.

Wzory dokumentów

Bezpłatne wzory dokumentów i formularzy.
Wyszukaj i pobierz za darmo: