Clojure in the Field [video]
infoq.com
infoq.com
If I could just get half of what's in Clojure trickle into the mainstream languages I'd be a happy bunny.
I know a couple of people who've secretly used Clojure at their Java jobs. I don't know what will happen to them when they go through code review, but it's pretty cool that they can do that.
As to trickling from Clojure to the mainstream - I wonder how far this could go without the foundation work that went into creating Clojure as it is. You definitely need a clutter-free syntax for functions as data, otherwise "(alter ref inc)" becomes "alter(ref, lambda x: inc(x))". Bad. Macros help too but I don't want this to turn into a "turn all languages into Lisps" rant :)
Why aren't you a happy bunny with Clojure?
I have two observations to contribute:
* I noticed that my clients stopped caring about languages a long time ago. It is now known that there are many languages and more than one "right" choice. If asked about technology, saying you write software in Clojure, which runs on the JVM and uses Java libraries is accepted as a perfectly valid answer.
* Certain concepts have a fundamental complexity and cannot be simplified any further. Clojure got a lot of things right. Trying to "trickle down into mainstream languages" sounds like a hopeless task: you will end up either dumbing things down or making them difficult to use because other supporting parts of the language aren't there.
For your second point I completely agree. But shouldn't say, multimethods be doable in most other languages? In some, who are very strongly leaning towards OO, it probably wouldn't make that much sense. But others who can be written in a functional style could certainly benefit from it.
http://shop.oreilly.com/category/deals/clojure.do?code=WKCLJ...
http://www.infoq.com/presentations/Concurrency-Clojure
Great high-level explanation of the spirit of Clojure and how/why it transcends place-oriented programming.
I little off topic, but I know that Clojure is not the perfect language for me because I keep looking for better languages. I have been experimenting hard with DART in the last week and DART has the same nice "one language on client and server" feature that Clojure + Clojurescript provide. DART may or may not have a great future, but worth keeping an eye on. Also on some days, I feel like going back to Common Lisp or Smalltalk, but that is just crazy thinking :-)
I have to say that I'm very impressed with the Clojure community's eagerness to engage the real world in a way that most of my favorite languages haven't, while at the same time holding fairly firm on the things that matter (e.g. code readability and simplicity, referential transparency as a default, avoidance of OO traps).
When I worked at Google, I talked to a couple of the Go developers and they were really sharp guys, so that's a strong signal.
The fact that most people tend to use VM based implementations, tends to be related to:
- not having the knowledge that implementation != language
- not willing to pay for third parties native compilers
- AOT compilation in some cases does not provide a proper optimizing compiler and ends up providing lesser experience than the JIT.
Finally being compiled to native code, instead of relying on a JIT, tends to be more beneficial to client and embedded environments. Not so much for server side, except for the initial startup time.
I was also using it in the beginning given its Oberon influence, but nowadays I am back to more CS friendly languages, given my background.
But I miss the fact that most strong typed languages nowadays don't compile directly to native code in their canonical implementations.
As for the community, yes they may have some strong opinions, specially in the most polemic areas around Go, but they are nice guys.
http://software.intel.com/en-us/intel-vtune-amplifier-xe
The thing is many developers don't want to pay for such tooling in the age of free.
Fairly practical people though.
I used to write Go but found it intensely tedious, so I went back to Clojure. Been happily clojuring since '08.