eGospodarka.pl
eGospodarka.pl poleca

eGospodarka.plGrupypl.comp.programming"Najbardziej imponujący kod, jaki widziałem"Re: "Najbardziej imponujący kod, jaki widziałem"
  • X-Received: by 2002:ae9:ef48:: with SMTP id d69mr94358470qkg.313.1564861872138; Sat,
    03 Aug 2019 12:51:12 -0700 (PDT)
    X-Received: by 2002:ae9:ef48:: with SMTP id d69mr94358470qkg.313.1564861872138; Sat,
    03 Aug 2019 12:51:12 -0700 (PDT)
    Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!takemy.news.tel
    efonica.de!telefonica.de!weretis.net!feeder7.news.weretis.net!proxad.net!feeder
    1-2.proxad.net!209.85.160.216.MISMATCH!b26no9721161qtq.0!news-out.google.com!a5
    ni1053qtd.0!nntp.google.com!b26no9721150qtq.0!postnews.google.com!glegroupsg200
    0goo.googlegroups.com!not-for-mail
    Newsgroups: pl.comp.programming
    Date: Sat, 3 Aug 2019 12:51:11 -0700 (PDT)
    In-Reply-To: <2...@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: <e...@g...com>
    <1...@g...com>
    <c...@g...com>
    <0...@g...com>
    <b...@g...com>
    <d...@g...com>
    <2...@g...com>
    User-Agent: G2/1.0
    MIME-Version: 1.0
    Message-ID: <c...@g...com>
    Subject: Re: "Najbardziej imponujący kod, jaki widziałem"
    From: Maciej Sobczak <s...@g...com>
    Injection-Date: Sat, 03 Aug 2019 19:51:12 +0000
    Content-Type: text/plain; charset="UTF-8"
    Content-Transfer-Encoding: quoted-printable
    Xref: news-archive.icm.edu.pl pl.comp.programming:213746
    [ ukryj nagłówki ]

    > Czasem w radiu słyszę reklamy, że producent leku przeprowadził niezależne badania,

    Ale ten producent wziął dane z niezależnego serwisu (Rosetta Code). Ty też możesz te
    dane stamtąd wziąć.

    > Trochę też rozczarowuje brak APLa w ich rankingu

    http://rosettacode.org/wiki/Category:Programming_Lan
    guages

    Ja myślę, że tabelka by nie była czytelna, gdyby wszystkie języki tam uwzględnić.

    > pewnie wyszłoby jeszcze krócej, niż Mathematica, i by się musieli tłumaczyć.

    Gorzej. W tej dyskusji to LISP wyglądałby jeszcze biedniej.

    > W każdym razie "krócej" nie zawsze znaczy "lepiej".

    To prawda.

    > > A dlaczego akurat do meta-programowania jest najlepsza?
    >
    > Chyba dlatego, że ma najmniejszą możliwą liczbę reguł, dzięki czemu składnia jest
    jednocześnie formatem serializacji (i to lżejszym od np. JSONa)

    Dokładnie to samo można napisać o Wolframie (to jest ta "LISPowatość"). Przykładowo,
    cały notebook, cokolwiek by nie miał, zapisany na dysku jest jednym legalnym
    wyrażeniem.

    [Nothing]
    > Na pewno do zrozumienia wymagała
    > - znajomości funkcji "map"

    Bo akurat chciałem, żeby przykład był w stylu funkcjonalnym. Nie musiał być i nie
    musiało tam być funkcji map.

    > - wiedzy o osobliwym zachowaniu wartości "Nothing"

    Bo właśnie to chciałem zaprezentować. Da się też bez tej wiedzy, czyli gorzej. Da się
    nawet tak samo źle, jak w Twoim przykładzie. Wolfram to bardzo uniwersalny język,
    może nawet udawać gorsze języki. :-)

    > Łatwo jest zdefiniować "only" przy pomocy "append-map" (czy flatMap, czy concatMap,
    jak zwał tak zwał)
    >
    > (define (only satisfying? elements)
    > (append-map (lambda (element)
    > (if (satisfying? element)
    > `(,element)
    > '()))
    > elements))
    >
    > Wygląda prawie tak samo, jak Twoja, tylko nie trzeba wymyślać "specjalnych
    elementów" o "magicznych właściwościach" i "niejasnym statusie ontycznym".

    No jak nie. Ja tam widzę pustą listę gdy warunek nie jest spełniony. Skąd mam
    wiedzieć, że pusta lista jest ignorowana przez append-map? Przecież mogła być też
    dodana do wyniku.
    A gdybym jednak chciał dodać pustą listę do wyniku?

    W Wolframie pusta lista i Nothing to dwie różne sprawy.
    Przykładowo:

    only[condition_, list_] := Map[
    Function[x,
    If[condition[x], x, {}] (* tutaj jest {} zamiast Nothing *)
    ],
    list
    ]

    only[EvenQ, {1, 2, 3, 4, 5, 6, 7}]

    {{}, 2, {}, 4, {}, 6, {}}

    Jest różnica, prawda? Jak tą różnicę uzyskać w Twoim przykładzie?

    > Najwidoczniej dla mnie prostota jest ważniejsza od wygody (którą Ty tutaj nazywasz
    "użytecznością"), a dla Ciebie na odwrót.

    Zgodziłbym się, gdyby Twoje przykłady były proste. Ale nie są.

    [...]
    > Zaprawieni programiści Lispa nazywają ten proces "rytuałem przejścia".

    Rozumiem. Wspominałeś już to określenie, ale wcześniej nie zrozumiałem. Czyli "rytuał
    przejścia" to sytuacja, kiedy ktoś bez sukcesu próbuje usprawnić język i ostatecznie
    rezygnuje z tego, wracając do języka bez usprawnień.

    A jest jakaś fajna nazwa na sytuację, kiedy ktoś bez sukcesu próbuje usprawnić język
    i ostatecznie rezygnuje z tego i zmienia język na lepszy?
    Nie wiem - rytuał wyjścia? odejścia? rozejścia?
    Musi być jakaś fajna nazwa.

    > Być może sytuacja z Mathematiką ma się nieco inaczej, bo ona ma już wokół siebie
    stosunkowo dużą społeczność.

    To pewnie ludzie po rytuale wyjścia z LISPa. :-D

    W porównaniu do poprzednich postów, w których próbowałeś wykazać, że nikt z tego nie
    korzysta, zauważam pozytywną zmianę.

    --
    Maciej Sobczak * http://www.inspirel.com

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: