6 ms·
I don't have a horse in this race but I find it interesting that in my career I've seen a lot of bad code but the worst clusterfucks I've met where all in Cloju
by luckydata 8y ago
I don't have a horse in this race but I find it interesting that in my career I've seen a lot of bad code but the worst clusterfucks I've met where all in Clojure while the community seems to be chock full of purists and in general people that takes craftmanship seriously at least at face value.
¯\_(ツ)_/¯
- heretoo 8y agoI work with clojure, and love it, but believe the problem is caused by java or equivalent paradigms applied to clojure. The high probability that clojure was someone's first functional language could also contribute to the problem. Your thoughts?
- thom 8y agoThis is just blaming people for using Clojure's features though. If deep JVM integration wasn't a selling point, you'd use a vastly more mature Lisp, right?
- ken 8y agoA lot of us use Clojure despite the JVM, not because of it. Closure has a lot of (other) compelling features.
- fiddlerwoaroof 8y agoI mostly write Clojure because, unfortunately, it's nearly impossible to sell management on Common Lisp: ime, Clojure is a nice language, but it's very uneven because it's well-designed for the sorts of things the core team cares about and everything else is barely passed the MVP stage.
- njharman 8y agoThe parent post did not say JVM, they said Java paradigms. Vastly different things. Writing Javaonic Clojure vs Clojuronic Clojure. So, trying to replicate the style/structure/paradigms of Java rather than learning and using the Clojure styles, structures and paradigms.
- thom 8y agoYes, I understand, and I contend that being able to do this, and leverage Java libraries bidirectionally in impure Java-y ways is an explicit, deliberate and fundamentally useful feature of Clojure. Unless you're trying to say that things like protocols are fundamentally un-Clojurey because they smell of OO or something in which case I just disagree.
- thom 8y agoMore widely, Clojure's pragmatism and the fact that it's not overly sniffy about what paradigm to use is one of its nicest features. If I wanted my programming language to make me feel bad about myself, then obviously I'd just use Haskell and be done with it.
- fulafel 8y agoNo, CL looks quite long in the tooth when compared on ergonomics and ecosystem. It may run faster but otoh the Clojure concurrency story is great. There's also good IDE support for more enterprisey tastes (Cursive) in addition to the phb-scaring Emacs/vi, and ClojureScript is a huge selling point in many fields. The JVM has a lot of technical plus sides aside from the library interop - a lot of tooling such as Newrelic and Maven can be directly leveraged.
- jonahx 8y ago"The worst injuries I've ever seen were in big factories with large, powerful tools -- not in home garages where people just use hammers and hand-saws." Powerful abstractions are... powerful. They're more difficult to use correctly, and take longer to learn. The conclusion shouldn't (always) be to avoid them entirely.
- crdoconnor 8y agoA good rule of thumb is the more powerful the language the stronger your justification needs to be for using it: https://en.m.wikipedia.org/wiki/Rule_of_least_power https://en.m.wikipedia.org/wiki/Rule_of_least_power LISP is, of course, way more powerful than most languages so it is more susceptible to technical debt.
- weavejester 8y agoI've used that quote from Berners-Lee in a presentation before; it's one that I tend to agree with. However, I think you've drawn the wrong conclusion from it. We want to choose the least powerful language for the job, but the least powerful language is frequently domain specific. Ideally you'd want to develop within a framework that makes it easy to develop restrictive, domain-specific languages. I'd suggest that Lisp is actually a good basis for this, as S-expressions make it easier to build smaller languages. Clojure in particular seems to be heading in this direction. Cognitect has spec and datomic, and there's been some interesting ideas from Christophe Grand (IIRC) about using relational programming outside the database.
- raspasov 8y agoSimplicity matters more than power.
- preommr 8y agoI'd wager good money the exact opposite is true. Big factories should be better regulated and more professional leading to less accidents. It's the weekend dad with a beer in his hand trying to get something done quickly that saws through their tendon and fucks up their wrist. Also python is definitely not as simple as a hammer and hand-saw.
- michaelmrose 8y agoWhat a passive aggressive comment. > At least at face value Implying that in actually they are what a bunch of incompetent hacks?
- luckydata 8y agoThat the results didn't match the values. Disconnect happened for reasons I didn't fully understand. On a second observation I must have touched a VERY raw nerve given the huffy reactions.
- michaelmrose 8y agoLet me break it down. >I don't have a horse in this race but This is like someone saying I'm not racist but... After which they tell you why they really hate black people. You clearly do have an opinion your statement is a plea for imaginary objectivity. You follow it up by elevating anecdote to analysis without the work required for real insight. The crack about at least on its face is just designed to offend. The silly emoji after doesn't soften what is basically trolling. If you want to seriously discuss you should start by making substantial points.
- luckydata 8y agoI admire your restraint, you stopped short of calling me a nazi at least. Again, you're completely missing the point: I don't have to "prove" anything to you. I don't even code anymore for that matter, and I can't give two shits if you prefer to write Clojure, Typescript or whatever rocks your boat, that's something that matters to you and not to me. I simply observed that for a community that spends so much time talking about craftmanship and clean code, the worst messes I witnessed were all Clojure codebases and that's it. If you feel attacked... that's your own insecurity speaking.
- michaelmrose 8y agoYou don't have to prove anything but if you do have a negative or positive opinion to share optimally your original comment would indicate that you are willing and able to discuss the matter. Making a drive by comment and the copping out isn't much of a contribution to the conversation. Furthermore look at this comment. > I admire your restraint, you stopped short of calling me a nazi at least. Some time in your life you should try actually try being an asshole instead of playing one on tv. It would be more honest and satisfying and people that aren't thin skinned can take a little civil disagreement. All things suck to some degree. You might have an interesting perspective to share on situations where clojure sucks but you wouldn't know it because you are happy to stir up discussion but disinterested in any actual substantial disagreement. Guess that is done then.
- taeric 8y agoYou may not claim to have a horse in the race, but rhetoric like this doesn't point you as non biased. Clojure has yet to impress me, but most of the poor code in any language I have dealt with stemmed from people trying to redefine the norms of the language they were using. And attempting to solve problems they would be lucky to grow into.
- iLemming 8y agoI guess we would have to believe your empirical observations and ignore the facts: - Clojure has been noted as the most payed language in dev surveys of the past few years - Again, different surveys (e.g.: stackoverflow, state of javascript) shown that Clojurists overall are more experienced devs. This kinda makes sense - usually people try Clojure out of curiosity and not for dogmatic reasons and not for the points in the resume. - Someone did a data analysis of github repos for bug density and Clojure was at the top. https://dev.to/danlebrero/the-broken-promise-of-static-typing https://dev.to/danlebrero/the-broken-promise-of-static-typin... However, I can say the similar thing: I have seen many clusterfucks in my career. And the worst of them I've seen in C#. Why C#? I don't know, probably because I was inexperienced, young and stupid, and anything (even slightly outside of norm) could've interpreted by me as a clusterfuck. I have no reasons to go back to C# and re-evaluate my opinions about it, I'm sure part of me will be forever biased about it.
- luckydata 8y agoyou don't have to believe a damn thing, it's just my experience.
- KaiserPro 8y agoPay for a language doesn't reflect skill, or even implied skill. Its simply a function of demand and supply At $financial-news company, someone decided that they should re-write a few critical parts of the system in closure, partly due to boredom, partly due incompetence. They swanned off, along with 90% of the other people who knew how to maintain closure. This left a bunch of junior java devs to maintain a ill thought out ego piece. This logically meant that said company had to spend a large amount of money of contractors to maintain the system whilst they re-wrote everything in the same language.
- iLemming 8y ago> Pay for a language doesn't reflect skill, or even implied skill In this case it sorta does: a) Clojure is known for having a bit of learning curve and being a Lisp, it rarely attracts newbie programmers b) it is famous for its concise syntax and for being able to build and maintain things with smaller teams. ROI of 3 Clojure devs is almost always can be predicted to be much higher than of 6-7 Java/Javascript/Python/ Ruby/etc. teams. Pick a few successful Clojure(script) projects and see how big the teams are, they are usually not that big c) Flexibility of Lisp lets you bend your code for different paradigms: functional, OOP, logic, relational, CSP, reactive, declarative. In my experience, when most other (practical) language acolytes simply ignore academia Haskellers and Clojurists tend to be genuinely interested in CS papers. I think that is due to their experience - again these languages usually attract more seasoned developers