Article View: pl.comp.programming
Article #215812Re: "Najbardziej imponujący kod, jaki widziałem"
From: godek.maciek
Date: Wed, 07 Aug 2019 14:43
Date: Wed, 07 Aug 2019 14:43
68 lines
6478 bytes
6478 bytes
W dniu środa, 7 sierpnia 2019 14:02:30 UTC+2 użytkownik Maciej Sobczak napisał:
> > > Map[Function[x, Power[x,2]], List[1,2,3,4]]
> >
> > Ale ta wersja korzysta z mniejszej ilości reguł, które "czysty umysł" potencjalnego czytelnika musi sobie przyswoić, żeby móc ją zrozumieć.
>
> Bez przesady. W odróżnieniu od komputerów, człowiek nie musi "zarządzać" regułami, które zna. W szczególności znaczkologia, którą zna nawet ze szkoły podstawowej jest znacznie bardziej skomplikowana - dlatego dla większości ludzi zapis x^2 jest od razu czytelny, podczas gdy Power[x,2] budzi podejrzenia o jakiś podstęp
Całkowicie się nie zgadzam.
Nigdy nie miałem w szkole wprowadzanego zapisu x^2.
W języku C ^ oznacza operację xor.
W Pythonie (i zdaje się że FORTRANie też) do potęgowania używa się operatora **.
Użycie symbolu ^ do wyrażenia potęgowania jest może uznane przez garstkę osób piszących w raczej niszowych językach.
> pomimo tego, że "korzysta z mniejszej ilości reguł". Podobnie jest z nawiasami, czy w ogóle z operatorami.
No właśnie. Ile godzin spędziliśmy w szkole, przyzwyczajając się do tej notacji?
> Dlatego też to:
>
> a*x^2 + b*x + c
>
> jest czytelniejsze, niż to:
>
> Plus[c, Times[b, x], Times[a, Power[x, 2]]]
Tzn. chyba chciałeś powiedzieć, że Tobie wydaje się czytelniejsze, a nie "jest czytelniejsze", bo to ostatnie określenie nawet nie do końca wiadomo, co znaczy.
> W pewnej optymalnej ilości skróty są więc czytelniejsze i naturalniejsze.
Może raczej "w pewnych bardzo szczególnych okolicznościach".
W innych np. [a, b, c] będzie lepszą reprezentacją wielomianu, który powyżej zapisałeś.
Zresztą notacja matematyczna ma to do siebie, że jest zoptymalizowana względem dość specyficznego celu, mianowicie łatwości manipulacji formułami na papierze albo tablicy. Łatwiej jest zapisać "x", bo to tylko dwa ruchy ręką, niż, dajmy na to, "ilość" (czy cokolwiek chcemy wyrazić przy pomocy tej liczby)
> > Być może użycie "list comprehensions" byłoby dla różnych osób czytelniejsze, tzn. coś jak
> >
> > [x^2 | x <- {1,2,3,4}]
>
> Żaden postęp w stosunku do zwykłego mapowania. To jest nadmiarowa notacja. Jeśli dla kogoś czytelna, fajnie, ale posługując się Twoim własnym argumentem, wymaga znajomości większej liczby reguł. I ma bardzo ograniczone zastosowania.
Tak samo jak /@ jest nadmiarową notacją.
List comprehensions mają jednak pewną przewagę nad map. Przy pomocy map nie napiszesz czegoś takiego:
[(x, y, z) | x <- [1 .. 100], y <- [1 .. 100], z <- [1 .. 100], x^2+y^2==z^2]
> > Automat też potrafi korzystać ze skrótów. Automatowi naprawdę jest wszystko jedno. Automat zrobi wszystko, do czego go zaprogramujesz.
>
> Ale właśnie w przypadku automatu ja chcę, żeby był jak najprostszy. Bo wtedy spędze mniej czasu na jego programowaniu.
A w przypadku człowieka dlaczego nie chcesz, żeby był jak najprostszy?
> > Moje pytanie jest takie, czy ta pierwsza wersja rzeczywiście ma jakąś znaczącą przewagę nad tą ostatnią - na tyle znaczącą, żeby uzasadniała komplikowanie reguł dotyczących notacji.
>
> Tak. Jest prostsza dla tych, co znają znaczki. Dokładnie tak samo, jak z wielomianem kwadratowym ze szkoły z powyższego przykładu.
Zrobiłem ankietę na Twitterze. Jak do tej pory zagłosowały 32 osoby.
Wygląda na to, że spośród nich zgadza się z Tobą dokładnie 0 osób.
https://twitter.com/PaniczGodek/status/1159029909672603648
> > Moim zdaniem nie. Zdaniem Wolframa (i Twoim chyba także) najwidoczniej tak.
>
> Błąd. Ja korzystam z *obu* wersji. Zależnie od tego, która jest w danym kontekście bardziej efektywna.
> Znaczy - w każdym kontekście moja efektywność może być optymalna. :-)
Cały czas nie znam kontekstu, w którym ta druga notacja z haszami i małpami byłaby efektywniejsza.
Technical Details
Message-ID:
<9703a98e-9cc5-435a-ab1b-16536c103163@googlegroups.com>Path:
mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news-1.dfn.de!news.dfn.de!npeer.de.kpn-eurorings.net!npeer-ng0.de.kpn-eurorings.net!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!b26no9083407qtq.0!news-out.google.com!e17ni2889qtg.1!nntp.google.com!b26no9083396qtq.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mailReferences:
<edc55064-0038-4844-a994-4cddd7d77d76@googlegroups.com> <11e4b1d7-2d97-48ac-8a3d-9172df46bf0b@googlegroups.com> <c10e995b-108e-4770-840c-f27c95c0d36c@googlegroups.com> <004de5cc-bf54-4740-92d9-d7f5892c68f1@googlegroups.com> <ba268c8f-c446-4d4c-93e9-b640ebd0f75e@googlegroups.com> <d570836b-f9da-4359-b307-981afc6d4b40@googlegroups.com> <2f6d1e89-c868-49ad-bf88-81e0560f48c9@googlegroups.com> <cff169cc-d481-4ded-ba90-43d0f5ecc05e@googlegroups.com> <b9c338d3-c80c-4b42-99ff-da12417126b7@googlegroups.com> <10218256-a88b-4be5-9815-723d2b757225@googlegroups.com> <ae20996a-1fd5-44dc-a39e-e627c633cc06@googlegroups.com> <e8792740-b3b1-48c6-917f-1dfb1fe8bab1@googlegroups.com> <c4e3147c-61af-4b8b-86f2-9e367e44b228@googlegroups.com> <82173aaf-ab06-498e-babc-9eb734bba184@googlegroups.com> <6dfc0a33-10bc-4915-836a-4bf4e57cd88f@googlegroups.com> <c093e8b7-c3c6-40c6-bc96-026e7e8f831c@googlegroups.com> <0468ff6e-bb49-412f-8dd1-3773a7a4283c@googlegroups.com> <a334c5de-7d3d-431e-8912-fe5dad2021ce@googlegroups.com>Show Full Headers
Complete Article Headers
X-Received: by 2002:a37:de18:: with SMTP id h24mr8549931qkj.147.1565189015938; Wed, 07 Aug 2019 07:43:35 -0700 (PDT) X-Received: by 2002:a0c:df12:: with SMTP id g18mr8164436qvl.34.1565189015781; Wed, 07 Aug 2019 07:43:35 -0700 (PDT) Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!news-1.dfn.de!news.dfn.de!npeer.de.kpn-eurorings.net!npeer-ng0.de.kpn-eurorings.net!peer01.ams1!peer.ams1.xlned.com!news.xlned.com!peer01.am4!peer.am4.highwinds-media.com!peer03.iad!feed-me.highwinds-media.com!news.highwinds-media.com!b26no9083407qtq.0!news-out.google.com!e17ni2889qtg.1!nntp.google.com!b26no9083396qtq.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail Newsgroups: pl.comp.programming Date: Wed, 7 Aug 2019 07:43:35 -0700 (PDT) In-Reply-To: <a334c5de-7d3d-431e-8912-fe5dad2021ce@googlegroups.com> Complaints-To: groups-abuse@google.com Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=213.192.68.153; posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r NNTP-Posting-Host: 213.192.68.153 References: <edc55064-0038-4844-a994-4cddd7d77d76@googlegroups.com> <11e4b1d7-2d97-48ac-8a3d-9172df46bf0b@googlegroups.com> <c10e995b-108e-4770-840c-f27c95c0d36c@googlegroups.com> <004de5cc-bf54-4740-92d9-d7f5892c68f1@googlegroups.com> <ba268c8f-c446-4d4c-93e9-b640ebd0f75e@googlegroups.com> <d570836b-f9da-4359-b307-981afc6d4b40@googlegroups.com> <2f6d1e89-c868-49ad-bf88-81e0560f48c9@googlegroups.com> <cff169cc-d481-4ded-ba90-43d0f5ecc05e@googlegroups.com> <b9c338d3-c80c-4b42-99ff-da12417126b7@googlegroups.com> <10218256-a88b-4be5-9815-723d2b757225@googlegroups.com> <ae20996a-1fd5-44dc-a39e-e627c633cc06@googlegroups.com> <e8792740-b3b1-48c6-917f-1dfb1fe8bab1@googlegroups.com> <c4e3147c-61af-4b8b-86f2-9e367e44b228@googlegroups.com> <82173aaf-ab06-498e-babc-9eb734bba184@googlegroups.com> <6dfc0a33-10bc-4915-836a-4bf4e57cd88f@googlegroups.com> <c093e8b7-c3c6-40c6-bc96-026e7e8f831c@googlegroups.com> <0468ff6e-bb49-412f-8dd1-3773a7a4283c@googlegroups.com> <a334c5de-7d3d-431e-8912-fe5dad2021ce@googlegroups.com> User-Agent: G2/1.0 MIME-Version: 1.0 Message-ID: <9703a98e-9cc5-435a-ab1b-16536c103163@googlegroups.com> Subject: Re: "Najbardziej imponujący kod, jaki widziałem" From: godek.maciek@gmail.com Injection-Date: Wed, 07 Aug 2019 14:43:35 +0000 X-Received-Bytes: 7211 X-Received-Body-CRC: 3813742112 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit