Czy w PL są jakieś meetupy offline/online Clojurowe?
Offline w Krakowie był i może znowu będzie się dział w najbliższej przyszłości.
Kto je organizuje? Nagrywane są?
Był jeden online. Nie nagrywamy.
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. 😉
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. :thinking-face:
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
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
nie ma problemu by użyć struktur javy, jeśli tylko chcesz
nawet więcej, java w clojure jest o wiele bardziej używalna niż java w javie
na ratunek przychodzi doto
jak tylko coś się będzie święcić to piszę się w ciemno @pithyless
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ś?
meanderem? nie wiem kiedy zaczyna się coś większego
https://github.com/ribelo/doxa https://github.com/ribelo/danzig#why-you-should-care
danzig wygląda zachęcająco. Podoba mi się to podejście z meanderem w makrach 👍
To proof of concept bardziej, choć sam używam I poprawiam na bieżąco
Jestem za słaby i absolutnie nie potrafię prowadzić projektów open source ale wierzę i liczę na to że ktoś mądrzejszy np podłapie koncept
Ja bym posłuchał
właśnie CI odpowiadam w innym wątku ; )