Hi,

I don't post here much and so you may see that as a reason to discount 
what I say.  Infact that would probably be a good plan.   I generally 
talk a load of twaddle.  With those caveats firmly in mind here's my 
tuppence worth.

I'd hate to think your first language is defining as you suggest.  I, 
like most people of my age, wrote mostly BASIC and assembly code for the 
first five or six years of my programming experience.  In my case that 
was all for the Zilog Z80 and later the  Motorola 68000.   While I have 
fond memories of those times I generally wouldn't want to go back to 
those languages or tools, and most of my work exhibits a functional 
style that is far from idiomatic for the average BASIC or assembler 
programmer.    I suspect that what Clojure programmers have in common is 
not their programming roots, but the openness of their minds and a 
desire to continuously learn and improve.   A large number of 
programmers learn one language and then try desperately to avoid 
learning anything else.   Another group are keen only to learn new 
skills they think are marketable (they tend to be the ones who are 
always begging to go on the latest training course in Microsoft this or 
Oracle that in my experience).   I would tell you to avoid being in 
those groups, but I think it's useless - you will develop in accordance 
to your character.  That you are here is probably a good sign though.

So.. back to your actual question.  Here's my thoughts.  Clojure is a 
relatively young language and there's still a lot about the landscape 
that is evolving.    This in turn means that some things are hard to 
work out, and only documented in the most superficial way.   This is 
both a joy (after all you need a challenge!) and occasionally a pain in 
the bum.   In fact it is quite reminiscent of those days of assembly 
programming I had back in the 1980s.  Whether this is something you want 
in your life only you can tell, and perhaps the answer is too try.   
Prepare to be frustrated and prepare to get good at asking questions - 
two elements that are unavoidable in life, so why not practise!  If you 
think you have the interest and the will power to get through those 
things then Clojure would indeed be an excellent place to throw your hat 
into the ring.

Before you dive in there are some other aspects to consider.  Although 
there are new libraries being written all the time, it is not at all 
uncommon to drop directly into the world of Java libraries when doing 
productive work in Clojure.  This is a great strength of Clojure and 
also a weakness.  Dropping into Java space can make it harder to realise 
the benefits that Clojure offers.   There also a danger that, in order 
to get things done, what you'll end up learning is the java libraries, 
not the idiomatic Clojure way of doing things.   Furthermore Clojure 
inherits some of the complexities of Java.   The word CLASSPATH could 
easily haunt you for the rest of your life.   There are easier 
environments to work in!

So I guess the answer is this: if you're looking to get the most from 
Clojure as a language the first step might be to become proficient as a 
functional programmer - if you get there then the way Clojure does 
things will mostly just make sense.   In terms of the materials 
available to you a better language to learn functional programming in 
might be Haskell, or if it really must be a Lisp (which is certainly not 
a bad idea!) then I would look to Scheme.  Then, armed with that 
knowledge come back to Clojure.

Now, please forget everything I just told you and go out and make your 
own mistakes - it's the only way to learn!

-- 
Geoff Teale

On 12/01/2009 06:38 AM, Towle wrote:
> Hi all,
>
> Thanks for taking the time to read my post. I'm interested to get some
> opinions from experienced Clojure programmers on whether the language
> would be a good first language to learn, or rather to learn in-depth.
> I have minimal experienced with more common languages like Java, HTML,
> and C++, but having the personality I do, felt compelled to shop
> around a bit before choosing a first language to learn seriously on a
> deep and intuitive level-- perhaps my odd notion of there being a
> connection between a programmer and the first language s/he
> understands on that high of a level. So after shopping around
> thoroughly and picking up bits about on theoretical computer science
> and the history of programming languages, I decided to pick up a Lisp;
> I'm intrigued by the greater concept/idea behind the Lisp family of
> languages.
>
> After a long while trying to figure out which of the Lisps would be a
> good first choice, I stumbled across Clojure and immediately thought
> it a brilliant idea, conceding of course that at my current level of
> knowledge, I likely have no idea what a brilliant idea in computer
> programming looks like. Regardless, it still feels brilliant.
>
> As I see it, among other features of the language, the idea of a Lisp
> designed to be a capable choice for "real-world" code applications,
> that is a Lisp which embodies the spirit of that family of languages
> yet one which resolves many of the "practicality" complaints which
> stand as hurdles on a Lisp's path to real-world use. For my situation,
> that of a student who wants both a) to learn a first language I can
> have a real, intellectual appreciation for and b) to begin the journey
> to "expertise" in a language it would be practical to code web
> applications in.
>
> So, Clojure programmers, am I wrong? Should I pass on Clojure in favor
> of another langauge? Or learn Common Lisp or Scheme first, then try my
> hand at Clojure? Am I mistaken for a different reason? Or perhaps
> there are some criteria I should consider before diving in?
>
> Thanks in advance, and again for taking the time to read.
> --Towle
>
>    

-- 
You received this message because you are subscribed to the Google
Groups "Clojure" group.
To post to this group, send email to clojure@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+unsubscr...@googlegroups.com
For more options, visit this group at
http://groups.google.com/group/clojure?hl=en

Reply via email to