News for hackers. Stuff that matters.
Re:Why Lisp Did Not and Never Will Gain Enough Traction by plinkplonk on Tuesday August 14, 2012 @09:18PM (#4383938)
"Clojure basically obsoletes Ruby and Python" "Clojure is a uniform attack on everything of value in the Ruby, Python and Node.js world"

This kind of smugness[1] is one reason why Clojure will never take over the world. It seems to be some kind of unwritten rule that every Clojure evangelist has to knock another language in any post anywhere [2]. Ugh.

I am a great admirer of Rich Hickey (the man is a genius), and am happily using Clojure in my present project, but this kind of triumphalist rhetoric is a big turn off. I don't think Clojure "obsoletes" Ruby or Python, anymore than Haskell or Erlang "obsoletes" the various lisps.

[1] This attitude seems particularly endemic amongst people who've moved to Clojure from the early Ruby on Rails community, where sneering at alternative frameworks was part of the culture.

Rich Hickey, while justifiably proud of his language, as he should be, never makes silly statements like this.

[2] see http://news.ycombinator.com/item?id=4272186 for an embedded gratuitous swipe at Scala in an otherwise insightful post.

Re:Why Lisp Did Not and Never Will Gain Enough Traction by KirinDave on Wednesday August 15, 2012 @12:38AM (#4384610)
I am not going to be your proxy for every perceived irritant in the course of discussing lisp. Asking me to be this is unfair.

You can say I am some sort of hater and now it's Rails's turn, but I've been consistent with this even when I was a full time rails programmer [1]. You can find essays by me on the inadequacies of Rails dating back years now [2]. The very things I was complaining about in 2007 are now the glaring flaws in modern Rails. So I made the decision to strike out for tools that don't have a cultural bias against progress in areas I believe important.

So, if I am a Smug Lisp Weenie, then surely I am also a Smug Scala Weenie. And a Smug Erlang Weenie. And a Smug Haskell Weenie. And a Smug Ruby Weenie. And a Smug Hadoop Weenie. And a Smug C weenie... Because one thing I've made very clear is that I think attachment to tools is the problem. We should always aim to use the best tools at our disposal, and I think the place where Python and Ruby are the best tools are shrinking under the onslaught of the competition. Argument from familiarity is something I simply cannot bear to listen to anymore.

If believing this makes me smug then I guess I am smug.

[1] http://www.oreillynet.com/ruby/blog/2007/06/multicore_hardwa...

[2] http://dave.fayr.am/posts/2008-11-20-the-opposite-of-momentu...

Re:Why Lisp Did Not and Never Will Gain Enough Traction by plinkplonk on Wednesday August 15, 2012 @04:29AM (#4385117)
"You can say I am some sort of hater and now it's Rails's turn"

Oh but that's not what I said. I said that claims of Clojure "obsoleting" Ruby/Python reek of smugness once prevalent in RoR and Common Lisp communities, and do turn off intelligent people. You can like and evangelize Clojure without making such rabid claims, especially when they are unsupported by data or strong arguments.

"We should always aim to use the best tools at our disposal,"

This is a non controversial position. The "smugness" is in going beyond such sane positions and declaring Clojure to be some kind of uber Ruby/Python killer without any supporting data or arguments.

"and I think the place where Python and Ruby are the best tools are shrinking under the onslaught of the competition."

This is more dubious. Do you have any supporting data? What do you see as "competition" to Ruby or Python? Clojure? in terms of deployed systems, Clojure is barely a blip (wrt RoR, say). I know many intelligent devs using and liking Clojure, but also other intelligent devs using and liking Python and Ruby. I even know (horror!) people who know all three and don't always choose Clojure.

Also, it is pretty hard to characterize Clojure as an "onslaught" on Ruby in any fashion (afaik Rich Hickey doesn't have such an onslaught as part of his goals for Clojure development), or as an "obsoleting" language, which is a very strong claim. Strong claims require strong supporting evidence.

In fairness to you, you did say " I think that .. " which brings me to

"Argument from familiarity is something I simply cannot bear to listen to anymore."

Totally agreed. Now apply that to your Clojure evangelism/praise. ;-)

Fwiw I am working on a Clojure project, and quite like the language. It is extremely well designed and (given the limitations of the JVM) very elegant.

But I don't have a stake in proclaiming it to "obsolete" Ruby/Python etc - at least not without some very convincing arguments - certainly not just "argument from familiarity" ;-)

All that said, I gladly concede that Clojure is some kind of ultra uber language in your experience, in the interest of stopping this thread from expanding fruitlessly.

PS: Decent essays btw. Now apply the same critical eye to Clojure :)

Re:Why Lisp Did Not and Never Will Gain Enough Traction by dhkl on Wednesday August 15, 2012 @08:23AM (#4385572)
I've found the Clojure community at large to be well reasoned in general and very intelligent. KirinDave's posts may be a little hot, but I think it is a sign of growth for Clojure. Ruby/Rails also had (has? ;-) ) a problem with smugness as it was gathering rabid following. Let's hope that this is a sign that Clojure is also building up a gathering of all sorts of interesting characters :-)
Re:Why Lisp Did Not and Never Will Gain Enough Traction by KirinDave on Wednesday August 15, 2012 @11:14AM (#4386325)
> Oh but that's not what I said.

Actually, it is. Basically when someone says, "____ is smug," what they're really doing is making a soft, attitude based argument for dismissing the more substantive arguments. Same as calling someone a hater.

> You can like and evangelize Clojure without making such rabid claims, especially when they are unsupported by data or strong arguments.

I can support the arguments quite well. And I can make the same argument for Go, Scala, Erlang, and Dart. We simply haven't had the space or opportunity to really expound on it here, since the context is a post that attacks "lisp" with spurious complaints.

> Strong claims require strong supporting evidence.

This is true, but what you're doing is ignoring the context of the conversation after the fact to try and weaken my position. I can make a case for these claims, and in fact in many of my blog posts I have made a case for these claims. Saying I never have in this thread is a little disingenuous.

> I even know (horror!) people who know all three and don't always choose Clojure.

You then have the horror of knowing me, the person you have mischaracterized as a Clojure evangelist instead of a modern software tools evangelist.

> at least not without some very convincing arguments

Allow me to just list out Clojure's strong points with respect to Ruby, since that's close at hand. Because you keep acting like I an a Clojure fanatic, dedicated with laser-like precision to the cause of promoting Hickey's work, let me re-iterate: _I COULD DO THE SAME WITH A HALF-DOZEN OTHER TOOLKITS._

1. Ruby and Clojure are both dynamic langages with a variety of beyond-the-Java features but... a. Clojure's answer to the "expression problem" is safer, faster, and cleaner [1]. b. Clojure has explicitly modeled multi-methods, something that observations of the industry suggest would be useful for clarifying a lot of existing code [2]. c. Clojure can support functional programing and OO programming directly. It often ends up having "cleaner" (less punctuation and repetition) expressions of OO call stacks than its host language, Java. [3]

2. Clojure and Ruby both have rich collection libraries, but... a. Clojure's core data structure libraries are somewhat richer (e.g., better set support, some better numerics), and safer in multi-threaded use because of their persistent design. b. Clojure's libraries implement the same "pass in a block" pattern as Ruby, but with more universal names in most cases, and with more consistency (which is important due to the thrush combinators). c. When the standard persistent data structures cannot meet your performance needs, high performance mutable structures are available from the Java toolkit. Ruby usually has to appeal to C to get faster results, the binding process of which is fraught with peril even with 1.9 (and is excruciatingly difficult in 1.8 due to fundamental design mistakes).

3. Both languages support concurrency primitives but.... a. Ruby's concurrency primitives never allow for parallel processing except in a tiny minority of implementations, whereas in all but a tiny minority of implementations Clojure's primitives do. b. Ruby's concurrency primitives are basic, whereas Clojure not only offers the Java primitives (themselves ranging from basic atomic references to the contents of java.util.concurrent) but also offers a Software Transactional Memory implementation which emphasizes reasonable performance and ease of use.

4. Both communities value brevity and meta-programming, but... a. Clojure's half-hygenic macros with quasi-quoting provide an approachable way to make arbitrary syntax extensions to the language; in this Lisp is only challenged by other Lisps and perhaps the Haskell and ML world. b. Many similar abstractions like Sinatra vs. Compojure exist in the "Ruby and Clojure"-verse, but because of macros the Clojure side can always go further. In the context of the above points, Clojure almost always has a significant performance advantage, too.

5. Both languages have excellent deployment strategies... a. Ruby has a suite of integrated in-language tools and a lot of service vendors that directly support it for distributed software projects. b. Clojure is deployable almost anywhere Java is deployable, which is "almost almost" everywhere. c. Clojure has a mixed blessing in that it has access to ".war" and "uberjar" type deployments. These can be more confusing, but often eminently more easy for an operations (or devops) team.

I'll stop for now, but I want to re-iterate I could make cases against many popular languages for a variety of other languages when the situation warrants. For example, when correctness and ease of distributed processing is your goal, Erlang is unmatched.

[1] http://kirindave.tumblr.com/post/658770511/monkey-patching-g... for more on this.

[2] http://homepages.ecs.vuw.ac.nz/~alex/files/MuscheviciPotanin...

[3] http://java.ociweb.com/mark/clojure/article.html and grep for "noisy" for a casual treatment.

Re:Why Lisp Did Not and Never Will Gain Enough Traction by plinkplonk on Wednesday August 15, 2012 @12:17PM (#4386692)
You make some decent arguments pro Clojure as compared to Ruby in this post.

Whether they actually prove anything like your conclusion, I'll leave to the judgement of the other readers.

(rest of this too long reply deleted as too snarky and not worthy of HN. Sorry guys)