13 ms·
2012 State of Clojure survey
- stcredzero 14y agoI would like to see some slick ways of doing functional programming within existing environments. An automated tool that would automatically verify certain delimited sections of code as being "functional" to some extent would do tremendous amounts to increase use and understanding of functional programming, as well as benefitting the programming world.
- edwinnathaniel 14y agoSomehow I get the feeling that the Clojure community is in the "marketing" phase of the language. I'm starting to see many Clojure threads popping up HN lately. InfoQ.com also increasingly added Clojure presentations/articles lately. It's all good, a little bit of competition between languages is healthy. Having said that, I believe it is hard for Clojure community to convert/invite people with what you guys have done so far because there has been no killer apps/tools so far. Is this largely because of the LISP is such a weird language that it is a lot harder to convince people to use it? Like it's almost "you need to use it for a few years to know the power of it" (otherwise it'll be like a weird version of Rails or some MVC framework). Here's a few examples that, in my mind, are not strong enough to convince people to use Clojure: http://www.infoq.com/presentations/Clojure-in-the-Clouds http://www.infoq.com/presentations/Clojure-in-the-Clouds http://www.infoq.com/presentations/Clojure-powered-Startups http://www.infoq.com/presentations/Clojure-powered-Startups When people look at Rails demos, they immediately have a feeling of how easy it is to develop web-application supported by _good practices_ (test automation, migration, MVC, etc). When people look at VB.NET/C# WinForms demo, they know it's super easy to write GUI apps. When people look at Python... well they knew Python was one of the best languages to write scripts/tools in UNIX/Linux environment, and to some degree, GUI apps in *NIX. Clojure? only people who dreamed of using LISP (and know LISP already). No offense to Clojure people, but it's just not convincing enough...
- cemerick 14y agoSome of us have been "marketing" Clojure for a number of years now. :-) The results from the last two years of the survey (e.g. 2011's are here: http://cemerick.com/2011/07/11/results-of-the-2011-state-of-clojure-survey/ http://cemerick.com/2011/07/11/results-of-the-2011-state-of-...) might be illuminating for you. Clojure has a ton of compelling use cases, but it's stubbornly not going to fit into the shoebox of a single domain. Thus, it's going to be hard to say, "Clojure is great because it allows me to address narrow problem X". It's a general-purpose language, and increasingly, a multiplatform/multienvironment one as well. Also, only ~7% of the respondents to last year's survey came from a Lisp. Most come from Java, Ruby, or Python. Make of that what you will re: Clojure's "weirdness".
- edwinnathaniel 14y agoYes Chas, you're definitely no stranger in the Clojure community :) (I watched your O'reilly webcast btw). I'm not saying that Clojure should address a narrow problem but if we look back at the history of Java, it offers a few "real" improvement over C++ such as garbage collection, nice standard library, and the promise of WORA (albeit lots of hiccups here and there). By real I mean something that people can see and immediately take advantage of. I'm sure there are always going to be alpha-nerds who love to try new programming languages out there (especially the hip ones) but when these people are to write Clojure code or to build Clojure tools, they tend to bring their old habit from the previous language, which in turns make their code look like the previous language as opposed to something totally new, probably refreshing, or even have the potential to blow people's mind.
- technomancy 14y ago> if we look back at the history of Java, it offers a few "real" improvement over C++ such as garbage collection Perhaps the problem is that it's hard to explain referential transparency, or that the problems caused by the lack of referential transparency are less obvious than those caused by the lack of GC. I mean, I've never heard of someone reading through "Out of the Tarpit" and then saying, "why bother with something like Clojure?"
- 14y ago
- lukev 14y agoIt's true that Clojure is "weird" because it's a different paradigm. It's not just a different language like Ruby was, it's a different family of languages. It's going to be strange if you aren't already familiar with Lisps and/or functional programming. To some extent, I don't think any "killer app" is going to change that, although it certainly wouldn't hurt. The concurrency features are pretty compelling in that space already. Clojure's primary appeal is not, and cannot be, that it's easy for most programmers out there right now. The appeal is that once you learn it, it's a better general purpose programming language that runs on the JVM.
- edwinnathaniel 14y agoYes, that seems to be the case: "you need to learn it to believe it". And I hope people take their time to learn it because there seems to be a few articles out there with the message of "I picked up Clojure in a few weeks and re-wrote critical piece of my software in 2 days and it works super-scale". Maybe that's the power of Clojure? I really think that it will take a few years before a select few (persistent users, not alpha-geeks) from the Clojure community can come up with some sort of breakthrough that replaces today's best practices, whether it is the replacement of the whole OOP/*DD-movement or the way testing is done, or something else, I don't know. But I do believe that this is what needed.
- lukev 14y agoIt's mostly a mental barrier. Clojure isn't inherently hard, at all, it's just different. Once you get the hang of it, you can start reaping the benefits fairly quickly. Unfortunately, most people judge difficulty in terms of familiarity, so the strangeness is off-putting even if it wouldn't be that hard for them to learn.
- mark_l_watson 14y agoHello Edwin, Clojure appeals to people: who enjoy a Lisp dev style with bottom up repl coding, who need to be on the JVM, and who like some of the neat features of the language (universal seq APIs for collections, mostly immutable data, etc.) BTW, there are some amazing projects built on Clojure - choose an application domain you are interested in and try searching for that domain + clojure
- edwinnathaniel 14y agoHi Mark, I'm interested to see Clojure in the LoB type of application. Yes, LoB is boring, but I'd like to see some comparison between the model-heavy/oop-heavy vs Clojure. Would be nice if the apps show internationalization and some way to handle Time and Money.
- rabidsnail 14y agoTime and Money are handled exactly the same as in Java.
- edwinnathaniel 14y agoAs in using Joda-Time, Joda-Money (or JDK Money)? Would there be any other way to represent them in Clojure? (i.e.: the more Clojure-way as opposed to use JDK classes?)
- technomancy 14y agoJoda Time is actually a great example of a library letting you work in terms of values instead of the mutable object disaster that is java.util.Date; it just happens to be implemented in Java itself. If you can imagine the same benefits of working with stable values applied across the board to all your built-in data structures, that might help.
- edwinnathaniel 14y agoIs mixing Java classes in Clojure okay? or to some degree it is acceptable but there are gotchas or the do's and don'ts? Hey, I checked your website just for fun and it says there you can speak Indonesian, awesome :).
- dusklight 14y agoI personally think how clojure has been presented so far is its greatest strength and it is the reason why it is so strong so far and why it continues to get stronger. You have to be a better than average programmer, one who has worked with multiple languages from multiple paradigms, who has worked with real production code before, to recognize why it is so much superior to any other programming language currently available right now. I'm GLAD that there is currently no killer app for Clojure, like how Rails became the killer app for Ruby. IMO Rails killed Ruby. Ruby started out in the right direction but once Rails became popular there was an influx of so-so programmers who started polluting the language with inefficient concepts, constantly reinventing the wheel poorly because they did not know enough computer science to know that a better solution had already been invented. Now the system has been bogged down by so much cruft, it is difficult to see if it still serves the purpose it was originally designed for (a language the people can enjoy programming in). Clojure is not ready yet. The core team is still working on refining the fundamentals for what maybe can become the 100 year language [http://paulgraham.com/hundred.html http://paulgraham.com/hundred.html] -- look at reducers in 1.4. Right now Clojure doesn't need more people. It needs more smart people. If you are not smart enough to understand why it is worth switching to it, maybe you should wait a bit and let the design mature more. The killer apps will come. Clojure's ability to scale complexity will eventually overcome its current drawbacks, as the tools and the ecosystem matures.
- espeed 14y agoClojure's killer app is managing complexity. This allows you to keep your mental stack clean. With OO, you have to keep track of the state of each object and how each method affects that state. With Clojure, you don't need to be concerned with the guts of a function, just the inputs and outputs. This keeps your mental stack from building up and makes programs easier to understand and debug.
- andrewvc 14y agoI strongly disagree with that slogan re: complexity. Complexity covers so much, its definition so sprawling, that the phrase has no meaning. I'd rather focus on the language's real strength, fast, concurrenty, portable computation in very well tooled managed environment with a large number of quality libraries. I don't want to get into a situation where people think that clojure is the universally 'best' language, which is were certain people in the community are. That POV horribly damaged ruby's popularity after Rails' rise, and I'd hate to see it happen again to another language.
- chc 14y agoIt damaged Ruby's popularity? You feel Ruby hasn't been popular enough the past few years?
- andrewvc 14y agoWhile Rails has been a massive success the ruby language hasn't been particularly popular much beyond that. I'd say python has a more even distribution in terms of use in varied fields for instance.
- gringomorcego 14y agoDude: FUCK YOU If the Lisp people were smart enough to pander their shit properly, things wouldn't be so damn bad. Honestly, I'm up for people claiming it cures cancer or whatever. We need competition in languages. We need people to ask questions. But most of all, we need people to be happy with change. If you aren't willing to change your tools, you are going to live a limited and boring life.
- andrewcooke 14y agoi really like clojure. for me, it's not about the lisp - it may sound crazy, but it's a better python. lazy sequences are nicer to use than generators, and i don't need to worry so much about mutation. seriously. that's how i am describing it to co-workers: a better python. that should have been scheme, i guess, but it lacked the lazy sequences to get over the "ewww parens" hill. if you're a python user that's starting to appreciate the power of generators you owe it to yourself to look at clojure. the one thing that drives me crazy is the state of libraries: finding the right library for the right version, and then finding where the pom is. i wish that could be clearer (less confusion about versions and more direct pointers to poms/repos/IDs). [not sure if it's relevant, but python never had a killer app. i guess it is an "unconvincing" language too...]
- bchjam 14y agoI thought numpy was python's killer app
- espeed 14y agoI would say Python's killer app is its massive library -- the size and quality has few rivals. No doubt Python's readability and approachability contributed to this.
- rprospero 14y agoWhile I love Python, I always worry about any language that resorts to this argument, since the lack of libraries is the easiest problem for a language to fix. I still remember hearing (and believing) that Python would never be as popular as Perl, since Perl had far more libraries.
- wahnfrieden 14y agoIf you mean its built-in standard library - in some cases, it's just a place for code to rot and stagnate. Ubiquity comes at the cost of massive friction to update.
- t_hozumi 14y agoIt is said that programming language is just a tool, so you shouldn't stick to any particular language, and be flexible. Paradoxically this is the reason why I want to stick to particular modern language, such as Clojure. As programming language is just a tool, I don't want to suffer from a tool originated problem, and if possible, I don't want to spend a lot of time to learn several languages. Almost certainly, Clojure is one of the most modern languages, and it let me focus on solving problem.
- BadassFractal 14y agoMy biggest complaint at this point would be the lack of a well polished vim plugin for clojure, somewhat similar to what we have today thanks to all the hard work by Tim Pope (vim rails and others). I know lisp is an emacs world, but we're your buddies too :)