-
X-Received: by 2002:a05:620a:15cd:: with SMTP id o13mr94768361qkm.273.1564871863339;
Sat, 03 Aug 2019 15:37:43 -0700 (PDT)
X-Received: by 2002:a05:620a:15cd:: with SMTP id o13mr94768361qkm.273.1564871863339;
Sat, 03 Aug 2019 15:37:43 -0700 (PDT)
Path: news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed.pionier.net.pl!3.us.feeder.erj
e.net!4.us.feeder.erje.net!feeder.erje.net!weretis.net!feeder6.news.weretis.net
!feeder.usenetexpress.com!feeder-in1.iad1.usenetexpress.com!border1.nntp.dca1.g
iganews.com!nntp.giganews.com!b26no10114904qtq.0!news-out.google.com!a5ni1061qt
d.0!nntp.google.com!b26no10114898qtq.0!postnews.google.com!glegroupsg2000goo.go
oglegroups.com!not-for-mail
Newsgroups: pl.comp.programming
Date: Sat, 3 Aug 2019 15:37:43 -0700 (PDT)
In-Reply-To: <c...@g...com>
Complaints-To: g...@g...com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=83.25.232.40;
posting-account=f7iIKQoAAAAkDKpUafc-4IXhmRAzdB5r
NNTP-Posting-Host: 83.25.232.40
References: <e...@g...com>
<1...@g...com>
<c...@g...com>
<0...@g...com>
<b...@g...com>
<d...@g...com>
<2...@g...com>
<c...@g...com>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <b...@g...com>
Subject: Re: "Najbardziej imponujący kod, jaki widziałem"
From: g...@g...com
Injection-Date: Sat, 03 Aug 2019 22:37:43 +0000
Content-Type: text/plain; charset="UTF-8"
Content-Transfer-Encoding: quoted-printable
Lines: 131
Xref: news-archive.icm.edu.pl pl.comp.programming:213748
[ ukryj nagłówki ]W dniu sobota, 3 sierpnia 2019 21:51:13 UTC+2 użytkownik Maciej Sobczak napisał:
> > 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ąć.
Nawet zerknąłem z ciekawości.
Tak konkretniej to zerknąłem tutaj:
https://rosettacode.org/wiki/Levenshtein_distance
Rozwiązanie w Mathematice wyglądało tak:
EditDistance["kitten","sitting"]
->3
EditDistance["rosettacode","raisethysword"]
->8
Dla porównania rozwiązanie w Haskellu:
levenshtein :: Eq a => [a] -> [a] -> Int
levenshtein s1 s2 = last $ foldl transform [0 .. length s1] s2
where
transform ns@(n:ns1) c = scanl calc (n + 1) $ zip3 s1 ns ns1
where
calc z (c1, x, y) = minimum [y + 1, z + 1, x + fromEnum (c1 /= c)]
main :: IO ()
main = print (levenshtein "kitten" "sitting")
Czyli autorzy "rozwiązania" w Mathematice nie dostarczyli implementacji odległości
Levenshteina, tylko skorzystali z wbudowanej. Wygląda zatem na to, że nawet nie
zrozumieli reguł zabawy.
Przy takiej interpretacji rzeczywiście trudno się dziwić, że w Mathematice wychodzą
najkrótsze implementacje.
> > - 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?
To zamiast '() napisałbyś '(())
> > 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ą.
Nie do końca wiem, które przykłady masz na myśli.
> [...]
> > 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ń.
Raczej: próbuje usprawnić język, ale w międzyczasie odnajduje perspektywę, w której
okazuje się, że pozorne usprawnienia wcale nic nie usprawniają. Że zmiana kształtu
koła nie sprawia, że koło staje się lepszym kołem. Że tym, co było przeszkodą, nie
były niedoróbki języka, tylko nawyki programisty.
> 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?
Zauważyłem, że często (w naszych różnych rozmowach, nie tylko teraz) posługujesz się
takimi określeniami, jak "lepszy" czy "gorszy", tak jakby one same w sobie coś
znaczyły.
Być może ma sens mówienie o tym, że coś jest lepsze dla jakiegoś danego celu niż coś
innego, albo że jest lepsze względem jakiegoś kryterium czy jakiejś miary, ale nie
wydaje mi się, żeby można było w ogóle powiedzieć, że dany język jest w jakimś
absolutnym sensie lepszy od jakiegoś innego języka.
> Nie wiem - rytuał wyjścia? odejścia? rozejścia?
> Musi być jakaś fajna nazwa.
Może "sytuacja utknięcia"?
Albo "nieprzejście rytuału przejścia"?
> > 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
Nie wiem jacy to ludzie. Pytanie jest rzeczywiście ciekawe, ale mi brak narzędzi,
żeby to ocenić. (Nie ukrywam jednak, że zdziwiłbym się, gdyby się okazało, że jakiś
znaczący odsetek użytkowników Mathematiki miał wcześniej głębszy kontakt z Lispem)
> W porównaniu do poprzednich postów, w których próbowałeś wykazać, że nikt z tego
nie korzysta, zauważam pozytywną zmianę.
Kiedy ja niby próbowałem coś takiego wykazać?
Następne wpisy z tego wątku
- 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
- 07.08.19 09:39 Maciej Sobczak
Najnowsze wątki z tej grupy
- 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
- CfC 28th Ada-Europe Int. Conf. Reliable Software Technologies
- Młodzi programiści i tajna policja
Najnowsze wątki
- 2024-12-12 Warszawa => Administrator Bezpieczeństwa IT <=
- 2024-12-12 Ostrów Wielkopolski => Trener zespołu sprzedaży Call Center <=
- 2024-12-12 Kraków => Key Account Manager <=
- 2024-12-11 SEP 1 kV E
- 2024-12-11 DNS restrictions are on
- 2024-12-11 wielkie bu
- 2024-12-11 Białystok => Inżynier bezpieczeństwa aplikacji <=
- 2024-12-11 Aku LiPo źródło dostaw - ktoś poleci ?
- 2024-12-11 Warszawa => Specjalista Bezpieczeństwa Informacji <=
- 2024-12-11 Wrocław => Application Security Engineer <=
- 2024-12-11 Warszawa => Analyst in the Trade Development department (experience wi
- 2024-12-11 Lublin => Programista Delphi <=
- 2024-12-11 Motodziennik #305 Nowy ELEKTRYK za 350 złotych miesięcznie? Kreatywne kredytowanie problemów
- 2024-12-11 Warszawa => Spedytor Międzynarodowy <=
- 2024-12-11 Katowice => Key Account Manager (ERP) <=