Re: how to learn clojure ?
Hey David, do you mean that these concepts are only present in Lisp :))) ?!?!? Good old interpreted Basic, APL, ... -> dynamic global variables, functions, assembly languages in general, C, C++, m4, ... -> macros not as cute as Lisp maybe but still macros, some have very sophisticated features... atoms -> much like semaphores that you will find everywhere in operating system code, drivers, ... agents -> AST's on VMS are a primitive example, you break processing in small chunks and you "call agents" by triggering events. You can then build chains of agents each having executing some specific task. If you worked enough with libthreads in C you can appreciate the simplicity of Clojure's STM. As of multi methods, no examples yet but something might pop in my mind in a few hours. The words method dispatch sound an alarm in my head but I can't find why yet. Dynamic bindings I think are more Lisp specific however they also represent a great mouse trap for beginners. I agree that Lisp is great but since the masses are working with "conventional" languages, they should be able to find anchors in their sphere of knowledge to integrate Clojure. Not linking what you learn to something you already know makes things harder to assimilate. The other approach of rewriting Java code to Clojure and improving the code is also a good complementary approach. Luc On Thu, 2009-02-19 at 12:34 -0500, David Nolen wrote: > No offense here to Lispers but when I learn a new language, I > try to learn it as it is and I make parallels > and connections with what I know at the moment. Otherwise you > end up learning more than one thing > at the same time and it can get quite confusing. > > If your experience is made mostly of "conventional" languages > this path should be easier. > After that if you are curious you can give a closer look to > the Lisp heritage. > > Luc > > > No arguments with most of what you say of course. However I'm not sure > what I used to know from "conventional" languages helps much with > concepts like macros or dynamic vars or multimethods. In fact most of > my time learning Lisp has been like "Holy ! If only I had this > tool/concept 4 years ago! I've been swindled!" ;) > > > David > > > > --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
Great list. On Thu, Feb 19, 2009 at 11:39 AM, Stuart Halloway wrote: > > Thanks for the kind words, David. I hope many people will like > Programming Clojure and find it useful. > > Clojure has a *ton* of goodness in it. I think many of the chapters in > Programming Clojure book could usefully be followed with an entire > book. Here is a partial list of recommendations for companion reading: > > For Java Interop: > * The JVM spec (free online). Know your platform. :-) > > For Functional Programming: > * Real World Haskell (free online) > > For Concurrency: > * Java Concurrency in Practice > > For Macros: > * On Lisp (free online) > > For Lisp in General: > * Practical Common Lisp (free online) > * Paradigms of AI Programming > > For Multimethods: > * The Art of the Metaobject Protocol > > Just Because: > * Structure and Interpretation of Computer Programs > > Cheers, > Stuart > > > Of course I beg to differ. The Stuart Halloway's book is fantastic > > of course, I have it myself. It's absolutely required reading. > > Stuart does his best to describe the ins and outs of the language > > while giving a crash course on the Lisp philosophy. And yes Clojure > > is syntactically different from Scheme and Common Lisp, however many > > of the non-Clojure texts suggested do a better job explaining the > > deeper why's of Lisp programming, concepts that go beyond the > > particular implementation. In fact I would probably recommend the > > Structure and Interpretation of Computer Programs as the > > indispensable Lisp text above all others. > > > > But thats just MHO. > > > > David > > > > On Thu, Feb 19, 2009 at 8:46 AM, Rayne > > wrote: > > > > Telling someone to read a book that isn't even focused on the language > > he's trying to learn isn't a great way to help them. Tell him to read > > Programming Clojure or something, anything but Common Lisp and Scheme > > books, he isn't learning those languages he's learning Clojure. There > > is enough information around on Clojure that someone shouldn't be > > forced to read a book on a completely different language. > > > > No offense guys. > > > > > > > > > > > > > > --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
> > No offense here to Lispers but when I learn a new language, I try to learn > it as it is and I make parallels > and connections with what I know at the moment. Otherwise you end up > learning more than one thing > at the same time and it can get quite confusing. > > If your experience is made mostly of "conventional" languages this path > should be easier. > After that if you are curious you can give a closer look to the Lisp > heritage. > > Luc > No arguments with most of what you say of course. However I'm not sure what I used to know from "conventional" languages helps much with concepts like macros or dynamic vars or multimethods. In fact most of my time learning Lisp has been like "Holy ! If only I had this tool/concept 4 years ago! I've been swindled!" ;) David --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
The second step could be Lisp to Clojure code translation (Clojure Programming/Further Reading) and the third could be on Lisp itself and functional language concepts if the need arises. Reading Clojure code translates from Lisp is not so much to learn Lisp concepts but to see how real problems can be solved in Clojure and to get you familiar with a very different world compared to Java and the current "industry adopted" languages from the last 20 years or so. At least by following this path, you will make progress in the good direction, first learn Clojure and how it can be used and eventually get exposed to Lisp and its siblings. Having done enough work in Lisp myself to understand most of the concepts in Clojure, I followed this track to avoid getting "polluted" by the knowledge I had of Lisp. No offense here to Lispers but when I learn a new language, I try to learn it as it is and I make parallels and connections with what I know at the moment. Otherwise you end up learning more than one thing at the same time and it can get quite confusing. If your experience is made mostly of "conventional" languages this path should be easier. After that if you are curious you can give a closer look to the Lisp heritage. Luc On Thu, 2009-02-19 at 05:57 -0800, MLowman wrote: > Programming Clojure is a good start. I have a copy myself. If there > were a second book on Clojure, what approach would you like to see? > > On Feb 19, 6:46 am, Rayne wrote: > > Telling someone to read a book that isn't even focused on the language > > he's trying to learn isn't a great way to help them. Tell him to read > > Programming Clojure or something, anything but Common Lisp and Scheme > > books, he isn't learning those languages he's learning Clojure. There > > is enough information around on Clojure that someone shouldn't be > > forced to read a book on a completely different language. > > > > No offense guys. > > > > --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
On Feb 19, 11:39 am, Stuart Halloway wrote: > Thanks for the kind words, David. I hope many people will like > Programming Clojure and find it useful. > > Clojure has a *ton* of goodness in it. I think many of the chapters in > Programming Clojure book could usefully be followed with an entire > book. Here is a partial list of recommendations for companion reading: > > For Java Interop: > * The JVM spec (free online). Know your platform. :-) > > For Functional Programming: > * Real World Haskell (free online) > > For Concurrency: > * Java Concurrency in Practice > > For Macros: > * On Lisp (free online) > > For Lisp in General: > * Practical Common Lisp (free online) > * Paradigms of AI Programming > > For Multimethods: > * The Art of the Metaobject Protocol > > Just Because: > * Structure and Interpretation of Computer Programs > > Cheers, > Stuart > > > Of course I beg to differ. The Stuart Halloway's book is fantastic > > of course, I have it myself. It's absolutely required reading. > > Stuart does his best to describe the ins and outs of the language > > while giving a crash course on the Lisp philosophy. And yes Clojure > > is syntactically different from Scheme and Common Lisp, however many > > of the non-Clojure texts suggested do a better job explaining the > > deeper why's of Lisp programming, concepts that go beyond the > > particular implementation. In fact I would probably recommend the > > Structure and Interpretation of Computer Programs as the > > indispensable Lisp text above all others. > > > But thats just MHO. > > > David > > > On Thu, Feb 19, 2009 at 8:46 AM, Rayne > > wrote: > > > Telling someone to read a book that isn't even focused on the language > > he's trying to learn isn't a great way to help them. Tell him to read > > Programming Clojure or something, anything but Common Lisp and Scheme > > books, he isn't learning those languages he's learning Clojure. There > > is enough information around on Clojure that someone shouldn't be > > forced to read a book on a completely different language. > > > No offense guys. Another good way to learn clojure is to convert Java code to clojure code and compare and contrast. I assume you know Java, I have found, I can take a any piece of Java code and rewrite it in Clojure. On the first try, it might look call for call like the Java code. On the refactoring, I will clean it up to make it more lisp like. --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
Thanks for the kind words, David. I hope many people will like Programming Clojure and find it useful. Clojure has a *ton* of goodness in it. I think many of the chapters in Programming Clojure book could usefully be followed with an entire book. Here is a partial list of recommendations for companion reading: For Java Interop: * The JVM spec (free online). Know your platform. :-) For Functional Programming: * Real World Haskell (free online) For Concurrency: * Java Concurrency in Practice For Macros: * On Lisp (free online) For Lisp in General: * Practical Common Lisp (free online) * Paradigms of AI Programming For Multimethods: * The Art of the Metaobject Protocol Just Because: * Structure and Interpretation of Computer Programs Cheers, Stuart > Of course I beg to differ. The Stuart Halloway's book is fantastic > of course, I have it myself. It's absolutely required reading. > Stuart does his best to describe the ins and outs of the language > while giving a crash course on the Lisp philosophy. And yes Clojure > is syntactically different from Scheme and Common Lisp, however many > of the non-Clojure texts suggested do a better job explaining the > deeper why's of Lisp programming, concepts that go beyond the > particular implementation. In fact I would probably recommend the > Structure and Interpretation of Computer Programs as the > indispensable Lisp text above all others. > > But thats just MHO. > > David > > On Thu, Feb 19, 2009 at 8:46 AM, Rayne > wrote: > > Telling someone to read a book that isn't even focused on the language > he's trying to learn isn't a great way to help them. Tell him to read > Programming Clojure or something, anything but Common Lisp and Scheme > books, he isn't learning those languages he's learning Clojure. There > is enough information around on Clojure that someone shouldn't be > forced to read a book on a completely different language. > > No offense guys. > > > > > --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
Programming Clojure is a good start. I have a copy myself. If there were a second book on Clojure, what approach would you like to see? On Feb 19, 6:46 am, Rayne wrote: > Telling someone to read a book that isn't even focused on the language > he's trying to learn isn't a great way to help them. Tell him to read > Programming Clojure or something, anything but Common Lisp and Scheme > books, he isn't learning those languages he's learning Clojure. There > is enough information around on Clojure that someone shouldn't be > forced to read a book on a completely different language. > > No offense guys. --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
Of course I beg to differ. The Stuart Halloway's book is fantastic of course, I have it myself. It's absolutely required reading. Stuart does his best to describe the ins and outs of the language while giving a crash course on the Lisp philosophy. And yes Clojure is syntactically different from Scheme and Common Lisp, however many of the non-Clojure texts suggested do a better job explaining the deeper why's of Lisp programming, concepts that go beyond the particular implementation. In fact I would probably recommend the Structure and Interpretation of Computer Programs as the indispensable Lisp text above all others. But thats just MHO. David On Thu, Feb 19, 2009 at 8:46 AM, Rayne wrote: > > Telling someone to read a book that isn't even focused on the language > he's trying to learn isn't a great way to help them. Tell him to read > Programming Clojure or something, anything but Common Lisp and Scheme > books, he isn't learning those languages he's learning Clojure. There > is enough information around on Clojure that someone shouldn't be > forced to read a book on a completely different language. > > No offense guys. > > > --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
Telling someone to read a book that isn't even focused on the language he's trying to learn isn't a great way to help them. Tell him to read Programming Clojure or something, anything but Common Lisp and Scheme books, he isn't learning those languages he's learning Clojure. There is enough information around on Clojure that someone shouldn't be forced to read a book on a completely different language. No offense guys. --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
I agree with this. Clojure is significantly different than Common Lisp and Scheme, so reading On Lisp and Practical Common Lisp are going to cover a bunch of stuff not relevant to Clojure. The Prag Prog book, Programming Clojure, covers pretty much everything you need to know about Lisp, at least enough to get started with Clojure. After you've started to get the hang of Clojure from reading that book, then maybe go back and give SICP, On Lisp or Practical Common Lisp a try. On Wed, Feb 18, 2009 at 7:51 PM, Jeffrey Straszheim < straszheimjeff...@gmail.com> wrote: > The Common Lisp and Scheme books suggested are great, of course, > particularly _On Lisp_. However, I think learning CL or Scheme is an > awfully roundabout way to learn Clojure. > > I think we should really be pushing the Pragmatic book. It is good and > gets the user to Clojure in a straight line. > > > On Wed, Feb 18, 2009 at 6:11 PM, Timothy Pratley > wrote: > >> >> If you want to dive straight into Clojure I hope this might help: >> http://en.wikibooks.org/wiki/Clojure_Programming/By_Example >> >> >> > > > > --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
Seeing this topic comes up a bit, I've taken the liberty of compiling a wiki list: http://en.wikibooks.org/wiki/Clojure_Programming/Further_Reading Please feel free to add to it. I noticed that the official FAQ http://code.google.com/p/clojure/wiki/FAQ has a few links on Lisp, but I think the Clojure specific ones are useful and a comprehensive list wont fit on the FAQ. Maybe the official FAQ can be linked to it. PS: How come the FAQ has no link from the front page? ;) Regards, Tim. --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
The Common Lisp and Scheme books suggested are great, of course, particularly _On Lisp_. However, I think learning CL or Scheme is an awfully roundabout way to learn Clojure. I think we should really be pushing the Pragmatic book. It is good and gets the user to Clojure in a straight line. On Wed, Feb 18, 2009 at 6:11 PM, Timothy Pratley wrote: > > If you want to dive straight into Clojure I hope this might help: > http://en.wikibooks.org/wiki/Clojure_Programming/By_Example > > > > --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
If you want to dive straight into Clojure I hope this might help: http://en.wikibooks.org/wiki/Clojure_Programming/By_Example --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
MarisO writes: > All documentation I've seen about clojure assumes knowledge of lisp > which I dont have. I'm working on a screencast for PeepCode (http://peepcode.com) that is aimed at teaching Clojure to users of other dynamic languages. It's not ready yet, but it should be on sale in a week or two. I'll be sure to announce it here when it is, of course. -Phil http://technomancy.us --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
These are the resources that I've found to be most useful when initially learning lisp: - SICP lectures (http://groups.csail.mit.edu/mac/classes/6.001/abelson- sussman-lectures/) - Peter Seibel's book Practical Common Lisp (http://gigamonkeys.com/ book/) - Paul Graham's book ASNI Common Lisp (http://www.paulgraham.com/ acl.html). You can read On Lisp, but I would suggest starting here first. In my own studies, I found that Paul Graham's book was the most useful for me to learn the language. I had tried learning Lisp before, but it was his book that really made Lisp click for me.. As for learning Clojure take a look at Stuart Halloway's book from the Pragmatic Programmers (http://www.pragprog.com/titles/shcloj/ programming-clojure). And also check out his website where he has a great little series that translates the examples in Practical Common Lisp into Clojure (http://blog.thinkrelevance.com/2008/9/16/pcl- clojure). I think all of those should keep you busy for quite sometime. Good luck, hope this helps. Christopher On Feb 18, 4:53 am, MarisO wrote: > All documentation I've seen about clojure assumes knowledge of lisp > which I dont have. --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
Paul Graham's book "On Lisp" is one of my all-time favorites. That one uses Common Lisp. Another good thing to check out are the free MIT videos of Abelson and Sussman's "Structure and Interpretation of Computer Programs", and the book these lectures follow. That uses the Scheme dialect of Lisp. Also, check out Doug Hoyte's new advanced book on macros once you get through these others. That's an awesome book. It's kind of a sequel to On Lisp, though by a different author. Rob On Feb 18, 7:53 am, MarisO wrote: > All documentation I've seen about clojure assumes knowledge of lisp > which I dont have. --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
Paul Graham's book "On Lisp" is one of my all-time favorites. That one uses Common Lisp. Another good thing to check out are the free MIT videos of Abelson and Sussman's "Structure and Interpretation of Computer Programs", and the book these lectures follow. That uses the Scheme dialect of Lisp. Also, check out Doug Hoyte's new advanced book on macros once you get through these others. That's an awesome book. It's kind of a sequel to On Lisp, though by a different author. Rob On Feb 18, 7:53 am, MarisO wrote: > All documentation I've seen about clojure assumes knowledge of lisp > which I dont have. --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
You got the recursion part down pat:-) If you want a Common Lisp book, "Practical Common Lisp" is very good, very practical, and you can read it online for free: http://www.gigamonkeys.com/book/ On Feb 18, 7:53 am, MarisO wrote: > All documentation I've seen about clojure assumes knowledge of lisp > which I dont have. --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
Practical Common Lisp is also online and free. Though there are significant differences between the two languages many of the strange and beautiful concepts that Clojure embraces are covered there. Especially dynamic variables, macros, destructuring bind, and multiple dispatch. On Wed, Feb 18, 2009 at 7:53 AM, MarisO wrote: > > All documentation I've seen about clojure assumes knowledge of lisp > which I dont have. > > > > --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
On Wed, Feb 18, 2009 at 9:04 AM, Joshua Fox wrote: > Try this book http://www.pragprog.com/titles/shcloj/programming-clojure > Agreed, that book is a good introduction to Lisp and Clojure for programmers from other backgrounds, as are the Clojure for Java Programmers screencasts at http://clojure.blip.tv. --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---
Re: how to learn clojure ?
Try this book http://www.pragprog.com/titles/shcloj/programming-clojure On Wed, Feb 18, 2009 at 2:53 PM, MarisO wrote: > > All documentation I've seen about clojure assumes knowledge of lisp > which I dont have. > > > > --~--~-~--~~~---~--~~ 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 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 -~--~~~~--~~--~--~---