Posted By: Charles | Oct 6th @ 10:29 AM | 55,840 Views | 24 Comments
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!
Rating:
12
0
exoteric
exoteric
I : Next<I>

Brian Beckman And Rich Hickey! ARGHHHHH Big Smile

Loading...

 

I'm quite impressed with the persistence characteristic of Clojure. That's a kind of purity of its own.

 

Clojure and Scala look like the hot languages of the day and both run on JVM and also CLR.

Must revisit Are We There Yet?

I had no idea Clojure supported the CLR...!

 

This is great!  Thanks for the awesome video!

This is great! great! great!

 

I would like to see the continuation of this discussion!

 

Finally I can use Lisp, before I completely forget it.

It's been more than 10 years since I last work on it, but Clojure makes perfect sense to try out some real world scenarios.

 

Wow, that's really awesome!

"
Status: definitely alpha. Developers only at this point.
Alpha = rough edges, incomplete features, slow.
"

This from the ClojureCLR link dated feb 2009, is this still the case? Would love to be able to actually use Clojure on .Net

GrantB
GrantB
What the hell are we supposed to use man? Harsh language?

Nice stuff. I like the deep language design topics.

 

For those that might be interested....

 

Clojure for Java Programmers

http://clojure.blip.tv/file/982823/

Channel 9 seems to be on a roll at the moment. Erik appears to be a Functional Force of Nature and now we've got Brian back! Awesome. I'm not saying they are connected, but if the apparent increase in the rate of innovation and related deep thinking in the fields of programming languages, tools and runtimes is due in some small part to having the comfort factor of a fast-enough single threaded future removed then the 'retreat' to multicore is one of the best things to happen to the software industry in the last seven years.

exoteric
exoteric
I : Next<I>

The implications of the statement "objects conflate value and identity" and "this is broken" appears to me to me that the CLR model is broken (shock!) since the CLR operates on {C,MS}IL which maintains the C#/VB notion of objects. Correct?

 

Even if Clojure can be built on the CLR and JVM, can we say that these VM's are appropriate for the paradigm shift that's only just begun?

 

It's actually quite astonishing, this view of an object as a timeline of values, where each value is its state in a point in time. Also, I love the connection between Clojure "objects" and IObservable. Reminds me of Brian's comment "...mutable, and very observably so". Almost like IO on steroids since IO deals with properties whereas here you can take the whole object and it becomes a timeline.

 

A language like this which these powerful datastructures built into the language is quite appealing even if conventional wisdom is to not have it in libraries. D does the same with its maps although its notion of a map is completely traditional and imperative.

 

It's quite disturbing that in this world of increasing immutability, the BCL stands out as incredibly mutable. Is this good enough to build the future on do you think or can we no longer hide that the imperative style language(s) that the CLR was founded on and the BCL was written in is broken for the future? Looks like a big reconstruction project. And what primitives do you choose to rebuild it for the future. Task and Future ain't cutting it.

 

I love the concepts of Clojure even if the LISPy syntax "red pill" may be too tough swallow. But there's no reason why something like this could not underpin many DSL's, such as what we see in "Oslo".

 

And the reference to Timewarp brings up again the connection between programs and the OS and what the OS offers programs and how it interacts with them. Sounds like a great potential interview.

 

Hmm...

Microsoft Communities