4 ms·
The reason is simply that more powerful tools require more skill and experience to use effectively. It's not just a question of switching from imperative langua
by danenania 13y ago
The reason is simply that more powerful tools require more skill and experience to use effectively. It's not just a question of switching from imperative language X to clojure and seeing a huge productivity boost. You must also understand why clojure is designed the way it is and how to use it effectively. For awhile, you'll likely be less productive as you learn how to approach problems functionally and wrap your head around the capabilities of lisp, but you'll also be building stronger, more reliable systems, and at the end of the learning process, you will indeed be significantly more productive.
Managing a transition like this is far from trivial for a company facing a variety of immediate demands and constraints, even if it promises to pay dividends in the long run.
- kazagistar 13y agoRight, but just about every language makes this claim. Very few support it. As far as I am concerned, they are all being deeply deceitful. If you make some "fact" up, and pawn it off as the truth, you are being dishonest.
- danenania 13y agoEvery café in town might claim to have the best coffee. While most of them are lying, that doesn't mean that some don't in fact have better coffee than others. It's up to you to judge each on its own merits, read reviews, or get a recommendation from someone you think has good taste in coffee. Support for clojure's worldview is easy to find on the web. It comes both from the clojure community itself (see Rich Hickey's talks) and from the wider communities that clojure draws its ideas from (other functional languages, lisp, etc.) Decide for yourself if you find the arguments compelling. In my experience, the clojure community is not interested in promoting clojure for reasons of tribalism or vanity, but because they can indeed use it to produce better work faster.
- S4M 13y ago> In my experience, the clojure community is not interested in promoting clojure for reasons of tribalism or vanity, but because they can indeed use it to produce better work faster. Example needed. Cascalog?
- coldtea 13y ago>at the end of the learning process, you will indeed be significantly more productive. That's standard process for any language. The question is: why should we assume that Clojure pays more/special dividends in the long run?
- yogthos 13y agoI did a writeup a little while back reflecting on why I feel Clojure makes me more productive: http://yogthos.net/blog/49-Why+I%27m+Productive+in+Clojure http://yogthos.net/blog/49-Why+I%27m+Productive+in+Clojure
- craigching 13y ago> It's not just a question of switching from imperative language X to clojure and seeing a huge productivity boost. It depends on who you are. I recently used Clojure on a skunkworks feature for our product for which I had three days to complete. I am absolutely convinced that it was at least 3x smaller (LOC) and took me at least 1/3 of the time it would have taken in Java. I am an expert Java programmer and not a newbie to Clojure, but I still have to look up a lot of things. The killer productivity feature of Clojure (LISPS and other languages) is the REPL. Trying things out, analyzing data structures, etc. is where I would have spent a ton of time in Java. Even if you're not an expert Clojure programmer, just using the REPL can save you tons of time. So not necessarily disagreeing with you, but I also think that a non-expert in Clojure can still run circles around an expert Java programmer when considering productivity.
- rossjudson 13y agoI'm not disagreeing with you, but exactly what is it that you're doing in the REPL that you're not able to do in, say, Eclipse's Display view while having changes pushed into your program under debug (when it's able to)? Java disallows pushing some changes into the VM, but many changes go right in during debug.
- yogthos 13y agoIt's not about what's possible in principle, but whether the tools facilitate a certain workflow. When you work in Clojure everything is interactive. You can write a function evaluate it immediately, see the result, use it in the next function and so on. The workflow is very natural and you practically never have to restart anything. You can build up state in the application, see how things interact, reload functions add new functions, and so on. Using a debugger in Eclipse is a very pale imitation of this.
- craigching 13y agoThanks Yogthos, that is pretty much exactly how I would have responded :)
- 13y ago