Re:[Ask HN]: Clojure - why the optimism?
by hga on Sunday January 24, 2010 @11:48AM
(#1073438)
Why Clojure looks like it might be the "future of Lisp" (to quote Dan Weinreb (he said something to that effect in his ITA Google talk)):
As I noted in my earlier posting, many would say the Scheme language standard is too small and Common Lisp too big; Clojure aims to be just right.
It's not particularly multi-paradigm; rather, it's determinately functional and aimed at the multi-core/multi-thread "future" that's now arrived. It's "secret sauce" is a data structure (http://en.wikipedia.org/wiki/Hash_array_mapped_trie) that solves the functional programming trivial update problem ("changing" one of the built in sequence types is O(n), where n is a max of 32 and more like 5-6).
With the above immutable data as base, it provides a variety of methods to manage multiple threads, e.g. STM (which has a much better chance of working in a functional language than trying to bolt it onto an imperative one), "agents" which are much like actors, but they can safely share (immutable) data and so on.
It provides a general approach to lists, vectors, maps and sets and makes the latter first class citizens. Rich Hickey took the opportunity to ... update the syntax to heavily and appropriately use vectors (they are denoted by square brackets) and many people like this (I don't :-).
It has a Common Lisp style macro system with as I understand it some extra features that make it safer than Common Lisp's.
And the proof is in the pudding: it appeared out of the blue in 2007 and has seen a lot of uptake. It is already being used in production systems (e.g. Flightcaster).
For this old Lisp hand (1979), it provides hope I haven't felt for Lisp since the mid-late '80s.
As I noted in my earlier posting, many would say the Scheme language standard is too small and Common Lisp too big; Clojure aims to be just right.
It's not particularly multi-paradigm; rather, it's determinately functional and aimed at the multi-core/multi-thread "future" that's now arrived. It's "secret sauce" is a data structure (http://en.wikipedia.org/wiki/Hash_array_mapped_trie) that solves the functional programming trivial update problem ("changing" one of the built in sequence types is O(n), where n is a max of 32 and more like 5-6).
With the above immutable data as base, it provides a variety of methods to manage multiple threads, e.g. STM (which has a much better chance of working in a functional language than trying to bolt it onto an imperative one), "agents" which are much like actors, but they can safely share (immutable) data and so on.
It provides a general approach to lists, vectors, maps and sets and makes the latter first class citizens. Rich Hickey took the opportunity to ... update the syntax to heavily and appropriately use vectors (they are denoted by square brackets) and many people like this (I don't :-).
It has a Common Lisp style macro system with as I understand it some extra features that make it safer than Common Lisp's.
And the proof is in the pudding: it appeared out of the blue in 2007 and has seen a lot of uptake. It is already being used in production systems (e.g. Flightcaster).
For this old Lisp hand (1979), it provides hope I haven't felt for Lisp since the mid-late '80s.