Newbie (with no Java experience) - how best to learn?

13 views
Skip to first unread message

Paul Moore

unread,
May 27, 2010, 7:53:10 AM5/27/10
to Clojure
Hi,
I'm new to Clojure, and looking for the best way to get going. I've
got a pretty broad experience of various programming languages (C,
Python, Lua, Factor, JavaScript, Haskell, Perl, ...) including a bit
of experience with Lisp-like languages, so the language itself isn't
likely to be a huge problem for me. But I've no background with Java
(beyond a few "toy" programs, and knowing the syntax) so the
environment (classpaths, compiling, where to find libraries,
performance, JVMs, etc) is pretty much a mystery to me.

I've browsed a bit online, read some of the wikibook articles, and
Mark Volkmann's excellent summary, but I'd like to dig a bit deeper
(as I say, particularly around libraries and environment, less on how
to program in a lisp-like language). Ideally, in a form that I can
read offline (printable/PDF documents, or books) as I've got limited
free time I can spend in front of a computer screen. I've got a sample
program I have tried porting from Python - the experience was
interesting, but limited (the core of the relatively complex
multithreaded database monitoring process converted to 47 lines of
Clojure...!!!)

Has anybody got any good suggestions as to where I should go next?
I've considered getting one of the Manning books (The Joy of Clojure
or Clojure in Action) but I'm not sure which would be better for me -
they seem broadly similar, with Clojure in Action looking like a
slightly better fit for my needs, but I'd appreciate any
comments/recommendations). Also, I wonder whether there's some
Java-based documentation that would be worth my while investigating. I
suspect that it'd be very easy to get sucked into a huge amount of
detail which is only tangentially related at best, but I'm sure an
overview would help.

Thanks for any suggestions,
Paul.

Sean Devlin

unread,
May 27, 2010, 10:16:58 AM5/27/10
to Clojure
Welcome aboard Paul!

So, where should you get started? I can think of a couple good things
to do to start.

1. Pick an IDE and stick with it. I'd recommend ClojureBox if you're
interested in Clojure only, or NetBeans + Enclojure if you want to
learn some about Java too. In fact, NetBeans is probably a better
place to start.

2. If you're looking for a dead tree reference, Halloway's book
Programming Clojure is a great start. I'd recommend it to anyone not
named Rich Hickey. Also, I strongly recommend Core Java Volumes I &
II from Horstmann & Cornell to get started with Java.

3. Once you start to play around with the examples in a REPL, take a
look at some of the material here:

http://news.ycombinator.com/item?id=1033503

4. Find a project & start playing. The best way to learn is by
doing, after all :)

Sean

Base

unread,
May 27, 2010, 10:38:19 AM5/27/10
to Clojure
Hi Paul -

I am also a newbie, but have been approaching thsi for the other
direction - knowing Java and not knowing Lisp or any other FP
language.

What I have found is that I really strive to spend most of my time in
Clojure, not Java. Hence I only really use java when I *have* to.
And even then, all I ever do is instantiate a class or 2 and call a
method.

I do not use swing (java GUI package) and have not (so far) found the
need for much else. I would go online and read an intro tutorial or
two for Java just to familiarize yourself with the basic constructs.
I would also browse the java API at http://java.sun.com/javase/6/docs/api/
. I think that you will find that you can learn the java you need on
the fly.

Regarding Clojure I got Stuart Halloway's book Programming Clojure
( http://pragprog.com/titles/shcloj/programming-clojure ) and it was
fantastic because it gave me a strong intro really quickly. What I
didn't expect is how many times I have fond myself going back to the
book. It has more advanced concepts (at least for me... !) that I
didn't pick up on when I first was starting. This has been a real
bonus for me.

Also, I spend a *lot* of time on this site and ask a lot of really
dumb questions. Clojure has the best group support by far of any
language I have ever seen. The people on this board are truly
amazingly helpful and patient - even with us newbies :)

