4 ms·
Clojure'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 h
by espeed 14y ago
Clojure'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.
- lukev 14y agoI disagree; it's very important to talk about complexity. Otherwise, we can't minimize it, and however you define it, it is a problem in software. You're right, though, the definition is sprawling, so I think it makes sense to use smaller more precise words. The good news is we have some of these: Referential transparency, pure functions, immutability, and neologisms such as "complection". These are very useful, meaningful terms.
- espeed 14y agoRich Hickey has gone to great lengths to define simplicity and complexity (http://www.infoq.com/presentations/Simple-Made-Easy http://www.infoq.com/presentations/Simple-Made-Easy), and the paper "Out of the Tar Pit" (http://shaffner.us/cs/papers/tarpit.pdf http://shaffner.us/cs/papers/tarpit.pdf) goes further. Software projects are becoming increasingly complex, and multicore concurrency is becoming increasingly important. Immutability and referential transparency are key ingredients in Clojure concurrency so I think the slogan is apt.
- stcredzero 14y ago> Clojure's killer app is managing complexity. This allows you to keep your mental stack clean. There's a big PR problem with environments that have this as a core strength: it's very hard to demonstrate this without a lot of involvement. It's very hard to demonstrate this with a "hello world." sized experience.
- edwinnathaniel 14y agoPerhaps I have not pushed OO to the limit but for the most day-to-day tasks I've ever done, OO state is hardly the issue unless you have to write a paper or explain something via state-machine or whatnot. Request -> App Server -> Processing -> Response -> End, no state lingering around... I do understand what you're saying but I believe the era of complex OO with states is declining, at least at web-development level...