This page is not created by, affiliated with, or supported by Slack Technologies, Inc.
2016-06-22
Channels
- # beginners (8)
- # boot (41)
- # cider (1)
- # cljsrn (2)
- # clojure (91)
- # clojure-dev (34)
- # clojure-gamedev (3)
- # clojure-germany (6)
- # clojure-greece (324)
- # clojure-japan (2)
- # clojure-miami (4)
- # clojure-nl (6)
- # clojure-quebec (3)
- # clojure-russia (26)
- # clojure-spec (50)
- # clojure-uk (19)
- # clojurescript (147)
- # core-async (5)
- # css (2)
- # cursive (15)
- # datascript (7)
- # datomic (6)
- # hoplon (1)
- # jobs (4)
- # lein-figwheel (17)
- # off-topic (4)
- # om (52)
- # om-next (10)
- # onyx (1)
- # planck (19)
- # proton (1)
- # re-frame (81)
- # reagent (61)
- # spacemacs (1)
- # specter (46)
- # spirituality-ethics (7)
- # untangled (7)
- # yada (17)
(time (reduce (fn [^long a ^long b] (+ a b)) (range 1 100000000)))
"Elapsed time: 2661.196246 msecs”
4999999950000000
to ^long
einai type hint
TYPES! 😄
vasika me to type hint glytwneis boxing/unboxing
επισης νομιζω πληρωνεις και το lazyness που δε χρησιμοποιεις εδω
ισως θελει reducer;
για να μην τα φερνει σε chunks;
user=> (time (r/reduce + (range 100000000)))
"Elapsed time: 3991.068929 msecs
ego pantos den eida treli diafora trexontas kai ta 3 😛
(require '[clojure.core.reducers :as r])
(time (reduce + (range 1 100000000)))
;; "Elapsed time: 2917.175936 msecs"
;;=> 4999999950000000
(time (reduce (fn [^long a ^long b] (+ a b)) (range 1 100000000)))
;; "Elapsed time: 2484.394161 msecs"
;;=> 4999999950000000
(time (r/reduce + (range 1 100000000)))
;; "Elapsed time: 2772.405715 msecs"
;;=> 4999999950000000
απο την αλλη δεν μπορω να κανω reproduce το speedup με τα primitives (`^long`) για καποιο λογο
εγω με το r/reduce
ειδα μεγαλη
wtf ομως, παραξενο
kai me fold
(time (r/fold + (range 1 100000000)))
;; "Elapsed time: 2746.380503 msecs"
;;=> 4999999950000000
user=> (time (r/fold + (range 1 100000000)))
"Elapsed time: 3887.494446 msecs”
4999999950000000
αλλα ενταξει, και μονο για να τα χωρισει σε threads και να τα μαζεψει μαλλον εχει overhead
τα primitives μου κανουν εντυπωση που δεν μπορω να τα κανω να δουλεψουν
(με καψατε πρωινιατικο παω να κανω καμια δουλεια)
Ίσως να κάνει κάποια διαφορά και το unchecked-math
ναι, true
(require '[clojure.core.reducers :as r])
(time (reduce + (range 1 100000000)))
;; "Elapsed time: 2917.175936 msecs"
;;=> 4999999950000000
(time (reduce (fn [^long a ^long b] (+ a b)) (range 1 100000000)))
;; "Elapsed time: 2484.394161 msecs"
;;=> 4999999950000000
(time (r/reduce + (range 1 100000000)))
;; "Elapsed time: 2772.405715 msecs"
;;=> 4999999950000000
(time (r/fold + (range 1 100000000)))
;; "Elapsed time: 2848.879237 msecs"
;;=> 4999999950000000
(set! *unchecked-math* true)
(time (reduce + (range 1 100000000)))
;; "Elapsed time: 2818.041012 msecs"
;;=> 4999999950000000
(time (reduce (fn [^long a ^long b] (+ a b)) (range 1 100000000)))
;; "Elapsed time: 1913.499944 msecs"
;;=> 4999999950000000
(time (r/reduce + (range 1 100000000)))
;; "Elapsed time: 3067.241996 msecs"
;;=> 4999999950000000
(time (r/fold + (range 1 100000000)))
;; "Elapsed time: 2736.543693 msecs"
;;=> 4999999950000000
αυτο γλυτωνει τα chunks λογικα
παιζει και το παλιομοδιτικο:
(defn total [^long num]
(loop [t 0 n num]
(if (> n 0)
(recur (+ t n) (dec n))
t)))
user=> (time (total 100000000))
"Elapsed time: 5553.698279 msecs”
χωρις το ^long
κανει πανω απ’ το διπλασιο χρονο
@greenonion: malista
γενικα για raw speed απ’ οτι καταλαβαινω αρκετοι γραφουν Java απευθειας
http://peticol.as/writes-about/fast-clojure/ αυτο εχει ενδιαφερον btw
true, καλο ειναι να ειναι συνειδητα τα trade-offs
@palladin: h clojure den diafhmizei zero cost abstractions opws h rust 🙂
@stathissideris: kala i rust einai thirio... "Abstraction without regret"
exo minei ligo malakas me tin rust (parolo pou exo dei kai pragmatakia se C++, Haskell, MLton ktp)
pantos istorika oi lisp eixan kanei douleia gia na sivinoun to perf costos ton abstractions
δεν ξερω αν θελω να ασχοληθω με rust
μου θυμιζει scala, ο,τι ιδεα μας φανηκε καλη τη βαλαμε
πρωτη αναγνωση αυτο τωρα
στην πραξη μπορει να ειναι γαμω βεβαια
αλλα τελειως διαφορετικο use case απο clojure
@greenonion: Sigoura i rust einai poio system oriented
theoro oti i rust exei (tha mporei na exei) poli poio dinato parallel stream processing story apo alles glosses
απλως η clojure ειναι ηδη στο jvm
παντως σε διαφορα talks που παρακολουθησα τις προαλλες
ακομα ελεγαν οτι το μεγαλυτερο bottleneck ελεγαν οτι ηταν το network
στο να μεταφερεις πχ data απ’ το kafka
στο processing framework
και γι’ αυτο εξερευνουν λυσεις τυπου kafka streams
ή apache flink
που σου λεει οτι αφου τα εχεις ηδη τα data εκει
γιατι να τα μεταφερεις
δεν εχω αποψη, εχει πολυ ζουμι ομως η ιστορια
px ean deis auto to video https://www.youtube.com/watch?v=RUTeY4E2MoQ&list=PLLMLOC3WM2r5gdnpoZSTuM9Fh2QN_mABA&index=1
χμ οκ βγαζει νοημα αυτο που λες φανταζομαι
αλλα δεν εχω συγκεκριμενη αποψη για την clojure
στο talk που εστειλα πιο πανω ηταν χαρουμενοι
και θιγει το perf
πραγμα
αρκετα
ναι αυτο εννοω
τεσπα δεν ξερω ειναι πολυ αφηρημενα αυτα για μενα
εννοω το πιο «ζορικο» τασκ που κανω με data σε clj κανει 1 sec
χωρις perf
οποτε 🙂
@palladin: giaaaa pes
ti project?
@stathissideris: Prin apo kapoi kero eixame grapsei auto to paper
dwse mou 2 lepta na to katanohsw
stin Scala eixame testarei to ScalaBlitz https://scala-blitz.github.io/
edo https://github.com/looperdotnet/looper/blob/master/src/Looper.Core/Core/QueryExpr.fs exoume to geniko ast pou kanoume capture
kai edo https://github.com/looperdotnet/looper/blob/master/src/Looper.Core/Compilation/Compiler.fs einai o vasikos compiler
opote opoios psinete gia ena tetoio clojure macro (btw ekana mia mikri ereuna agoras kai den vrika kati antistixo)
@palladin: vasika exw dyo erwthseis (1) to motivation poio einai? exete kapoio use case h einai apla research? (2) giati na einai to target clojure kai oxi jvm bytecode gia na kanoume squeeze out olo to performance?
@palladin: kati pou einai isws relevant einai oti ayton ton kairo kanw investigate tou pws ginetai na kaneis represent to clojure AST wste na mporeis na to kaneis query me datalog, pou isws na prosferetai gia static analysis
nai, apla anarwtiemai giati theleis na to kaneis kai se clojure 🙂
ok, good to know 🙂 egw gia thn wra exw perisseia open source projects, alla mou akougetai endiaferon opote tha to exw sto myalo mou
eidika an proxwrhsw ayto to code analysis tool pou sou lew
nomizw tha htan efikto, alla tha eprepe o kwdikas na exei toulaxiston type hints
alliws den mporeis na apofygeis to (un)boxing
@stathissideris: tin datalog pou aneferes einai kapoio clojure dsl
@palladin: sygekrimena paizw me to implementation ths datascript
@palladin: exw hdh peiramatistei ligo me html trees: https://juxt.pro/blog/posts/datascript-dom.html
add to pocket
@greenonion: einai perisotero experiment to sygekrimeno giati profanws yparxoun pio kaloi tropoi na kaneis extract information apo HTML
btw h clojure.set
εχει διαφορα utility functions για relational πραγματα
διαβαζα χθες παλι το joy of clojure
τελειωνω!
@palladin: h datascript einai in-memory "clone" tou datomic
palladin: ησουν di;
department of informatics and telecommunications stathissideris
aka πληροφορικη στο πανεπιστημιο της αθηνας
DI για τους φιλους 😛
@palladin: nai, afou arxisa na kanw dokimes me datalog, anakalypsa oti einai poly common practice gia code analysis kai provenance klp
@greenonion: oxi den eimai apo DI alla ksereis pos pame auta ta pragmata 🙂
nai ean deis ta papers tou https://yanniss.github.io/
ναι φανταζομαι! απλα ακουσα και το ονομα του ροντογιαννη τις προαλλες στο μηταπ
και ειπα μηπως
ελα ρε οντως;
α το ’10 πηγε, δεν τον προλαβα
austin, GIT βλεπω
pw tha kaoume
ω θεε μου
@palladin: to diko mou project exei na kanei pio poly me tools pou se voithane na kaneis debug kai na katanohseis to codebase
@stathissideris: nai einai sxetika
apo pou proerxetai h tade timh kai pws katalhksame se ayth. “provenance” to lene
ασχετο
αλλα επειδη συζητηθηκε το SICP τις προαλλες
οταν το ειχα ξεκινησει κοιτουσα αυτα
για reference
καλο resource
τον διαβαζω αυτον γενικα
@greenonion: poli kalo
ναι ρε τελειο
ειναι core python αυτος αν θυμαμαι καλα
αλλα γραφει γενικα
και για clojure 🙂
αρκετα για C++
fisika kai ta lectures http://groups.csail.mit.edu/mac/classes/6.001/abelson-sussman-lectures/
ναι ολο μαζι παει
πακετο
και μετα το PAIP
also known as “the best way to write a stack overflow in clojure” 😄
χαχααχχα
https://leanpub.com/readevalprintlove001 μου θυμισε αυτο ο τιτλος!
το τσεκαρες σταθη;
to Read-Eval-Print-λove einai poli oraio, auto itan to teleutaio https://leanpub.com/readevalprintlove003
αλλα θελει το χρονο του
@greenonion: einai kainourgio, den exei vgalei kapoio issue akoma!
ωραια, γραφτηκα
αναρωτιεμαι βεβαια ποσα newsletters χωραει το clj community 😛
αυτο διαβαζα
απ’ οτι καταλαβαινω ιδια λογικη
κανει τη δουλεια και μετα σβηνει το body
kai thimithika oti i Forth einai i klassiki glossa pou opos kai me tin lisp kaneis gamatous meta-circular interpreters 🙂
Genika ean eisai pesmenos kai den exeis ti na kaneis... grapse enan forth interpreter kai tha aisthantheis kalitera 🙂
mias kai leme gia forth http://dev.solita.fi/2014/11/20/deconstructing-a-tweet-sized-language.html
εκει επρεπε να παμε
θα παει κανεις;
http://clojutre.org/2016/ kai auto ginete septemvri, pliroforiaka
πω ρε εχω ξενερωσει
οταν ψαχναμε συνεδρια
δεν το ειχα βρει το curry on
μου φαινεται φανταστικο
industry & academia
πολυ fp
και data πραγματα
ακομα κι ο Larry Wall μιλαει, τελειο
pantos vgenoun kai videakia apo curry on, https://www.youtube.com/channel/UC-WICcSW1k3HsScuXxDrp0w
wx kai larry wall!
gtsiftsis: πρακτικα περισσοτερη ουσια θα ειχε νομιζω απ’ το buzzwords
εννοωντας οτι computer science κλπ
και το κλασσικο talk της Elm απο curry-on ειναι
κλεινω απο τωρα curry on 2017
http://www.curry-on.org/2016/sessions/a-type-is-worth-a-thousand-tests.html den mporo na min to toniso 🙂
μιλαει κι ο Felleisen
btw ποσταρα το κειμενο του malcolm στο r/clojure και εγραψε ο Reeves απαντηση https://www.reddit.com/r/Clojure/comments/4pb0la/concerns_with_ring/