The hardest part for me was getting things configured. It is really
confusing - particularly if you have no background to java. Most of
the users here use emacs for their IDE. If you know emacs you can
certainly try that. There is Clojure in a Box that is a self
contained package If you do not use emacs ( I do not - it is too damn
confusing for me) then i recommend using and IDE that has clojure
support. There is one for Netbeans called Enclojure. I use Eclipse
and a plugin called CounterClockwise. I really like it.

Stu Halloway has a great starting tutorial with instructions on how to
get up to speed and has a series of tutorials via a web server
(integrated into the app). It is located at:

http://github.com/relevance/labrepl

This is where I would start. It has helped me out immensely.

Cheers

Base

eyeris

unread,
May 27, 2010, 11:39:50 AM5/27/10
to Clojure
The Full Disclojure video series is targeted more toward the lisp
newbie, but it contains a series of videos touring different
development environments. http://vimeo.com/channels/fulldisclojure


On May 27, 6:53 am, Paul Moore <p.f.mo...@gmail.com> wrote:

Li Shang

unread,
May 27, 2010, 10:56:04 AM5/27/10
to clo...@googlegroups.com
I think learn lisp is important to learn clojure.
so ansi common lisp, on lisp ,paip is three book must to read.

2010/5/27 Base <basse...@gmail.com>:

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

Paul Moore

unread,
May 27, 2010, 12:09:23 PM5/27/10
to clo...@googlegroups.com
On 27 May 2010 15:16, Sean Devlin <francoi...@gmail.com> wrote:
> Welcome aboard Paul!

Thanks!

> 1.  Pick an IDE and stick with it.  I'd recommend ClojureBox if you're
> interested in Clojure only, or NetBeans + Enclojure if you want to
> learn some about Java too.  In fact, NetBeans is probably a better
> place to start.

I don't really like IDEs, I'm a text editor sort of person, I'm
afraid. I'll be using Vim to write my code, unless someone gives me
very strong reasons to do otherwise. And to be honest, if I can't code
in clojure using Vim, I'd be assuming clojure isn't for me, I'm
afraid.

> 2.  If you're looking for a dead tree reference, Halloway's book
> Programming Clojure is a great start.  I'd recommend it to anyone not
> named Rich Hickey.  Also, I strongly recommend Core Java Volumes I &
> II from Horstmann & Cornell to get started with Java.

Thanks for the references. I'd been under the impression that
Programming Clojure was more a language tutorial. Looks like I was
wrong - I'll check it out!

While the Java books look good, I'm not sure how useful they will be.
I have (a fairly old copy of) "Java in a Nutshell" and a couple of
other ones, and I'm really not a fan of Java the language - so I don't
want to invest too heavily in Java books unless they are going to be
useful from a clojure point of view. I'll keep them in mind, though.
(Basically, I'd rather get Java background from something downloadable
for free).

> 3.  Once you start to play around with the examples in a REPL, take a
> look at some of the material here:
>
> http://news.ycombinator.com/item?id=1033503

Nice link, thanks!

> 4.  Find a project & start playing.  The best way to learn is by
> doing, after all :)

Absolutely - I'm planning on building up my database monitoring app as
a starter. I also have a couple of other testbed applications I'd like
to try. On that note, are there good (java|clojure) libraries I should
look at for:
- command line argument handling (getopt style option handling)
- simple parsing (suitable for something like a small expression parser)

Thanks again,
Paul.

Paul Moore

unread,
May 27, 2010, 12:23:42 PM5/27/10
to clo...@googlegroups.com
On 27 May 2010 15:38, Base <basse...@gmail.com> wrote:
> Regarding Clojure I got Stuart Halloway's book Programming Clojure

Another recommendation! Looks like that's definite then :-) Thanks.

> Also, I spend a *lot* of time on this site and ask a lot of really
> dumb questions.  Clojure has the best group support by far of any
> language I have ever seen.  The people on this board are truly
> amazingly helpful and patient - even with us newbies :)

