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