-
Data: 2019-08-03 21:51:11
Temat: Re: "Najbardziej imponujący kod, jaki widziałem"
Od: Maciej Sobczak <s...@g...com> szukaj wiadomości tego autora
[ pokaż wszystkie 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
Następne wpisy z tego wątku
- 04.08.19 00:37 g...@g...com
- 04.08.19 22:57 Maciej Sobczak
- 05.08.19 12:44 g...@g...com
- 05.08.19 14:35 Roman Tyczka
- 05.08.19 14:58 g...@g...com
- 05.08.19 22:29 Maciej Sobczak
- 06.08.19 10:55 Maciej Sobczak
- 06.08.19 15:31 Borneq
- 06.08.19 15:45 g...@g...com
- 06.08.19 16:32 Borneq
- 06.08.19 16:39 g...@g...com
- 06.08.19 16:57 Borneq
- 06.08.19 17:01 Borneq
- 06.08.19 17:20 g...@g...com
- 06.08.19 22:57 g...@g...com
Najnowsze wątki z tej grupy
- 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??
- Re: (PDF) Surgical Pathology of Non-neoplastic Gastrointestinal Diseases by Lizhi Zhang
Najnowsze wątki
- 2025-02-06 PROGRAM DOPŁAT DO AUT ELEKTRYCZNYCH TO ABSURD. ZA ŚRODKI Z KPO KUPIMY NIEMIECKIE I CHIŃSKIE AUTA
- 2025-02-05 ceny OC
- 2025-02-05 Re: ceny OC
- 2025-02-05 Re: ceny OC
- 2025-02-07 Smar do video
- 2025-02-06 Litowe baterie AA Li/FeS2 a alkaliczne
- 2025-02-07 Gliwice => Business Development Manager - Network and Network Security
- 2025-02-07 Warszawa => System Architect (Java background) <=
- 2025-02-07 Warszawa => System Architect (background deweloperski w Java) <=
- 2025-02-07 Warszawa => Solution Architect (Java background) <=
- 2025-02-07 Gliwice => Ekspert IT (obszar systemów sieciowych) <=
- 2025-02-07 Lublin => Programista Delphi <=
- 2025-02-07 Warszawa => Architekt rozwiązań (doświadczenie w obszarze Java, AWS
- 2025-02-07 Dęblin => Node.js / Fullstack Developer <=
- 2025-02-07 Bieruń => Spedytor Międzynarodowy (handel ładunkami/prowadzenie flo