This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2021-06-29
Channels
- # adventofcode (8)
- # babashka (12)
- # beginners (91)
- # calva (6)
- # cider (2)
- # circleci (11)
- # clj-kondo (19)
- # clojure (202)
- # clojure-australia (7)
- # clojure-brasil (1)
- # clojure-europe (123)
- # clojure-nl (2)
- # clojure-poland (24)
- # clojure-uk (6)
- # clojured (1)
- # clojurescript (91)
- # core-async (23)
- # cursive (16)
- # data-science (5)
- # datomic (26)
- # emacs (27)
- # events (2)
- # graalvm-mobile (50)
- # graphql (4)
- # honeysql (4)
- # instaparse (33)
- # lsp (24)
- # meander (22)
- # nrepl (3)
- # off-topic (26)
- # pedestal (1)
- # re-frame (15)
- # releases (1)
- # sci (1)
- # shadow-cljs (20)
- # tools-deps (22)
Offline w Krakowie był i może znowu będzie się dział w najbliższej przyszłości.
Był jeden online. Nie nagrywamy.
Meetupy w Krakowie napewno wrócą! Jak ktoś jest przyjezdny i chce się załapać to pisać śmiało na grupie (lub do mnie bezpośrednio). Szczególnie jak chcecie coś opowiedzieć, to pomożemy ogarnąć szczegóły i odpowiedni termin. ;)
A probowal ktos z was implementowac rozne algorytmy w Clojure? Ja mam z tym problem taki, ze rozne algo opieraja sie na tym, ze lokalnie zmieniaja dane (np. tablice/liste itp.) i dlatego maja swoje wlasciwosci O(x), a w Clojure praktycznie wszystko jest na wektorach, mapach i listach, ktore maja swoj narzut czasowy (niby wiele operacji jest near-constant O(log32 n), ale to nie to samo co O(1)) - pamieciowy pewnie tez, ale nie wiem jaki dokladnie. Ale to moze byc tylko moj problem. 😉
nie robiłem tego, ale możesz w implementacji spróbować użyć Transient Data Structures https://clojure.org/reference/transients które są mutowalnymi odpowiednikami clojurowych struktur danych - ciekawym ćwiczeniem byłoby później porównanie różnicy wydajności pomiędzy implementacjami z użyciem transients i bez
O jakich algorytmach mówimy? Ponieważ jak number-crunching to problem może nie jest O(1) tylko CPU vs GPU? https://neanderthal.uncomplicate.org/articles/benchmarks.html https://neanderthal.uncomplicate.org/articles/tutorial_opencl
Uzycie Transients na pewno pomaga, bo zapisy sa szybsze. Kiedys zaimplementowalem Insertion Sort w ten sposob: https://farenda.com/clojure/insertion-sort-in-clojure/
Chodzi mi wlasnie o takie algo jak sortowanie, grafy itp. Np. w sortowaniu jest duzo odczytow (i czasami zapisow), co zmienia zlozonosc obliczeniowa i jak sie o tym mysli, to nie jest standardowo O(n log_n) tylko dochodzi np. to, ze odczyty w wektorach sa log32 albo cos takiego. Moze to nie jest wielki problem i tylko ja to tak rozdmuchuje, a w praktyce, jak ktos potrzebuje super-wydajnosc, to uzywa np. tablicy albo struktur javy.
Tak tylko pisze, bo moze cos zle rozumiem i moze ktos mnie poprawi.
Jak ktoś jest zainteresowany tematem, to klasyka literatury jest "Purely Functional Data Structures" Chris Okasaki. Za to w "History of Clojure" (3.4.1 - Persistence and Immutability), Rich piszę czemu właśnie nie korzysta z tych struktur tylko z HAMTs. Jak ktoś nie czytał paper, to gorąco polecam; dobra lektura dla inżynierów w dokonywaniu odpowiednich kompromisów. https://download.clojure.org/papers/clojure-hopl-iv-final.pdf
Meetupy w Krakowie napewno wrócą! Jak ktoś jest przyjezdny i chce się załapać to pisać śmiało na grupie (lub do mnie bezpośrednio). Szczególnie jak chcecie coś opowiedzieć, to pomożemy ogarnąć szczegóły i odpowiedni termin. ;)
jakby nie było chętnych do pogadania o czymś, to mogę poopowiadać np o meanderze, choć w życiu o niczym nie opowiadałem
A coś większego z nim robiłeś?