5 ms·
I wanted to learn a Lisp so I started with Clojure thinking it would be the more practical choice. Unfortunately, I found that for every 1 part lisp I was learn
by marcusbooster 16y ago
I wanted to learn a Lisp so I started with Clojure thinking it would be the more practical choice. Unfortunately, I found that for every 1 part lisp I was learning I had to learn 2 parts Java, which kinda defeated the purpose of my goal of learning a lisp in the first place.
I switched to Common Lisp and have been happy. There are some really great books for it and it's helped my overall programming skill. If I had to work with Java I would consider Clojure, but I didn't find it a particularly enlightening language, at least if you're trying to learn Lisp.
- ukdm 16y agoI'm looking forward to Land of Lisp being released to help me learn. Noticed it when that No Starch 50% off e-books offer was mentioned on HN the other day. Looks like a good started guide, plus making games always helps with motivation. Link: http://nostarch.com/lisp.htm http://nostarch.com/lisp.htm
- spooneybarger 16y agoTo others in a similar position: if you want to learn a lisp, I think racket ( aka plt scheme ) would be the easiest introduction.
- sivers 16y ago(now curious:) Why do you feel Racket is a good introduction to Lisp?
- spooneybarger 16y agoIt has been designed for teaching so there is a lot of material on their site geared towards learning. As part of that, it has a nice set of tools that make it easy to get started. There are a lot of books that teach intro to programming in scheme so there is plenty of offline material as well. The little schemer, SICP, How To Design Programs. See http://docs.racket-lang.org/ http://docs.racket-lang.org/. It also has an active mailing list that is quite noob friendly. EDIT: oh yes, and it is very a 'batteries included' environment. so you can worry about learning the language rather than getting your environment setup.
- drsnyder 16y agoI also think Racket is a good introduction to Lisp. The documentation is great. Take a look at the vector documentation as an example http://docs.racket-lang.org/reference/vectors.html?q=vector&q=return&q=vector http://docs.racket-lang.org/reference/vectors.html?q=vector&.... If you are not familiar with the language, there are plenty of examples to help you get going. I recently started working through The Practice Of Programming and I wanted to compliment it with a functional language. I thought it would make the on ramp to functional languages a little smoother by first coding something in a language I'm familiar with and then port it over (producing more idiomatic scheme is the next iteration). I chose scheme as the compliment and PLT/Racket as the environment. So far, it has been working well.
- tmountain 16y agoRacket is great, and I'm not trying to pick nits, but it's not a Lisp, it's a Scheme dialect. If you want to learn pure Lisp, I'd recommend Paul Graham's book, On Lisp, which is available online for free. http://www.paulgraham.com/onlisp.html http://www.paulgraham.com/onlisp.html
- spooneybarger 16y agoScheme is a lisp. See: http://en.wikipedia.org/wiki/Scheme_(programming_language) http://en.wikipedia.org/wiki/Scheme_(programming_language)
- amalcon 16y agoScheme is a Lisp; it's just not a Common Lisp.
- fogus 16y agoNot advocating either way, but it was always (and still is) interesting to read what Erik Naggum had to about Scheme's Lispiness: http://www.xach.com/naggum/articles/search?q=%22scheme+is+a+lisp%22&sort=of http://www.xach.com/naggum/articles/search?q=%22scheme+is+a+...
- gruseom 16y agoNot only is Scheme Lisp, but On Lisp is absolutely not a beginner's book.
- aaco 16y ago"... but it's not a Lisp ..." It is. "... pure Lisp ..." There is no such a thing as "pure Lisp". Lisp is not a programming language, it's a family of programming languages that share some common properties. To put it more clearly, we could represent Lisp and its members hierarchically: Lisp Common Lisp CLISP SBCL ... Scheme Racket Gambit Chicken ... Clojure ...
- vito 16y agoI'm very impressed with Racket. * The documentation is fantastic. Insanely easy to browse around, very well formatted, and interconnected nicely. * It comprises of multiple languages, and they can all interoperate - r5rs, r6rs, racket, etc. This has always been a major pain point for me when it comes to Scheme dialects - lots of implementations clinging to r5rs and using incompatible module systems. * PLaneT has a ton of libraries covering many fields, and it's great that it's integrated into the language (requiring something from PLaneT will automatically download it). * The community seems nice enough. I also love that the new site immediately shows off the language: http://racket-lang.org/ http://racket-lang.org/
- stakent 16y agoIs using Java indispensable while learning and using Clojure?
- technomancy 16y agoTotally depends on what you want to do. You need to know a few basic stream/reader concepts to do any I/O, and of course you'll need to know more if you want to use some Java libraries; most of it is easy to pick up as you go. But you can do a lot with pure Clojure.
- spooneybarger 16y agoYou aren't at this time going to get around knowing the jvm infrastructure. That is a requirement. But, you can accomplish a lot without getting too dirty with java itself.
- adamilardi 16y agoJava is indispensable in life.
- stakent 16y agoTrue for at least JVM.
- adamilardi 16y agoJava is like a fine wine, it gets better with age.
- cema 16y agoNot even in the form of coffee.
- apower 16y agoI'm curious. Why is there such a furious hate for Java?
- spooneybarger 16y agoI know many people are put off by what they see as the paternalistic nature of Java. Trying to protect the programmer from themselves by reducing the power and expressiveness that is available in many other languages. Why that would rise to the level of 'furious hate', I don't know. I find it hard to grasp how anyone could hate a language. Hating a job where you have to use a language that frustrates you, that I can understand- but that has an easy solution. Find another job.
- zaphar 16y agoFor most people I talk to and for myself as well the hate is not for Java the language per se. It's for Java the Standard library and ecosystem. Java the language doesn't suck. However java's standard libraries seem to have been designed to make you write a metric ton of code to do the simple stuff and a planets worth of code to write anything actually useful. I used to joke that someone needed to write a java.lang.{python,perl,ruby} namespace where sane people can use code to just get stuff done. Then along came JRuby,Rhino,Jython, and now Clojure so I guess in a way that's exactly what people did.
- Semiapies 16y agoWhere's the "furious hate" in noting that you're not just having to learn the language in question, but also an environment that's built around another language entirely?
- st0p 16y agoEvery language that gains a big following will be hated upon. Compare it PHP, which is still the most used web scripting language. Even though it has it's pitfalls it's WTF's, it still seems to recieve much more hate than it deserves.
- Raphael_Amiard 16y agoWell to offer a counter perspective, i began and tried to learn lisp with Common Lisp and Seibel's "Practical Common Lisp" book. I got totally overwhelmed by the sum and quantity of knowledge to absorb, and by the fact that finding libraries to do "fun" things was very difficult. Then i tried clojure (with netbeans which has at the time quite a easy IDE integration that allowed me to not focus too much on the java side of things, unlike using clojure on the command line was at the time). I used it first to solve some project Eulers problems, and then began toying with some libs, notably QT Jambi, swing, compojure, etc. All this to say that learning it was a lot easier than learning Common Lisp, because at the time i began, it was a lot simpler language than Common Lisp. It still is, but i wonder if the protocols thing is not gonna considerably complicate a noob's approach to the language. My advice to clojure newbies is, start with an IDE that makes it easy to interact with libraries and let you concentrate on the code, not on the ugly java stuff. You will have plenty of time to handle that later on if you really enjoy clojure ;)