Reassuring to know. As I suspect my dumb questions will be heavily
JVM-biased ("What's a classpath?") I'll probably need all the patience
people can muster!

Actually here's a JVM sort of question to start off with. To run my
little database monitor script on Windows, I use a command line

java -cp clojure.jar;clojure-contrib.jar;D:\Oracle\product\10.2.0\client_1\jdbc\lib\classes12.jar
clojure.main db.clj

That's a pretty hairy command line, just to run a script with no
parameters! What's the best way to tidy this up (on the Windows
command line)? I'd prefer not to wrap it in a batch file for a couple
of reasons - two files to maintain, and batch files have some
irritating properties on Windows.

For the script, I can associate "java -cp clojure.jar clojure.main %*"
with the .clj extension and that's OK, But is there a way of adding
the references to the other jars from within the script, so I don't
need to specify the classpath on the command line?

> The hardest part for me was getting things configured.  It is really
> confusing - particularly if you have no background to java.  Most of
> the users here use emacs for their IDE.  If you know emacs you can
> certainly try that.  There is Clojure in a Box that is a self
> contained package If you do not use emacs ( I do not - it is too damn
> confusing for me) then i recommend using and IDE that has clojure
> support.  There is one for Netbeans called Enclojure.  I use Eclipse
> and a plugin called CounterClockwise.  I really like it.

As a non-Java user, I'm strongly averse to the various IDEs.
Personally, I'm a Vim user and I like to do my compiling from the
command line. Hopefully, the "bare metal" approach won't get me into
too much trouble!

> Stu Halloway has a great starting tutorial with instructions on how to
> get up to speed and has a series of tutorials via a web server
> (integrated into the app). It is located at:
>
> http://github.com/relevance/labrepl
>
> This is where I would start.  It has helped me out immensely.

That looks like a great resource! Thanks!

Paul.

Paul Moore

unread,
May 27, 2010, 12:26:29 PM5/27/10
to clo...@googlegroups.com
On 27 May 2010 16:39, eyeris <drewp...@gmail.com> wrote:
> The Full Disclojure video series is targeted more toward the lisp
> newbie, but it contains a series of videos touring different
> development environments. http://vimeo.com/channels/fulldisclojure

Ta. Any way of downloading these to watch on my iPod? As I say, I have
limited opportunities to sit in front of a PC to read/watch training
stuff.

Paul.

Sean Devlin

unread,
May 27, 2010, 1:26:38 PM5/27/10
to Clojure
On May 27, 12:26 pm, Paul Moore <p.f.mo...@gmail.com> wrote:

> On 27 May 2010 16:39, eyeris <drewpvo...@gmail.com> wrote:
>
> > The Full Disclojure video series is targeted more toward the lisp
> > newbie, but it contains a series of videos touring different
> > development environments.http://vimeo.com/channels/fulldisclojure

>
> Ta. Any way of downloading these to watch on my iPod? As I say, I have
> limited opportunities to sit in front of a PC to read/watch training
> stuff.
>
> Paul.

I make them available CC BY-NC-SA, so download away. You'll need a
vimeo account (free) to download them, though.

Sean

Meikel Brandmeyer

unread,
May 27, 2010, 2:04:23 PM5/27/10
to clo...@googlegroups.com
Hi,

On Thu, May 27, 2010 at 05:09:23PM +0100, Paul Moore wrote:

> I don't really like IDEs, I'm a text editor sort of person, I'm
> afraid. I'll be using Vim to write my code, unless someone gives me
> very strong reasons to do otherwise. And to be honest, if I can't code
> in clojure using Vim, I'd be assuming clojure isn't for me, I'm
> afraid.

There is VimClojure:
http://www.vim.org/scripts/script.php?script_id=2501

I suggest to stay away from the nailgun server for the beginning.
<C-n> completion, syntax highlighting and indenting work very well
without it.

