
How to setup Clojure from scratch - acangiano
http://programmingzen.com/2010/07/13/how-to-setup-clojure-from-scratch/
======
j_baker
Of course, you could also just use cljr: <http://github.com/liebke/cljr>

~~~
twism
..or leiningen
[http://github.com/technomancy/leiningen/blob/master/README.m...](http://github.com/technomancy/leiningen/blob/master/README.md)

~~~
devonrt
Leiningen's goals are slightly different than clrj's. Leiningen is more like a
Maven type project descriptor/build system whereas cljr is more like an
easy_install-esque tool. cljr can be used without creating a project.

~~~
benatkin
Yes, but it does have a repl command, and a swank plugin, and I like using it
as a virtualenv-type tool even when I'm not working on a project. (And most of
the time I am. I find the best way to learn is to attempt to write a real
piece of software, and it has the added bonus that I might be able to add
something to my portfolio.)

------
rclaycoke
What is Clojure performance like? I checked with
<http://shootout.alioth.debian.org> and haven't found it there. We're doing
some lightweight geometrical computations like figure intersections, etc
(queued, not real time) and we built them in JRuby just for fun (JVM is a
requirement here) so I'm wondering how would Clojure perform there.

I'm asking here because I don't know a bit of Lisp so I can't just quickly
code a benchmark. Thanks!!

~~~
acangiano
I tried to convince Isaac to include Clojure in the benchmarks. He will
probably include it once Clojure 1.2 (which has implications for performance)
is released, provided that all the benchmarks are ready.

Generally speaking, I found the following to be true:

Java < Scala < Clojure < ... < JRuby.

Clojure is relatively fast. It really depends on the program at hand, but in
my experience, having to REALLY generalize, it's at least an order of
magnitude faster than Ruby/JRuby.

~~~
technomancy
Simplistic idiomatic Clojure is much faster than JRuby, but often a bit slower
than Java and Scala depending on how much you rely on reflection.

However, if you push it, Clojure can be as fast as anything else on the JVM;
it's just a matter of how much time you spend profiling and optimizing. In
many cases you can output the exact same bytecode in Clojure that you'd get
from a several-times-more-verbose Java program.

An extreme example: <http://meshy.org/2009/12/13/widefinder-2-with-
clojure.html>

~~~
tl
$ time echo '(println "Hello, world!")' | clojure

Clojure 1.0.0-

user=> Hello, world!

nil

user=>

real 0m2.756s

user 0m1.040s

sys 0m0.140s

$ time echo 'print "Hello, world!"' | python

Hello, world!

real 0m0.018s

user 0m0.000s

sys 0m0.010s

Beware the horrible startup time for small programs.

------
hexidecimal0
Keep it up Antonio! Even though my comment has nothing to do with Clojure, but
I just wanted to let you know that I'm very impressed by quality of your
average post. You're like Joel Spolsky of Web 2.0 :)

------
bphogan
Ok, I'm totally a noob with Clojure, but I thought all I had to do was java
-jar ~/clojure.jar and I got a REPL. Did something change recently? This seems
like an awful lot more work than it should be.

~~~
acangiano
java -jar ~/clojure.jar will give you a REPL. It will be a less convenient
REPL though. In particular:

* No history support. Try to use the arrow to go back to the previous instruction and you'll be greeted by ^[[A.

* No tab completion.

* No exit function.

* No startup file with your customizations.

* No clojure.contrib automatically in your classhpath.

* No simple way to automatically place a list of jars for a given project in the classpath by simply specifying them in a file.

java -jar ~/clojure.jar will do. But this, I believe, is nicer.

~~~
briancarper
You can always exit via (System/exit 0), 0 being the return code.

`java -cp clojure.jar clojure.main` is the preferred method of starting
Clojure rather than using -jar, I think.

~~~
acangiano
> You can always exit via (System/exit 0), 0 being the return code.

That's how I implement the exit function in the article.

------
xpaulbettsx
I knew that HN would have an awesome list of resources on this topic, thanks
for the info guys!

------
adamilardi
Is clojure planning to integrate with eclipse? That strikes me as a good way
to get new users.

~~~
acangiano
It is through Counterclockwise:
[http://www.assembla.com/wiki/show/clojure/Getting_Started_wi...](http://www.assembla.com/wiki/show/clojure/Getting_Started_with_Eclipse_and_Counterclockwise)

------
psadauskas

        brew install clojure

~~~
demoon
Hm.. Did you read the article? It's written for folks who want to know how
everything works and what things are composed of.

------
goodbadwolf
Well, you start from inventing the Universe

