Skip to content
0:00 / 0:00

#clojure#lisp#richhickey

Clojure for Java Programmers Part 1 - Rich Hickey

ClojureTV

111K subscribers • 159 videos on Hallway

YouTube
  • Recommended by 2 people: 2 on Hacker News.
  • A classic. People kept recommending it from 2013 to 2022.
  • Presented by Rich Hickey, creator of Clojure

Intermediate. Assumes working knowledge.

130K views13 years ago2 recommendations

Programming languagesSoftware designLisp and ClojureFunctional programmingJava and the JVM

Rich Hickey introduces Clojure's syntax, core data structures, and evaluation model to Java developers.

Part 1 of a presentation by Rich Hickey to the NYC Java Study Group. A gentle introduction to Clojure, part 1 focuses on reader syntax, core data structures, code-as-data, evaluation, special operators, functions, macros and sequences. No prior exposure to Lisp is presumed.

Why it's here

2 people recommend this

What people say. Recommended as an excellent introduction to Clojure and Lisp concepts for developers coming from object-oriented backgrounds.

Jachon Hacker News • Recommends

On “How do I “think in AngularJS” if I have a jQuery background?”

Indeed. Rich Hickey's 2-part presentation on "Clojure for Java Programmers" was a really slick presentation of a Lisp. (Focusing on the 'code is data' aspect from the beginning (at least once he starts talking about the language specifics themselves, he does spend a while motivating dynamic languages) rather than talking a lot about just higher order functions and macros and so on. He goes over the evaluation model and its difference from a Java/C++ model, he shows how to interop with Java... It's just a great talk.) Part 1: link to this video Part 2: link Slides: link

greggybon Hacker News • Recommends

On “Understanding the Power of Lisp (2020)”

…ion time in a Lisp is not necessarily similar to compilation in other languages. Working at a REPL does not imply that interpretation is happening. Clojure is an example of a Lisp that is exclusively compiled. Even when sending individual expressions to the REPL, they are compiled before being evaluated. 1: From a reply elsewhere in this thread: link to this video See this video for an overview of the core of Clojure. The link starts with an overview of Clojure's data types and data structures (skipping the intro for the reasons behind Clojure). This leads directly into the evaluation model, which is based on the data structures of Clojure. Watch through ~1h:30m to get a feel for what macros are used…

u/LeSUTHUin r/Clojure • Mentions

…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.…

u/daveliepmannin r/Clojure • Mentions

On “How much of a pro/con is dynamic typing in clojure?”

>I’ve been looking at learning a lisp, and clojure seems like a modern-ey language that people really love. But I’m having trouble imagining working on a big codebase without static types. Clojure is so different from JS/TS that I'm not sure it's helpful to try to understand the relation between them from the perspective of static versus dynamic types. That said, here's some background on why Clojure was designed for serious programmers who wanted a dynamic language: Why use a dynamic language? + Flexibility + Interactivity + Concision + Exploration + Focus on your problem >Why use a dynamic language? ...It ends up that, I think, many Java programmers look at peop…

u/keymonein r/Clojure • Mentions

On “Decent Clojure tutorial for Java devs?”

have you seen Clojure for Java programmers talks? link to this video not exactly a tutorial, but a great intro into differences between programming models, some important opinions baked into clojure, reasons behind them and how they synergize making clojure a very pragmatic language.

u/daveliepmannin r/Clojure • Mentions

On “What is with Clojure?”

Rich's talk Clojure for Java Programmers [2012](link to this video might be right for you. The slide at 14:15 kind of directly answers your questions.

u/admayin r/Clojure • Mentions

On “I just started learning Clojure, I love it but the documentation is just about the worst thing ever”

This has always been a big grip against Lisps and is very understandable. For most people coming from languages with C-like syntax, the parens seem excessive and frankly grotesque. However, the more you learn about Clojure the more you'll head the term homoiconicity come up. A lot of people with refer to this as 'code is data' mentioning things like 'there is only one syntax' or 'simple syntax'. Clojure is a homoiconic language. What that means is the language has the same structure as it's abstract syntax tree. In human (read Non-Rich Hickey) terms, this means that when you write code, you're just building data structures. If you look at Clojure code, everything is written as; 1. Open pa…

