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