-
Data: 2019-08-07 16:43:35
Temat: Re: "Najbardziej imponujący kod, jaki widziałem"
Od: g...@g...com szukaj wiadomości tego autora
[ pokaż wszystkie nagłówki ]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/1159029909672
603648
> > 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.
Następne wpisy z tego wątku
- 07.08.19 22:32 Maciej Sobczak
- 08.08.19 00:44 AK
- 08.08.19 09:06 Maciej Sobczak
- 08.08.19 17:44 AK
- 08.08.19 22:04 Maciej Sobczak
- 24.09.21 01:11 Bischoop
Najnowsze wątki z tej grupy
- Alg. kompresji LZW
- 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??
Najnowsze wątki
- 2025-02-12 Warszawa => Expert Recruiter 360 <=
- 2025-02-12 Ostrów Wielkopolski => Area Sales Manager OZE <=
- 2025-02-12 Bieruń => Regionalny Kierownik Sprzedaży (OZE) <=
- 2025-02-12 Dęblin => Node.js / Fullstack Developer <=
- 2025-02-12 Kraków => PHP Full Stack Developer <=
- 2025-02-12 Karta dźwiękowa stereo
- 2025-02-12 Dęblin => JavaScript / Node / Fullstack Developer <=
- 2025-02-12 Gdańsk => Specjalista ds. Sprzedaży <=
- 2025-02-12 Łódź => NodeJS Developer <=
- 2025-02-12 Błonie => Sales Specialist <=
- 2025-02-12 Dziwne zachowanie magistrali adresowej w 8085
- 2025-02-11 Mini pecet
- 2025-02-10 Spalił się spaliniak
- 2025-02-10 zarowka wifi - z sensowna apka lub lepiej albo lokalnie lub przez web. I zeby harmonogram miala
- 2025-02-10 Chrzanów => Programista NodeJS <=