TE
TechEcho
Home24h TopNewestBestAskShowJobs
GitHubTwitter
Home

TechEcho

A tech news platform built with Next.js, providing global tech news and discussions.

GitHubTwitter

Home

HomeNewestBestAskShowJobs

Resources

HackerNews APIOriginal HackerNewsNext.js

© 2025 TechEcho. All rights reserved.

Clojure is Capable

198 pointsby ahungryover 6 years ago

7 comments

lopatinover 6 years ago
So Clojure and CLJS are amazing. If I were to pick a Lisp for a real world project, Clojure is the obvious pick. The thing is, I&#x27;m curious to hear from people who DO use Lisp in the real world.<p>I would characterize my experience with it as 1: Really fun. 2: Productive on a small scale due to the tooling, interop, libraries, and community being innovative and awesome, and 3: Infinitely flexible, because you know .. it&#x27;s a Lisp. Development becomes like doodling on a piece of paper, like a stream of consciousness.<p>But I ended up choosing Scala for a recent, fairly large, project of mine and I&#x27;m convinced it was the right decision. Without a static type system I would have simply lost a handle on the complexity of the project. And this is while working alone (the case where Lisp traditionally has the upper hand).<p>A few questions for people who use Lisp in production. No need to answer all, just things I&#x27;m curious about:<p>* During refactoring, do you feel more flexible, or less? I can see both sides to the argument. On one hand, static types are more rigid, and getting something to compile during a refactoring can be a pain. Often for the right reasons, but often it&#x27;s due to some annoying technicality in the type system. But once you get there, &quot;if it compiles, it runs&quot; is a cliche that is pretty accurate in my experience. On the other hand, with a dynamic type system, you can slowly evolve a code base and see incremental progress during a refactoring, but I can never get over the dreadful feeling of &quot;what did I forget?&quot;. Has clojure.spec worked out in terms finding bugs during refactoring&#x2F;maintenance and general QA?<p>* Do you make use of the Lispy-ness (Homoionicity, macros, code is data, etc ...) or is it generally an anti-pattern to use these language features in daily development?<p>* Do you wish you had static types? If so, have you tried gradual typing like Typed Clojure? And if you don&#x27;t miss types, why? I remember someone saying of Typed Clojure &quot;We went to Clojure to get away from types!&quot;. And I&#x27;m still trying to understand the mindset.<p>I often have the feeling that I&#x27;m not smart enough to use Lisp. If I had 2x the brain power, I would be able to use macros to conjure up some black magic in 100 lines what would take a mortal 5k in a lesser language. But even if I manage such a feat, I couldn&#x27;t imagine bringing on another developer to that codebase.
评论 #18776215 未加载
评论 #18775792 未加载
评论 #18775106 未加载
评论 #18775304 未加载
评论 #18775775 未加载
评论 #18775023 未加载
评论 #18782677 未加载
评论 #18776277 未加载
评论 #18776876 未加载
评论 #18777502 未加载
评论 #18775185 未加载
评论 #18777899 未加载
akhilcacharyaover 6 years ago
This is wonderful! Just what I was looking for in terms of real world Clojure.
cube2222over 6 years ago
I really like clojure as a language, but it seems like the bus factor is very problematic.<p>Observing the community I see rich hickey, as well as cognitect as a whole SPOFs, which hold me back from devoting more time to it.
评论 #18777630 未加载
评论 #18777489 未加载
agumonkeyover 6 years ago
Interesting blend of raw clojure, java interop, os integration... very very nice
StreamBrightover 6 years ago
I still miss the proper Java interop. Calling SAMs is not fun and I could not figure out the proper way of make it work from Clojure. We ended up needing to write a Java wrapper.
评论 #18776510 未加载
sidcoolover 6 years ago
For any project bigger than a certain threshold, I always prefer Scala over Clojure or even Java. For smaller projects, Clojure fits well.
评论 #18777655 未加载
shadowmintover 6 years ago
&gt; Interactive REPL based workflow (think of programming in Clojure like playing a difficult video game based on trial and error with emulator save states vs without).<p>What?<p>I&#x27;m not sure I understand what that&#x27;s even trying to say?<p>Is it <i>trying</i> to say, think of <i>programming</i> as playing a difficult computer game, and using a REPL like having save states?<p>...because it sounds like you are saying programming in Clojure is like playing a difficult video game based on trial and error, which is a really rubbish endorsement.<p>&gt; To touch on the video game analogy - imagine playing one of the old Mega Man games, Dark Souls, or Battletoads. Now, imagine that instead of getting feedback (a death) that results in a hard restart at the beginning, you instead just get taken back one action &#x2F; event that caused an error (a single failed function call in REPL). That&#x27;s like loading a save state, and if you like easy mode, you&#x27;ll love the Clojure REPL.<p>?<p>mmm... but if your analogy is &#x27;this is like doing something <i>really hard</i>, but you can timestep back to save state so it&#x27;s not so bad&#x27;, then you&#x27;re still basically saying writing Clojure is really hard.<p>I don&#x27;t think that&#x27;s really a fair thing to say about Clojure, it&#x27;s just a terrible analogy.<p>Expressing things in Clojure is what it excels at; if you want an anology the REPL is more like a minecraft sandbox that you just continually keep building in, rather, than planning out your structure on paper before you start playing.
评论 #18775944 未加载
评论 #18776736 未加载
评论 #18775484 未加载