Hacker News Comments on
Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojure
jasonofthel33t
·
Youtube
·
20
HN points
·
5
HN comments
- This course is unranked · view top recommended courses
Hacker News Stories and Comments
All the comments and stories posted to Hacker News that reference this video.The actual details of how the underlying datastructures work isn't that hard to grasp (see: https://youtu.be/wASCH_gPnDw?t=1817), but in practice you don't even need to go that far.At a high level there's really just a few things you need to keep in mind, the biggest being the big O guarantees of the core DS interfaces, which are listed here https://clojure.org/reference/data_structures. Those guarantees hold across the different underlying implementations, and there are plenty of things you can tune to get a 2x, 10x, 50x improvement in performance before resorting to things that depend on which specific DS is being used under the hood
Edit: Fixed timestamp for video link
⬐ iLemmingThis is a bit old interview. I haven't rewatched it, but beware, it may lead to assumptions that may not be true anymore.
Um, destructuring is a very old concept in Lisp circles.http://www.lispworks.com/documentation/lw50/CLHS/Body/m_dest...
Don't know if Rich first got the idea from Lisp or not, but it seems likely since he did a bunch of development in Common Lisp (generating C++, of all things :-D ) ages ago.
I don't remember if I heard him talk about that in the "Expert to Expert" video ( https://www.youtube.com/watch?v=wASCH_gPnDw ), or in "Simple Made Easy" ( https://www.youtube.com/watch?v=34_L7t7fD_U ). I think it was the former, but both of those are worth watching multiple times. It's also entirely possible that it was in an entirely different video of his -- but it was him.
I've yet to be disappointed in any of his talks, so if I'm wrong about the exact one, just keep watching any of his talks on YouTube till you find it. xD
I'm not sure how it's implemented in Ferret but Clojure's data structures are implemented as trees so there's structural sharing that happens when a vector or hash map is updated or when a new version is produced.So the whole data structure isn't copied but only the relevant parts are added / updated in the tree and the rest is shared with the "new" data structure.
Mutable data structures are still more memory effective but I'm assuming its fine since the author has a blog post on using ferret on an Arduino Uno which has 32k of ram. https://nakkaya.com/2017/02/15/bare-metal-lisp-rc-control-us...
Clojure data Sturucture links: Persistent Vectors http://hypirion.com/musings/understanding-persistent-vector-...
Video with Rick hick on them https://youtu.be/wASCH_gPnDw?t=1742
⬐ gizmo385It's so interesting watching Rich talk. He has such a breadth and depth of knowledge and you can tell that he really took his time when designing the language.
This [1] part of an interview with Rich Hickey is great on this topic.
I'd like to learn Clojure. Any suggestions on how to get started? It's my first time using a Lisp dialect. I figured I'd tackle the Clojure Koans, and mix in a few Project Euler problems.I'd also like to do some code reading. I know the Clojure source code is on GitHub, but maybe something smaller to start?
If anyone else is interested in getting started, here are a few links I visited over the weekend:
http://www.braveclojure.com/do-things/
http://aphyr.com/tags/Clojure-from-the-ground-up
The last link is an hour-long interview with Rich Hickey - a fantastic introduction to the language and his design goals. It's probably the best technical video I've ever watched on YouTube.