6 ms·
Real world Clojure
- afdssfda 15y ago"I don’t find that using Clojure making the overall process of writing new code faster. My thinking/typing ratio is much higher though. I think the reason is that I have a huge confidence in Java refactoring tools and my abilities to morph the code towards where it should go. In Clojure, if you start writing code there is no ceremony and within two minutes you realize that your first idea was dumb and your data structure should be totally different and it drives you back into the thinking phase." I'm not sure that convinces me to try Clojure. To me less typing is great, but only if it still makes sense and I don't have to come at it a few ways before I get it right. That is probably why I never took to Perl. It just looks like garbage and I couldn't get past that.
- zephjc 15y agoI think part of it is that you have a higher reimplementation rate for your code in languages like Clojure. If something takes you 3 hours in Java and you find its a crap design, you might take 15-30 minutes to figure that out in Clojure. It has the side-effect of teaching you to think through your ideas more (wait, I thought we were supposed to avoid side effects! ;) )
- ataggart 15y agoRich Hickey's "Hammock-driven development" keynote seems applicable here: http://blip.tv/clojure/hammock-driven-development-4475586 http://blip.tv/clojure/hammock-driven-development-4475586
- gtrak 15y agoI think the point is that less ceremony makes it feel like less progress is being made, but actually it's equivalent. Information density is much higher compared to java, but the programmer is still rate-limited himself, so his brain will work at the same rate. The benefit would show up in time spent reading and in higher signal/noise as you don't have to spend brain cycles dismissing boilerplate. It's not as big a boost as say garbage collection vs no garbage collection, but still notable. I think clojure's immutability story reduces cognitive load quite a bit on its own. Also, I don't think clojure has the craziness of perl, but I've never used perl. It's pretty easy to read, IMO.
- spaznode 15y agoLol! For the first time ever I ran across a reasonably sized perl based project where I actually understood and could read the flow of things and I've written plenty of perl many ages ago. (even that god awful object oriented style perl they made me use at bellatlantic for "Watson" ) Never had any issues playing around with or reading others emacs lisp macros though. After the initial within within brain fuck part is over at least.
- puredanger 15y agoI hope that you wouldn't try Clojure because it features less typing. That's not the point, merely an observation. The reason to try Clojure is that it allows you to easily create powerful abstractions that are not intertwined. You get less typing as a bonus. :)
- technomancy 15y ago> I don’t find that using Clojure making the overall process > of writing new code faster He's talking specifically about writing _new_ code. I think the implication here is that Clojure encourages more consideration up-front, resulting in designs that are easier to modify down the road. Given how much time is spent maintaining code vs writing new code this seems like a reasonable trade-off.
- tom_b 15y agoI find that with a REPL in hand, I tend to play with functions while letting my mind almost drop into the problem space. So I do less up-front design, but wind-up with somewhat better code at the end. The other weird effect is that I find that this helps me think better about coding in something like C as well. A little experimentation at the REPL helps me understand pieces of the solution better.
- cgag 15y agoI saw he mentioned switching to Emacs. Is the emacs - clojure workflow really as good as it's made out to be, as in good enough to both switching from Vim? I was planning on getting into Clojure this weekend, and if it's actually worth doing I suppose I could learn Emacs at the same time, but I've always been turned off by the weird key chords.
- fpgeek 15y agoThe last time I used it, SLIME integration for Clojure was very slick. It was a while back so there were a fair number of moving parts to align, but I'd guess that has gotten better. It is worth doing, especially if you've never used another integrated Lisp environment, but I wouldn't recommend laying it on top of learning Clojure. I'd say learn Clojure first, then try out emacs and the emacs integration.
- scottjad 15y agoSlime and Clojure have improved, mainly through clojure-jack-in and ritz. Of course the Common Lisp Slime experience is still better but the essentials are definitely there with Clojure. There are several heavyweights in the Clojure community that use VIM and have developed good plugins, and Rich never seems to be using SLIME during presentations, so you can definitely get by fine without it.
- puredanger 15y agoAgreed. There are many ways to fly. I'd say Emacs is well-developed and probably the most common, but certainly not the only choice.
- puredanger 15y agoI agree. Emacs is a power tool for writing Clojure. I learned Clojure first with tools I knew, then learned Emacs later. For me, that was a much better way to deal with the cognitive load.
- jshen 15y agoIf you're on a mac I have a good blog post which shows how to setup aquamacs for clojure. http://jaydonnell.com/blog/2011/10/07/setting-up-aquamacs-for-clojure-and-general-goodness/ http://jaydonnell.com/blog/2011/10/07/setting-up-aquamacs-fo... The steps are pretty much the same for regular emacs, you just need to put things in ~/.emacs.d/ instead of ~/Library/Preferences/Aquamacs\ Emacs/
- eldina 15y agoIt would be interesting to see an explicit example of "In the area of query planning and optimization, I found that at some point I hit a wall with what I could do in Java. There was latent abstraction that I understood but could not express in the code."
- puredanger 15y agoUnfortunately, this is one of things that I have found very challenging to convey due to the scope of the code base.