

2012 State of Clojure survey - hansengel
http://cemerick.com/2012/07/19/2012-state-of-clojure-survey/

======
edwinnathaniel
Somehow 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-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
Some 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-...](http://cemerick.com/2011/07/11/results-of-the-2011-state-of-clojure-
survey/)) 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
Yes 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.

~~~
cemerick
(If you watched the _O'Reilly_ live webcast, then give this a try:
<http://cemerick.com/2012/05/02/starting-clojure/>)

Riffing on what technomancy said nearby, a lot of the issues that Clojure
addresses are so taken for granted in most of the broader software development
world, that it can be challenging to wrap up its benefits into a tasty, easily
digestable nugget comparable to "Java gets rid of malloc and pointers"
(sorta). Some have taken some whacks at doing just this, including Paul
DeGrandis' talk you linked to already, as well as "Neal Ford's master plan for
Clojure enterprise mindshare domination": [http://blip.tv/clojure/neal-ford-
neal-s-master-plan-for-cloj...](http://blip.tv/clojure/neal-ford-neal-s-
master-plan-for-clojure-enterprise-mindshare-domination-5953926)

That said, the benefits of immutability and pure functions are generally
obvious to any reasonably-capable programmer (my personal bias shone forth)
given 10 minutes in front of a whiteboard. Can we get the, say, 10 million
Java developers to sit still long enough for that? No, probably not. Maybe a
tenth of them eventually, maybe. And, if a bunch of them head over to Scala
because they like the look of {{{}}} instead of ((())), so be it.

A more interesting question to me lately is, what is the objective of language
evangelism? Let's set aside any notion that Clojure will be "the next Java",
or even achieve the same penetration as Python or Ruby. For those of us that
use the language, none of those goals are particularly important. "How many
developers use language X" used to be a critical question when the language
you used largely delimited the reach of your eventual
application/system/whatever; that is hardly the case anymore. I can write my
server side in _literally_ anything, and transpiling to JavaScript or C for
client side as necessary is either within reach, or a solved problem depending
on your preferred language.

So, what should be the objective? Having a large enough pool of talent to meet
business objectives is the only thing I can think of that is an actual
potential blocker. I know lots of people that know Clojure that would like to
_work_ in Clojure, and there are more people like that every day. Seems like
the vector is trending positive; we only need to make sure it stays that way.

(This leaves out the enterprise guys to a certain degree, but that's largely
due only to their [and their managers'] self-inflicted risk profile.)

Finally, I leave you with this:

[http://www.indeed.com/jobanalytics/jobtrends?q=clojure%2Chas...](http://www.indeed.com/jobanalytics/jobtrends?q=clojure%2Chaskell%2CF%23%2Cocaml&l=)

Note that those are absolute trendlines, not growth. You can very reasonably
say that Clojure is the most in-demand functional programming language. (…for
some definition of 'functional programming language' ;-)

~~~
tom_b
I can't help but respond:

[http://www.indeed.com/jobtrends?q=java%2Cclojure%2Chaskell%2...](http://www.indeed.com/jobtrends?q=java%2Cclojure%2Chaskell%2CF%23%2Cocaml&l=)

Having _any_ "most in-demand functional programming language" seems to be a
bit silly. In the larger view, there simply isn't any demand.

I _REALLY_ want this to change. I think if Clojure can make some inroads to
the enterprise, there will be trickle-down effect that will help increase
opportunities to work in Clojure. I think increasing working opportunities is
what language evangelism is for.

As a hacker who loves the repl, functional programming, weird languages, and
was at the first Clojure/conj, it is not clear to me at all that immutability
and pure functions are wins _in general_ \- lots of excellent working systems
are out there that don't bother using this stuff at all (no silver bullet is
kind of what I am driving at). I might instead argue that in the hands of
good-to-great hackers, that immutability and pure functions offer some
benefits that are hard to quantify when you normalize across raw hacker
abilities.

PS - Thanks so much for the book. A large part of Clojure's success is
directly attributable to the high quality and number of books that have popped
up so soon in its life as a programming language.

~~~
cemerick
In truth, I hate these Indeed charts…but then, I started it, eh? Live by the
sword and all that.

Some additional perspective:
[http://www.indeed.com/jobtrends?q=java%2Cruby%2Cpython%2C%22...](http://www.indeed.com/jobtrends?q=java%2Cruby%2Cpython%2C%22objective+c%22%2Cios%2CC%23&l=)

The Java market is _massive_. Nearly everything else is essentially background
noise compared to it. I'm skeptical that any single language will ever have
the same reach as it.

Runtimes, on the other hand, are a different story. The JVM, standardized
JavaScript engines, even the CLR/Mono to some extent: polyglot sandboxes where
you have the leverage to use whatever language will get the job done. That's a
huge win for, as you put it, good-to-great hackers, trying to find the edge of
what's next.

'course, that's a wash to a loss (i.e. increased risk) for those with the
enterprise mindset. Thus, Java 8 with its closures may very well consolidate
its position in such environments.

Glad you enjoyed the book, BTW. :-)

~~~
tom_b
TPS reports rule (I know it's really below the belt) . . .

[http://www.indeed.com/jobtrends?q=sql%2Cjava&l=](http://www.indeed.com/jobtrends?q=sql%2Cjava&l=)

I had not thought deeply about runtimes in relation to this question. It's
certainly true that one reason I can hack around in Clojure and count on that
code running on our production servers is that the JVM is ubiquitous there.
Quite a different story than when I was doing some stuff in SBCL and had to
compile it in my user space.

------
andrewcooke
i 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
I thought numpy was python's killer app

~~~
espeed
I 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.

~~~
wahnfrieden
If 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.

~~~
espeed
I'm not referring to just the standard library. I'm referring to all the
libraries in the ecosystem.

~~~
wahnfrieden
Yea, that is a strong point.

------
t_hozumi
It 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
My 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 :)

------
stcredzero
I 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.

