🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.programming
Article #215813

Re: "Najbardziej imponujący kod, jaki widziałem"

#215813
From: Maciej Sobczak
Date: Wed, 07 Aug 2019 20:32
55 lines
5545 bytes
> Całkowicie się nie zgadzam.
> Nigdy nie miałem w szkole wprowadzanego zapisu x^2.

No tak. Bo widzisz - w Mathematice ten zapis wygląda dokładnie tak jak w szkole. Natomiast po skopiowaniu go do grup dyskusyjnych jest x^2, bo w okienku, gdzie pisze tego posta, jest tylko taki font i nie ma superscriptu.

> Użycie symbolu ^ do wyrażenia potęgowania jest może uznane przez garstkę osób piszących w raczej niszowych językach.

https://en.wikipedia.org/wiki/Exponentiation#In_programming_languages

MATLAB, Wolfram, R, Excel, Analytica, TeX, "most computer algebra systems".

"Garstka osób w niszowych językach", tak? Łomatko...
Sami użytkownicy Excela pewnie przykryliby liczebnie fanów wszystkich innych zapisów... Pozostali to ludzie zajmujący się profesjonalnie inżynierią i matematyką. Niech będzie, że to nieistotna garstka.

> No właśnie. Ile godzin spędziliśmy w szkole, przyzwyczajając się do tej notacji?

Nie ważne ile. Ważne, że to była inwestycja, na której można bezpiecznie budować. Programiści nie startują od zera i zwykle są to ludzie z jakimś istniejącym już fundamentem intelektualnym. No chyba że robimy język dla kosmitów, jak w filmach sci-fi i zakładamy, że odbiorca nie kuma kompletnie nic.

> 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]

To, że w Twoim ulubionym języku nie napiszę, to jest Twój problem a nie mój. :-)

Map[
 Function[triple,
  Apply[Function[{x, y, z}, If[x^2 + y^2 == z^2, {x, y, z}, Nothing]], triple]
 ],
 Tuples[Range[100], 3]
]

Nieco dłużej, ale Ty osiągnąłeś limit swojego zapisu a moja mapa nawet się nie rozgrzała.
W tym przypadku jednak nie użyłbym mapy, bo to jest system z ograniczeniami a nie transformacja i od mapy lepszy jest filtr:

Cases[Tuples[Range[100], 3], {x_, y_, z_} /; x^2 + y^2 == z^2]

Nawet działa >2x szybciej. I tak bym to zostawił.

> A w przypadku człowieka dlaczego nie chcesz, żeby był jak najprostszy?

Bo polegam na tym, co człowiek już wie ze szkoły. To jest koszt, który już został poniesiony, więc mogę z niego za darmo skorzystać.

> 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.

Ale znasz tą teorię psychologiczną, że otaczamy się ludźmi, którzy potwierdzają nasze poglądy (bo innych nie lubimy, więc nie chcemy ich mieć w kręgu znajomych)? Wiesz, co by wyszło, gdyby Wolfram taką ankietę zrobił na swoim profilu?

> Cały czas nie znam kontekstu, w którym ta druga notacja z haszami i małpami byłaby efektywniejsza.

Problem w tym (podobnie jak w wielu poprzednich tematach), że nie da się ustawić obiektywnej granicy pomiędzy znaczkami rozsądnymi a nierozsądnymi. Od nawiasów, przez podstawowe operatory, po strzałki po hasze i małpy. Dla Ciebie małpa jest nieczytelna, dla kogoś innego nieczytelny będzie znak plusa.

Granica czytelności jest subiektywna i zależy od... kręgu znajomych.

-- 
Maciej Sobczak * http://www.inspirel.com
Technical Details
Message-ID: <720b194f-11c7-4c4d-b626-90355e08b751@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin.stu.neva.ru!b26no9856668qtq.0!news-out.google.com!e17ni2906qtg.1!nntp.google.com!b26no9856658qtq.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
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> <9703a98e-9cc5-435a-ab1b-16536c103163@googlegroups.com>

Show Full Headers
Complete Article Headers
X-Received: by 2002:ac8:1a6c:: with SMTP id q41mr7544307qtk.217.1565209943054;        Wed, 07 Aug 2019 13:32:23 -0700 (PDT)
X-Received: by 2002:ae9:ef48:: with SMTP id d69mr10100391qkg.313.1565209942904; Wed, 07 Aug 2019 13:32:22 -0700 (PDT)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!goblin1!goblin.stu.neva.ru!b26no9856668qtq.0!news-out.google.com!e17ni2906qtg.1!nntp.google.com!b26no9856658qtq.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Wed, 7 Aug 2019 13:32:22 -0700 (PDT)
In-Reply-To: <9703a98e-9cc5-435a-ab1b-16536c103163@googlegroups.com>
Complaints-To: groups-abuse@google.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: <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> <9703a98e-9cc5-435a-ab1b-16536c103163@googlegroups.com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <720b194f-11c7-4c4d-b626-90355e08b751@googlegroups.com>
Subject: Re: "Najbardziej imponujący kod, jaki
 widziałem"
From: Maciej Sobczak <see.my.homepage@gmail.com>
Injection-Date: Wed, 07 Aug 2019 20:32:23 +0000
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit