Hacker News new | past | comments | ask | show | jobs | submit login

I'll throw my hat in here for learning Clojure. It's a modern Lisp that runs on the JVM, with a great community and awesome libraries. (For example, https://github.com/Engelberg/instaparse) As others have mentioned, it all comes down to what you really want to do. I use Clojure both professionally (for web development, statistical computing/analytics software, natural language processing) and for fun on a daily basis. It's the only language I've yet to come across in my career that work doesn't make boring. I relish every opportunity I get to code in Clojure, because after solving every problem in it I end up with a DSL (domain specific language) that I can extend and mold to the problem as I learn more about it, and honestly I find that addicting. I can't recommend it enough, even if you just use it for fun occasionally. At worst, you'll have learned a Lisp and can judge its merits for yourself. At best, you'll experience what I have: infatuation that I hope never goes away. It's been about a year now since I first learned it, and I probably code at least 3-4 hours a day in it. My love has not abated in the slightest, it has only increased. Give it a shot, you may like it!

My weapon of choice is Clojure and I don't really agree with this post. There is a serious lack of tutorials and guides to get basic things going, the documentation is all-around horrible, and in general, Clojure is a very difficult language to get started with, though it certainly has improved immensely over the past year and it is rewarding once you get past the initial humps and start to really grok it. Clojure is philosophically, a beautiful language, but you have to work very hard to get to that point. And may the programming gods have mercy on his soul if he prefers using Windows.

Actually I completely disagree with you. Coming to Clojure with absolutely no lisp or functional programming background (and little java experience), and while it's been challenging to learn a new way of thinking, it wasn't hard to find documentation, read source code, or ask a question in #clojure. Leiningen really made the process more streamlined.

http://cemerick.com/2012/05/02/starting-clojure/ http://clojure-doc.org/ http://clojure.org/cheatsheet

and (source <thing>) have been great resources.

How do you suggest that one should get past the initial hardships in learning clojure, assuming one is willing to put the needed effort? I've always wanted to learn a lisp and clojure seemed good, but couldn't find a good tutorial for lisp beginners.

The only advice that has helped me learn Clojure was: do not travel the road alone. Coming from a strong OO background, getting started posts/videos, REPL tutorials, and books only helped me to the point of reading and running Clojure. I agree with dizzystar that the documentation needs serious work, because I find myself reading the source for insight into how I should use things, or structure codebases. I think highly of Clojure, but don't expect it to be easy. Keep tabs with http://clojure.org/cheatsheet and http://clojuredocs.org open at all times, a REPL available at all times, and either use emacs/*nix or accept being in the suburbs.

I wish I had an answer, but I wasn't a Lisp beginner when I started with Clojure.

I'd definitely suggest using Linux, installing Clojure + Leiningen2, and getting familiar with the REPL. Also, getting Clojure Programming by Chad Emerick, et.al, is a solid first step to at least getting some things started.

Learning Clojure is like any other language: if you want to really dive in, you have to think of a project to get started in and take it step-by-step. I have not written algorithms or done scripting with Clojure, so I don't know how that stuff would work out. I feel there are better languages for that kind of stuff.

The "Clojure Programming"[1] book is good. Also "The Joy of Clojure"[2], to ease you into the philosophy/mindset of Clojure.

There's also http://www.braveclojure.com which is still a work in progress but it's good for diving in.

[1]: http://shop.oreilly.com/product/0636920013754.do [2]: http://joyofclojure.com

The Clojure koans are a good place to start - https://github.com/functional-koans/clojure-koans

The koans would be a good starting point: https://github.com/functional-koans/clojure-koans

I have similar feelings about Scala. Combines functional programming w/ a strong/static type system and all the benefits of the JVM. Very practical and fun which I found was not the case w/ Haskell and ML languages. And you couldn't ask for better timing, first day of class starts tomorrow[1]! (and in a month and a half, reactive programming[2])

1 - https://www.coursera.org/course/progfun 2 - https://www.coursera.org/course/reactive

One ding to Scala's practicality, it's such an enormous language that to use it in production with a large team almost requires a C++ level of discipline in deciding which elements of the language to use. It's a terrific language though and the fact that it runs on the JVM is a huge advantage.

Can you please tell me more about your experience with Haskell?

I too have been enjoying Clojure with the same ferocity as the above poster. I also really recommend Python, as its got some solid engineering practices "baked in" and a great community to boot.

For a JVM language it appears to be remarkably slow (http://benchmarksgame.alioth.debian.org/u32/clojure.php), especially compared to Scala (http://benchmarksgame.alioth.debian.org/u32/scala.php).

(OTOH Python is still the slowest language around... http://benchmarksgame.alioth.debian.org/u32/benchmark.php?te...).

The people who will admire LISP skills are a very elect group of people even among "programmers". Getting stuff done in Clojure takes a lot of effort at first and finding help is much more difficult. There are ~5000 questions on SO, and 150'000 on Rails. In general there are quite a few downsides to Lisp, which Paul Graham likes to overlook. I'm very impressed with Lighttable which is build in Clojurescript. What libs do you use? I find it difficult to get started. It is my impression that you have to invest a lot of time to build things you don't to be building.

Guidelines | FAQ | Support | API | Security | Lists | Bookmarklet | Legal | Apply to YC | Contact