Skip to content
0:00 / 0:00

#clojure#persistentdatastructures#richhickey

Expert to Expert: Rich Hickey and Brian Beckman - Inside Clojure

jasonofthel33t

11K subscribers • 8 videos on Hallway

YouTube
  • Recommended by 6 people: 3 on Hacker News, 2 in engineering communities and 1 curated list.
  • A classic. People kept recommending it from 2014 to 2025.
  • Presented by Rich Hickey, creator of Clojure, and Brian Beckman

Intermediate. Assumes working knowledge.

119K views13 years ago6 recommendations

Programming languagesSoftware designLisp and ClojureLanguage design and type systemsData structures

Rich Hickey and Brian Beckman discuss Clojure's design, persistent data structures, reference types, and concurrency model.

Cross posted from channel9.msdn.com/Shows/Going+Deep/Expert-to-Expert-Rich-Hic…. Clojure is a dynamic programming language created by Rich Hickey that targets both the Java Virtual Machine and the CLR. It is designed to be a general-purpose language, combining the approachability and interactive development of a scripting language with an efficient and robust infrastructure for multithreaded programming. Clojure is a compiled language - it compiles directly to JVM bytecode, yet remains completely dynamic. Every feature supported by Clojure is supported at runtime. Clojure provides easy access to the Java frameworks, with optional type hints and type inference, to ensure that calls to Java can avoid reflection. Clojure is a dialect of Lisp, and shares with Lisp the code-as-data philosophy and a powerful macro system. Clojure is predominantly a functional programming language, and features a rich set of immutable, persistent data structures. When mutable state is needed, Clojure offers a software transactional memory system and reactive Agent system that ensure clean, correct, multithreaded designs. Astrophysicist and Software Architect Brian Beckman interviews Rich Hickey to dig into the details of this very interesting language. If you don't know much about Clojure and the general problems it aims to solve, well, watch and listen carefully to this great conversation with plenty of whiteboarding and outstanding questions. Expert to Expert simply rocks! Thank you for spending time with us, Rich! Clojure is great!

Why it's here

6 people recommend this

What people say. Highly recommended by Clojure developers for its deep dive into the language's state management and persistent data structures.

u/ragharin r/compsci • Recommends

Interesting data structures When I was poking around reddit the other day I stumbled upon Ctrie and Van Emde Boas trees. It reminded me how during my CS I learnt about Brodal heap. Additionally on a talk with Brian Beckman Rich Hickey explained how immutable vectors are implemented underneath with a variant of tries (radix trees). I had algorithms and data structure course when I skimmed through CLRS, but I would like to broaden my knowledge and learn about things outside "standard" DS like vectors, single/double linked lists, basic variants of self-balancing binary tries, B-trees and hash-maps. Do you know/can recommend some other interesting data structures? I know that there is Wikip…

u/LeSUTHUin r/Clojure • Recommends

…the same language, and manipulates the data structures of the same language. Hope I was clear. Feel free to ask for any clarification, or any other questions you have. Have a nice day! PS: Phew, that took a while. The quote is one character, but there's so much backstory to this. Also check out Rich Hickey's \conversation with Brian Beckman\([video and his Clojure for Java Programmers (\Part1\([video \Part2\([video This explanation combined with those talks should probably put all the pieces together.…

pk2200on Hacker News • Recommends

On “Why I am excited about Clojure”

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: link link link link to this video 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.

nocmanon Hacker News • Recommends

On “Minesweeper in Clojure”

Um, destructuring is a very old concept in Lisp circles. link 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 ( link to this video ), or in "Simple Made Easy" ( link ). 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

programming-talkscurated list on GitHubRecommends

Under “Clojure”

Expert to Expert - Inside Clojure 00:53:56 by **Rich Hickey & Brian Beckman** (it's not so much a talk as a conversation; awesome for beginners) (2013)

knubieon Hacker News • Recommends

On “Why we built Vade Studio in Clojure”

> What I don’t understand the advantage for “state management”. Like, you build a new state object, and then mutate some pointer from prevState to nextState… that’s what everyone else is doing too. Clojure's real super power is its reference type(s) (in particular the atom). Rich does an excellent job explaining them in this video: link to this video

chipseton Hacker News • Mentions

On “Ferret – A free software Clojure implementation”

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. link Clojure data Sturucture links: Persistent Vectors link Video with Rick hick on them link to this video

hxegonon Hacker News • Mentions

On “Clojure from a Schemer's perspective (2021)”

The actual details of how the underlying datastructures work isn't that hard to grasp (see: link to this video ), 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 link . 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