Oh, I forgot a major issue -- some unhelpful error messages, at the moment. (There's nothing wrong with making errors; they provide feedback on unusual or unexpected situations.) Unfortunately, I suspect you'll have a hard time with Clojure's error messages. Particularly if you're not used to lazy sequences (but rather eager ones), where code doesn't necessarily execute until the last moment.
There's a couple ways I deal with this. For one thing, when something unexpected happens when I'm hacking something out, I use a more conservative approach, where I think things through more carefully and modularize things better. Because the debugging cost of a bug has increased. Other possibilities include using asserts (code which signals an error when an assumption of yours is violated), and better testing. Also, I stick types onto data, and customize how they print to screen. So for instance, an eBay order might print like this: #<eBay 132 paid> emphasizing only order# and payment status, rather than its in-memory representation as a big XML structure. And when I do want to examine big representations, I use a "pretty printer" to format them readably. Tayssir On Dec 1, 4:00 pm, Tayssir John Gabbour <tayssir.j...@googlemail.com> wrote: > Hi, > > As an occasional Clojure user, and someone who's used Common Lisp a > lot, I'd venture that Clojure is a good first choice. But let me > metion areas of difficulty first. Geoffrey Teale discussed the big > things, so let me mention some little ones: > > - Java's classpath currently demands that you respect its > inflexibility. If you have a problem with a library which seems to > work for everyone else, the classpath is a big thing to check. > > (Clojure's add-classpath should increase its flexibility. But people > aren't supposed to depend on it; and I noticed it interacts weirdly > with Java's database manager, JDBC. Last week, JDBC promised it knew > of my MySQL lib which I loaded using add-classpath; but when it came > time to actually pull data, it complained that it didn't have the > library loaded.) > > - Also, Java prioritizes security over usability. Which I also > recently ran into: > <http://my.opera.com/karmazilla/blog/how-to-grab-the-certificate-from- > a-website-and-import-it-with-java-keytool> > > That said, I would've been best served by learning Clojure or Common > Lisp first. (Or flexible ancestors like Lisp Machine lisp. Not Scheme > though.) Due to whatever quirks in my personality. For me, Clojure can > be engrossing like a good video game; I'm not always happy (maybe I'm > coasting along and then the big boss kills me a few times, and I have > to figure out how to defeat or bypass it), but it's at least not > unnecessarily boring. > > In addition to the all-important video game metric, you get to interop > with the normal world through Java/.net/etc, and I'm sure you'll meet > with the approval of at least some theoreticians. Clojure may also > help you evaluate other languages better. > > There's some advantages Common Lisp holds over Clojure (and vice- > versa), but the ones most important to me are dwindling. For instance, > CL's multimethods have really nice features. I use them regularly for > web programming. However, Mikel Evins is releasing an interesting > Clojure library for this called Categories. (Not that I know much > about it.)http://mikelevins.livejournal.com/ > > Hope this helps, > Tayssir > > On Dec 1, 6:38 am, Towle <towle.m...@gmail.com> 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