On Tue, Dec 1, 2009 at 10:29 AM, CuppoJava <patrickli_2...@hotmail.com> wrote:
> There are more qualified people than me on these boards, but I can
> offer my own personal experience, which is to say, as a first language
> I would still recommend going the C/Java/Basic/Assembly route first
> before going with a Lisp.

I think understanding how computers work (Von Neumann machines,
I suppose) is indeed important.  If you're serious about being
a good programmer, you need to understand pointers, memory
allocation, virtual memory, IO scheduling, etc.  You at least
need to be aware of all the fiddly bits that modern programming
environments try to abstract away, so that when they fail to
behave well, or just plain fail, you have a fighting chance of
understanding what's going on.

But do you need to learn all that *first*?  I don't think so.
I didn't -- I learned BASIC and didn't know anything about
pointers.  Then I learned Pascal and pointers, and didn't know
anything about malloc or process scheduling.  Then I learned
C and some operating system internals.

So I think there's no harm in learning a nice clean high-level
language first, as long as you eventually learn some C and OS
stuff.  Maybe you'll find you like C and get into hardware driver
development.  Or more likely you'll be happy to tuck away the
C knowledge and do mid- or high-level work in a language that
allows you to (most of the time) ignore such details.  Clojure is
designed to be a good place to end up in this more likely case,
and I think is largely succeeding.

I think the biggest down side to learning Clojure as a first
language, as others have mentioned, is its relationship to the
JVM.  Although this is a strength when it comes to actually using
Clojure to get real things done, especially while Clojure is
still so young, I fear it's a weakness for a first language.
Currently doing almost anything interesting requires not only
knowledge of Clojurey things (immutable collections, functional
style, lazy seqs, etc.) but also Javay things (static methods,
method inheritence, classpaths, javadocs).  This is one reason
why I recommend http://projecteuler.net -- it allows you to
accomplish *something* with nearly pure Clojure, even though you
don't get to do anything graphical or webby.  So I *hope* that's
good enough for Clojure to be a good first language -- after all,
why not start off where you should end up? -- but I worry that
it's not.

If you're tenacious and hungry for knowledge, I'd say "go for it."

--Chouser

-- 
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