u/joshdickin r/Clojure • Mentions

On “How to quickly learn clojure if you already know various other programming languages?”

The creator of Clojure, Rich Hickey, has a good introduction to Clojure specifically aimed at Java developers: link to this video If you already know the JVM, then you’ll be able to be productive in Clojure quite quickly. The hardest thing part, I think, for an OOP programmer is learning functional programming. That’s what will unlock the full potential to write very expressive code.

u/Drolytin r/Clojure • Mentions

On “Two months to pick up Clojure”

You could start with Clojure for Java Programmers, an introduction to the basics of the language by Rich Hickey himself. After that you can check out some of Rich's other talks. This site has a good list. They are mostly not Clojure specific, but will help you learn some of the design philosophy behind Clojure, rather than just the syntax. Clojure Programming is a good book that covers the language pretty well. The Joy of Clojure is a slightly more advanced book that goes a bit deeper. The Clojure Cookbook is more practical, showing you how to accomplish common tasks and introducing some popular libraries. 4Clojure has a number of exercises. You can follow other people and see what thei…

u/nefreatin r/Clojure • Mentions

On “can someone help me understand clojure lisp and the lisp family?”

That's a very broad question. If you give a little more background about yourself it'll be easier to give a good answer. With that in mind here are few talks that might explain things to you: Ruby: link to this video Java Background: link to this video link to this video

u/onetomin r/Clojure • Mentions

On “Is there a Clojure book that doesn't read like Soviet propaganda?”

It's not a book, but I don't think it sounds like any kind of propaganda. Also it's from a trusted source :) Part 1: link to this video Part 2: link to this video and to understand better where does the hate for OOP come from: link to this video it's not really "just an opinion". it's an extremely well reasoned argument, IMHO.

u/iku000888in r/Clojure • Mentions

On “Looking for a specific Clojure video”

Not by Michael Fogus, but this is the most relevant one I can think of on the topic of Java vs Clojure [video

u/therealdivs1210in r/Clojure • Mentions

On “Decent Clojure tutorial for Java devs?”

Start here: link to this video

u/daveliepmannin r/Clojure • Mentions

On “New Clojurians: Ask Anything - August 11, 2025”

In Clojure Made Simple Rich gets into one aspect. >So one of the other things I think we suffer from in object orientation is **death by specificity**. All the time, we have a new thing, we have a new idea, a new piece of data. Boom! We have a new class. Get this, get that, get whatever. >I do not care if they are value types, whatever. It is just a glorified map, except you cannot even use it as a map in Java. There is no generic way to manipulate something that says: get this, get that, get that. So new type, new language, it has got its own little vocabulary. >So you are going to have more code. You are going to have much less reuse. You are going to have more coupling. Because essenti…

istvan__on Hacker News • Mentions

On “John Carmack working on Scheme as a VR scripting language”

Same here, I never understood Java interfaces, abstract classes, and a ton of other "features" but picking up Clojure was a breeze. I don't understand why complicating thing that supposed to be simple helps you by any mean. On the top of that, I have seen several cases when Java programmers tipped over in their own code because of the complexity that they thought they understand, except there was a particular case when it was doing something else then expected. Reasoning about Clojure (LISP) code is always easy because if you follow best practices you have small functions with very little context to understand. On the top of these, I see the ratio of LOC 50:1 (worst case even higher) for Jav…

pgton Hacker News • Mentions

On “An Intuition for Lisp Syntax”

Lisp has only one rule called the Operational Form: (operator arg1 arg2 arg3 ...) The Operational Form is just a list denoted by parentheses. The operation or 'function' comes first, followed by its arguments or operands, e.g. (+ 1 2 3) => 6 The + symbol resolves to the plus function and is passed in the arguments 1, 2 and 3. Nested forms are evaluated inside-out: (+ 5 (- 10 6)) => 9 Traditionally, Lisp only has one data literal: `(linked lists)`, but Clojure adds `square brackets for vectors` and `{:curly brackets}` for hash maps. The colon denotes a keyword, which is a symbol which only ever resolves to itself and is commonly used for labeling things, e.g. keys in a map. Notice how the o…