This week's book giveaway is in the OO, Patterns, UML and Refactoring forum. We're giving away four copies of Refactoring for Software Design Smells: Managing Technical Debt and have Girish Suryanarayana, Ganesh Samarthyam & Tushar Sharma on-line! See this thread for details.
Most of my Clojure-loving friends have a functional background of some sort (lisp in college, previous experience w/ a functional language, a math background, etc).
But for dumb average run-of-the-mill coders like myself, Clojure is still a bit of a mind bender. It obviously does a lot of things very well - solves problems in few lines of code, makes multi-threading easier, has fancy solutions for typical problems, etc.
The thing I haven't seen, though, is a "killer app" example involving Clojure. Take Rails (although that's a bit different) - those original screencasts by DHH on how to create a blog kind of helped launch it to the world in a way that regular folks could understand. "Oh, wow, I can create a blog in 15 minutes? Cool." Or various Java/Pet Shop or Twitter clone demos - "Oh, I can do that in a day? Cool, I'll check it out."
Now, it's highly likely I just haven't done enough looking into Clojure and the various screencasts, tutorials and books to find something like this, hency my question: What is the Clojure killer app/demo for the non-functionally minded? Is there a good screencast you can point to?
I've heard good things about this book, the other Manning Clojure book and of course Stu's Programming in Clojure, so those might all be good options.
Steve Yegge calls the JVM is the killer application of Clojure. I couldn't say any thing better than this.
Joined: Oct 03, 2007
I can see that, esp versus other functional lang's.
But what's the killer app/demo/tutorial that is going to make a regular Java programmer bother to wrap their head around a functional language? Sure, those already inclined will use it, as will naturally smart coders, forward looking developers, etc, I'm just wondering what the big "A-Ha" moment will be for the rest of us.
I don't think a killer app is the way to go for a general purpose language, because people tend to tie the language to the domain of its killer app. For example, Ruby is popular, but only for Web programming. I believe Clojure has a much bigger aspiration than that.
As to your point that Clojure loving requires prior lisp, math, or functional experience, I think that generalization is not true. I did not have any of that prior experience and did imperative programming for 20 years, and I learned to love Clojure recently. It tooks about 10 months on and off. I first started with Clojure interp with Java, which got me familiar with Clojure syntax, but I still didn't have the feel of mastery like I had with Java. Then I tried to do programming exercises on 4clojure.com, that's what really got me hooked. So I think it is important to actually dive into the language instead of just reading about it. The more people do that, the more people will love the language.
Joined: Oct 03, 2007
Huahai Yang wrote:For example, Ruby is popular, but only for Web programming. I believe Clojure has a much bigger aspiration than that.
Does it get any bigger than web programming? The only thing bigger than web programming right now is mobile programming, haha.
It tooks about 10 months on and off.
That's why I think there has to be some sort of killer app/demo if Clojure indeed wants to be more of a general language. Why bother to switch from Ruby/Python/Java/.Net if I have to spend 10 months learning it? What company gives employees the time to do that? (Not saying they shouldn't, but for many people, time isn't a luxury).
So I think it is important to actually dive into the language instead of just reading about it. The more people do that, the more people will love the language.
That's a great point. Part of the reason why I picked up PragProg's Seven Languages in Seven Weeks - even though I haven't gone through it yet - figured the brief intro to Clojure in there (and Haskell and other lang's) would give me enough reason to dig further.
Look at some of the titles in this form for this weeks book contest:
Benefits of Learning Clojure? Dan King
Clojure advantages Sayth renshaw
Why learn Clojure Alvin Watkins
Real-life Clojure examples Toby Matejovsky
IMO, it's clear that people like Clojure (or the idea of), like the possibilities, know that Rich and co. are taking their time creating a great language, but...
...they're still looking for that certain demo/example/whatever-you-want-to-call-it that will make it worth the effort to learn a language that uses such a different style.
I'm still curious what that is. Oh well, time will tell if one ever comes up.
andrew ennamorato wrote:...they're still looking for that certain demo/example/whatever-you-want-to-call-it that will make it worth the effort to learn a language that uses such a different style.
"Why should I learn language X?" is usually the first question that a programmer in language Y asks when s/he first hears about language X.
I would expect similar questions about any language - and that's even more true of a language that's so very different from the day-to-day language of most developers here on Java Ranch.
Back in the early 90's, I had to ask similar questions of C++ - an alien technology given my procedural and functional programming background - and I had to ask similar questions later in the 90's as Java became more popular.
However, learning another language - especially a very different language - is worth the effort simply because it teaches you new ways to solve problems in your "daily" language. Imperative, declarative, functional, object-oriented, prototype, logic - all worth learning, to improve your skills and your problem-solving abilities, in my opinion.