Clojure is an amazing piece of work.

I'm interested in Clojure for the concurrency.

I'm also interested in the immutable data structure work.
Someone needs to write a paper about the performance
characteristics of immutable structures when the whole
structure changes. That is, what are the performance
comparisons of mutable/immutable for various sorts?

I'm using Clojure as a "console front end" to our
huge Java project. Rather than writing Java programs to
generate test or output I write Clojure.

Rich Hickey's insightful videos have caused me to stop
writing loops whenever possible. For me this is the same
level of "thinking-change" that happened when I moved to
using "Structured Programming" rather than GOTO (in Fortran).
Rich needs to write a paper called
  "Loops considered harmful"

Common lisp, however, gives me precise machine-level to
massive function semantics, e.g. (car ...) is a machine
pointer and (integrate ...) is a huge function but I can
freely mix them in (integrate (car ...)). I don't feel the
same "one-ness" in Clojure/Java.

In general, I'm a common lisp bigot :-)

Tim Daly

rob levy wrote:
As an informal survey of people who use both Clojure and Common Lisp for different projects, what do you see as the main determining factors behind your choice to use either Clojure or Common Lisp for a project, given the present state of Clojure. Let's only assume we are talking about projects you completely own and have complete freedom to do what you want with.

Common lisp:
   Compiled on the processor, fast.
Reader macros. Quality, not quantity of libraries. Multi-paradigm programming with no nudging -- programmer has freedom to be insane/bizarre in ways Clojure makes hard (see Let Over Lambda for examples)
   Downsides:
     Hard to deploy. -- but not a problem as server side of web app
Can't run on on GAE. -- need to run a server or rent/maintain virtual server.
     Limited to native librares, though they tend to be awesome.

Clojure:
   Neat concurrency stuff.
Better deployment. Can run on Google App Engine. (maybe ABCL can too, but I wouldn't want to use that personally).
   Lots of Java libraries, many more than for CL.
   Increasing a large number of awesome native libraries.
   Downsides:
As server side of web app in apache, less straigtforward requires Tomcat, Java crud. Java interop is great-- but Java itself sucks! There is an impedance mismatch of language semantics. The nudging of paradigm/idiom makes many things easier in Common Lisp. Lots of cool benefits of Clojure (such as any/all GUI stuff for example) depend on crufty Java nonsense you must contend with.


So, for me at this point, if I don't need interesting concurrent stuff, and I do my own hosting, Common Lisp in Hunchentoot or mod lisp still seems like a superior web development approach. On the other hand if I am doing desktop apps, applets, want to use GAE, etc, Clojure seems better. I feel like as time goes on we will be more abstracted away from the pain of Java.

Any thoughts on how you make your decision for specific projects?

Thanks,
Rob
--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

--
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to [email protected]
Note that posts from new members are moderated - please be patient with your 
first post.
To unsubscribe from this group, send email to
[email protected]
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to