6 ms·
Clojure won't win the battle but may win the war
- cageface 17y agoI'd love to see Clojure break into the mainstream. Perhaps it will, but I'm skeptical that any s-expr syntax will ever be palatable to a majority of programmers. I think programmers tend to overestimate the importance of language choice in the success or failure of a development project. We can passionately debate the merits of static vs dynamic typing and various schools of syntax but I suspect that ultimately the skill and determination of the people involved make the crucial difference. That said, I do think Clojure's prospects are better than any previous lisp, because even if it can't "win" it can tag along for the ride with the rest of the Java ecosystem and benefit from its much larger momentum.
- kiba 17y agoCaribus paribus, two equally skilled programmers will differ in programming productivity by language choices.
- ewjordan 17y agoClojure has a leg up over most Lisps for another reason: the people that know Clojure well and participate in its community are not complete douchewieners, and they're willing to accept that everyone has different needs and backgrounds. They actually want people to try Clojure out (even if they were - gasp! - Java programmers!), rather than making the assumption that anyone that doesn't already worship their language as The One True Holy Solution-To-Everything Language is a moron. To hear the more vocal Common Lispers tell it, even people that code Clojure are retarded code apes that need to be lectured on why they're stupid for not using a Real Lisp, more deserving of scorn than encouragement or support. Haskell's community is not nearly as bad (Common Lisp's userbase has become one of the most bitter, self-important cesspools of snobbery the programming world has ever seen, and Haskell is far too active and useful to foster such degeneracy), but there's always that pervasive scent of "If you're not already using Haskell, you're cheating, and it's clearly because you're dumber than I am." Then again, the Haskell folks piss me off for other reasons - after studying such things in the context of real math, it's infuriating to be talked down to by people that just "got" monads and think that their shallow grasp of the concept entitles them to wield Genius Points over everyone else's heads. I suspect this is just a small but vocal sub-population in Haskell-land, but it's a really annoying one that seriously turns me off from the language...
- sutro 17y ago+1 for douchewieners.
- cageface 17y agoI actually advocated something analogous to Clojure in 2001 on comp.lang.lisp: http://lib.store.yahoo.net/lib/paulgraham/miles.txt http://lib.store.yahoo.net/lib/paulgraham/miles.txt And was pretty roundly flamed for it. In any case, I totally agree that the community surrounding common lisp is utterly and irreparably toxic and that Rich is right to ignore it and to carefully cultivate a far more civil and friendly community around Clojure. I don't know exactly what it is about functional programming that attracts people that can't tolerate different philosophies. Maybe the more Aspberger-prone coders naturally gravitate towards tools that promise to impose simple, elegant order on the inherently messy world of real-life programming.
- deleted 17y ago[deleted]
- jrockway 17y agoCommon Lisp's userbase has become one of the most bitter, self-important cesspools of snobbery the programming world has ever seen You are absolutely right here. I am not sure what caused this to happen, but I have never seen a programming community that so actively discourages code reuse. Ask why two libraries don't work together, and the answer is usually, "you shouldn't be using libraries!" Yeah. SBCL is a nice VM, but the community needs to die. Then again, the Haskell folks piss me off for other reasons - after studying such things in the context of real math, it's infuriating to be talked down to by people that just "got" monads and think that their shallow grasp of the concept entitles them to wield Genius Points over everyone else's heads. You're sort of doing the same thing, right? And in reality, the people that actually use Haskell are not like this. Don't let someone that read about Haskell on Reddit yesterday, opened ghci, and typed "let fibs = 1 : 1 : (zipWith (+) fibs $ tail fibs)" put you off. People like to be excited about things, and people that read too many programming blogs get themselves unnecessarily excited about simple things. Then when they sort of understand that simple thing, they feel the need to tell everyone. The clojure community has the "omg monads!" problem too, but that structure isn't particularly useful in Clojure and that is obvious, so people aren't as excited about it. There is plenty of annoying Clojure fanboi-ing, though... but that is true of any language. (OK, there are no Cobol fanbois.)
- arohner 17y agoI use clojure not just because it's a practical lisp (it is), but because Rich Hickey is a genius, and is stirring up programming language design in ways we haven't seen in a long time. If you haven't, go read his slides from the "Are We There Yet?" talk http://wiki.jvmlangsummit.com/images/a/ab/HickeyJVMSummit2009.pdf http://wiki.jvmlangsummit.com/images/a/ab/HickeyJVMSummit200... (PDF) . It's worth a read, regardless of what programming language you like best. Where everyone else (except for maybe the Haskell people) seems to be doing the same old grab bag design "oh that's a cool feature, oh, and that too", Rich has a clear idea of what programming should be, and he moves closer to that goal daily. I think people overestimate the significance of choosing e.g. Ruby over Python or vice versa. C vs. Java is a legitimate choice, Java vs. Clojure is legitimate, Ruby vs. Python is not, IMO. I'd like to see an example of where choosing Ruby / Python / Perl is a momentous decision.
- ewjordan 17y agoI'd like to see an example of where choosing Ruby / Python / Perl is a momentous decision. The only one I can think of is that a lot of people have an intense hatred for one of the three, so you've got to weigh your team's preferences to make sure you offend the fewest number of people. Personally, I have a deep seated, all-consuming, perfectly irrational (though I'll happily invent reasons) loathing for Perl, and I just refuse to use it. But Ruby or Python? Eh, close enough that I'm not going to complain either way...I'm sure you'll find plenty of Ruby zealots that wouldn't touch Python with a ten foot pole, though, and vice versa.
- bphogan 17y agoI love Ruby. It's the first language that's made me happy as a programmer. I don't like special characters, and I can tolerate ruby's occasional =>, |e| and {}, and I tend to avoid the other ones. For the same reason, I like Python. Languages that introduce characters for the sake of making a compiler happy make me, personally, unhappy. I have a really hard time being comfortable with (){}; all over the place. And it's taken me years to realize why - it slows me down. I don't see very well, and those little things cause me sometimes hours of pain. So I'm a bit of a language snob. The more clean the syntax, the more I'm going to be drawn to it, and the more I'm gonna be productive in it. In fact, it's why I like SASS more than LESS (for CSS). So I guess I'm saying Ruby vs Python? Exactly. Meh. Ruby over Perl or C#? Any day of the week.
- morphir 17y agoAre there anyone else who are concerned with the lack of tail call optimization in Clojure?
- al3x 17y agoThis is a particularly valueless comparative assessment of some programming languages, with a focus on Clojure. I'm surprised that it was posted here, and more surprised that it's getting up-voted. But then, people don't really want hard comparisons of the tools they use. Instead, they want warm fuzzy emotional validation that reinforces the time commitments they make to learning those tools. This comment doesn't cite any firsthand experience, doesn't cite even any secondhand experience, and makes frequent generalizations and assumptions about where, how, and why respective languages are designed and used. It also makes the all-too-frequently-made, blithe, and baseless assumption that languages are necessarily in competition, or that if they are in competition, that competition is zero-sum. This is a bar conversation in comment form. It's hand-waving. Look: comparing programming languages is hard. You can't do it in a blog comment. You can't really even do it in a blog post. Researchers have a hard time doing it in lengthy academic papers. Hardly anyone has attempted to do it in book form. Don't think that someone summarizing the bullet points from the feature lists of two languages and then extrapolating them out over their particular view of the industry is anything other than opinion. If that opinion validates your choice of language, great; you'll sleep better tonight. But this is just talk. Experience and metrics are what counts.
- programnature 17y agoI don't think the authors intention is to compare the relative merits of the languages in the context of a particular project. Its more about horserace and market niche. And these are terms in which startup founders are accustomed to thinking in - in the absence of data, you look at related trends and use your reasoned intuition to think about the spread of new ways of doing things. My guess is that a lot of people read that comment and figured that it made sense and captured conventional wisdom in a succinct way. As an aside, because language adoption has network effects, the fact that a lot of people can get interested and excited about Clojure is itself meaningful, which is why I upvoted it.
- pvg 17y agoI would hazard to say that while most problems can benefit from a functional style of programming their solutions are not entirely without side effects. Somewhere in there there is a “sweat spot”. A functional side effect free line in the sand, so to speak. Piling on the contradictory metaphors (is it a line or a spot?) is one thing. I'd really prefer to use a language without a sweat spot though.
- olliesaunders 17y agoWatch the video, it's awesome, the blog post—meh—not so much.
- xtho 17y agoAs long as the freely available documentation of clojure doesn't improve significantly, I personally don't see clojure participating in any kind of battle/war/...
- papaf 17y agoThe documentation on clojure.org is usable and once you're in clojure you can type (doc whatever) to get the documentation for a function. However, its a known problem (discussed on the clojure group this week) that there are many ways to set up the environment and build tools.
- xtho 17y agoWith documentation I mean a) offline readable documentation and b) non-technical documentation targeted at newcomers. Please take a look at the scala site http://www.scala-lang.org/node/198 http://www.scala-lang.org/node/198 and compare that (especially the "Language Specification" and "Scala by Example") with the clojure site. Alternatively, take a look at the offerings of the haskell community -- including Real World Haskell.
- dpritchett 17y agoStuart Halloway's "Programming Clojure" is a very good book but unfortunately there's nothing I've seen online to match it for pacing and quality of examples.