There is a separate group for it:
http://groups.google.com/group/vimclojure

In case of problems, you can drop me an email or try to catch
me on IRC (kotarak on #clojure).

Sincerely
Meikel

nickikt

unread,
May 27, 2010, 3:06:39 PM5/27/10
to Clojure
Hallo,

What real helped me to start thinking in "The Clojure Way" are the
Talks that Rich gave. You can find some of them here
http://clojure.blip.tv/posts?view=archive&nsfw=dc

I think you should check out the "Clojure for Lisp Porgrammers Part 1
and 2". In talks he goes deeper because he does not have to explain al
the Basics of Lisp (like he head to in "Clojure for Java Programmer")

The others like "Clojure Sequences", "Clojure Data Structures" or
"Clojure Concurrency" and the really interesting too.

Then there are a couple of talks online on InfoQ. Here some links I
looked up but there is more.

http://www.infoq.com/interviews/hickey-clojure
http://www.infoq.com/presentations/Are-We-There-Yet-Rich-Hickey

Dave Pawson

unread,
May 27, 2010, 3:08:53 PM5/27/10
to clo...@googlegroups.com
Is there a wiki where all these info sources could be collected please?
Sounds really quite useful to the newbie.

regards

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

--
Dave Pawson
XSLT XSL-FO FAQ.
Docbook FAQ.
http://www.dpawson.co.uk

Paul Moore

unread,
May 27, 2010, 1:47:17 PM5/27/10
to clo...@googlegroups.com
On 27 May 2010 18:26, Sean Devlin <francoi...@gmail.com> wrote:
> I make them available CC BY-NC-SA, so download away.  You'll need a
> vimeo account (free) to download them, though.

Ah, I hadn't realised that signing up got a download option. Thanks!
Paul.

Alex Ott

unread,
May 28, 2010, 3:30:27 AM5/28/10
to clo...@googlegroups.com
Re all

Dave Pawson at "Thu, 27 May 2010 20:08:53 +0100" wrote:
DP> Is there a wiki where all these info sources could be collected please?
DP> Sounds really quite useful to the newbie.

Just FYI - I have special page (http://alexott.net/en/clojure/video.html)
with links to video lectures/screencasts about Clojure


--
With best wishes, Alex Ott, MBA
http://alexott.blogspot.com/ http://alexott.net
http://alexott-ru.blogspot.com/

Dave Pawson

unread,
May 28, 2010, 3:56:40 AM5/28/10
to clo...@googlegroups.com
On 28 May 2010 08:30, Alex Ott <ale...@gmail.com> wrote:
> Re all
>
> Dave Pawson  at "Thu, 27 May 2010 20:08:53 +0100" wrote:
>  DP> Is there a wiki where all these info sources could be collected please?
>  DP> Sounds really quite useful to the newbie.
>
> Just FYI - I have special page (http://alexott.net/en/clojure/video.html)
> with links to video lectures/screencasts about Clojure

Thanks Alex.
How to link to it from the clojure setup?

regards

Alex Ott

unread,
May 28, 2010, 4:26:30 AM5/28/10
to clo...@googlegroups.com

Dave Pawson at "Fri, 28 May 2010 08:56:40 +0100" wrote:


DP> On 28 May 2010 08:30, Alex Ott <ale...@gmail.com> wrote:
>> Re all
>>
>> Dave Pawson  at "Thu, 27 May 2010 20:08:53 +0100" wrote:
>>  DP> Is there a wiki where all these info sources could be collected please?
>>  DP> Sounds really quite useful to the newbie.
>>
>> Just FYI - I have special page (http://alexott.net/en/clojure/video.html)
>> with links to video lectures/screencasts about Clojure

DP> Thanks Alex.
DP> How to link to it from the clojure setup?

I don't know - we could ask Rich (or somebody else) to add link to this page

Reply all
Reply to author
Forward
0 new messages