4 ms·
This is very cool and intressting. I have to think about something to do with core.async. This is also a good example why macros are just awesome. Go is a lang
by nickik 13y ago
This is very cool and intressting. I have to think about something to do with core.async.
This is also a good example why macros are just awesome. Go is a language design to work well with goroutins and channels, but the clojure code looks just as good and readable. You could simply not have such idiomatic use of these concepts without macros.
Or am I wrong, can a flexible language like scala or python be extended to look as good for that usecase? I dont know enougth of the tricks scala people use, I cant juge if it is possible.
- stuglaser 13y agoI've implemented Go-style channels in Python, and it turned out pretty well. The 'select' statement is a bit verbose, but still pretty readable. You can find the code here: http://github.com/stuglaser/pychan http://github.com/stuglaser/pychan And documentation here: https://chan.readthedocs.org/en/latest/ https://chan.readthedocs.org/en/latest/
- voidlogic 13y ago>but the clojure code looks just as good and readable. But don't mistake this for having the same runtime characteristics- For what its worth the Computer Language Benchmarks Game shows Go as generally being faster, using much less memory and less code. http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?test=all&lang=go&lang2=clojure&data=u64q http://benchmarksgame.alioth.debian.org/u64q/benchmark.php?t...
- nickik 13y agoThat is true. I have not looked at the much of the clojure code and non of the go code but both probebly are written in a very unidiomitic style that one does normally not use. Also with clojure, the actual timeconsuming calculations can be made with java and that should be at least as fast as go (with a bit more memory). So all in all I value the architectural things much more then pure speed. Go simply has a diffrent target then Clojure.
- igouy 13y ago> I have not looked at the much of the clojure code and non of the go code :-) > can be made with java Would that be idiomatic Clojure? :-)
- nickik 13y ago> Would that be idiomatic Clojure? :-) Yes it would. Clojure is design with that idea in mind, make it connect really closly to java so that you can interop with no overhead.
- erichmond 13y agoAgreed on go being faster and using less memory, however, in practice, I think idiomatic clojure would have less code then compared idiomatic go, when writing similar programs.
- igouy 13y ago> would have less code Based on what?