7 ms·
Clojure is not Software Conservative
- jerf 14y agoI'm not going to submit this as a separate link, but here's Haskell: http://blog.ezyang.com/2012/08/is-haskell-liberal-or-conservative/ http://blog.ezyang.com/2012/08/is-haskell-liberal-or-conserv... I want to make a bit of a snarky comment about everyone rushing to disclaim being conservative, but I think this really reflects the fact that the distinction isn't a very useful one for languages, and very dubious even for communities. If it's useful at all, which I don't particularly believe, it's only for specific people.
- aristidb 14y agoIt was in fact already submitted by somebody but hasn't caught a lot of attention: http://news.ycombinator.com/item?id=4367807 http://news.ycombinator.com/item?id=4367807
- ChuckMcM 14y agoIn this case I think the snark would be accurate. I was surprised at how the snark , "What are you? Republican?" was tossed about at my former search company. Thematically there is power in labels, and Yegge goes out of his way to attach the 'bad' label to things he doesn't like. Not much different than 14 year old boys calling each other gay on game chat boards. Take a label that is offensive, associate it with something you don't like, paint people who like what you don't like with a label that they don't like. Class warfare at its most middle school. There is a reasonable point, which is you can't argue with someone who doesn't share your definition of 'good' and 'bad'. But the labeling thing is unfortunate.
- logicalmind 14y agoI agree with your sentiment. But using the words "Class warfare" to describe it doesn't help your cause. It is equally a bad labeling of valid discussion points.
- plinkplonk 14y ago"Take a label that is offensive, associate it with something you don't like, paint people who like what you don't like with a label that they don't like." You forgot "Then sit back and watch the fun as otherwise intelligent people buy into your frame and scramble to defend their favorite languages on HN, Twitter, blogs etc". I am in awe of Steve Yegge's ability to conjure up an internet storm at will. Everybody gets what he is upto, but feel compelled to respond anyway.
- ruggeri 14y agoThis. This. This.
- aero142 14y agoAgreed. I consider myself most comfortable in Python and I find myself uncomfortable with Clojure's liberal side more often than it's conservative side. I think I still have a lot to learn from and about Clojure but I don't think it fits very well into Yegge's spectrum. The author is correct that the most important thing about Clojure is Rich Hickey's philosophies on simplicity in code. I don't find simplicity to be a very political topic.
- DigitalJack 14y agoHave you seen the US Tax code?
- aero142 14y agoYes, and if you told me it was complex because of either the conservatives or liberals, I would call you an ideologue.
- rys 14y agoWhat's the motivation for everyone to add noise to Yegge's obviously broken claim that you can reason about software engineering in such a one dimensional way?
- adestefan 14y agoIt's easier to add to the noise than it is to write about one of your own ideas. It's even easier when you're replying to a well know voice so you can ride on their coat-tails and be on the front page of HN, proggit, etc.
- aristidb 14y agoHe has a lot of visibility, and makes an argument that many people disagree with. Also, on the Internet there is no such thing as "obvious".
- dminor 14y agoSteve is wrong about macros - they don't compose as well as functions, and that's why people don't recommend them where a function works just as well. As far as adding new things into the language, though, Clojure does tend to be conservative. There is a lot of thought (hammock time) that goes into each potential addition, and whether the increase in complexity is worth the increase in functionality. This seems like a good thing to me, but maybe that just means I'm a software conservative (I doubt it, since I also love Ruby).
- yason 14y agoYou don't use macros to inline functions or anything. You use macros to do things functions can't do. In a program written by the Lisp mindset, the amount of code covering macros can easily grow to greater than marginal. It's just that you're not writing functions, you're writing translation rules for your own language where you can solve the problem more easily.
- ths 14y agoExactly. When he says So under its expressive covers, everything about Clojure is strongly conservative, with a core overriding bias towards protecting programmers from mistakes. he's probably talking about macros and the focus on immutability/FP. With respect to macros, I really don't get why he interpreted Christophe Grand's presentation like that unless he walked away after the first two slides or so (and even then it's a stretch). Rich Hickey debunked his statement on macros very well here on HN (http://news.ycombinator.com/item?id=4366661 http://news.ycombinator.com/item?id=4366661) - the view Christophe expresses is precisely the opposite of conservative: it's about increasing composability and flexibility, very liberal attributes by Yegge's own definition. Although "protecting programmers from mistakes" is definitely one side of FP/immutability, I seem to recall Rich and others arguing for it more in terms of reducing the cognitive overhead of programming by reducing incidental complexity - not having to hold as many things in your head while thinking about your system allows your brain to handle bigger systems and move faster. Removing mental obstacles for the programmer who is impatient to create furiously seems pretty damn liberal to me. I had fun reading Yegge's post, as with most of his posts. But the part about Clojure really missed the mark. Which is a shame, given Yegge's arguing for lisp in the past and Clojure being a really cool, viable lisp for getting stuff done in the 21st century.
- bcbrown 14y agoI don't think pointing to surveys showing few Clojure users came from Haskell/ML, is sufficient to disprove Yegge's assertion. If a language's designers came from camp A, yet the majority of users came from camp B, that does not mean the language is not strongly influenced by camp A.
- chrishouser 14y agoThat's a fair point, but it was an attempt to inject actual facts into a conversation full of generalities. What the survey does suggest is a lot of people who used "non-conservative" languages in the past are now using Clojure. Maybe they all decided they wanted a "conservative" language, or maybe they think Clojure is "non-conservative". Or maybe these labels don't have much meaning after all.
- bcbrown 14y agoA correlation between people who use a language and the previous languages they have used does not imply a correlation (or intellectual/philosophical inheritance) between the language under discussion and the previous languages used. I've never used Haskell, so I can't speak the specifics of the observation. But I don't believe much can be inferred from the observation alone.
- pmbauer 14y ago"A correlation between people who use a language and the previous languages they have used does not imply a correlation (or intellectual/philosophical inheritance) between the language under discussion and the previous languages used." And yet, that is exactly the basis for Yegge's point: attributing a philosophical label based on a perceived (and incorrect) background for a group. Goose, gander. Kettle, pot.
- bcbrown 14y agoMaybe these labels don't have much meaning after all.
- 10098 14y agoLeaving aside the question about whether the suggested division between "liberal" and "conservative" is a valid one... It seems like people are not happy for their favorite language being labeled as "conservative". I don't understand why. Depending on the problem domain, "conservative" and "liberal" approaches can have their benefits and drawbacks. I used to work at a company developing software for electronic trading. If anyone said something along the lines "bugs are not a big deal", they'd get fired pretty fast, because actually bugs can be quite a big deal when they cost your customers hundreds of thousands of dollars (if not millions). On the other hand, a social networking site could probably allow such approach. Facebook seems to have embraced it: yesterday I actually had to post a comment about five times before it finally appeared. Now I know that what I witnessed was probably a result of a "liberal" approach to development :)
- andrewflnr 14y agoBut most of the people in the discussion are those people writing sexy new programming languages, so of course they don't want to be labeled as conservative. The real programming conservatives are probably not even listening for the most part.
- chrishouser 14y agoThere are a few features from Yegge's conservative list that I wish Clojure had. For example there is some very interesting work going on to support optional static typing. https://github.com/frenchy64/typed-clojure https://github.com/frenchy64/typed-clojure But this article was not about what is desired, but about what is -- Clojure is not currently very "conservative" according Yegge's definition, for better or worse.
- gwillen 14y agoI don't think it's the labels that are the problem for the 'conservatives'. As I said on the other post, I fully expected that the 'liberals' like myself would say 'oh, what an interesting distinction', where the conservatives would say 'that distinction is bullshit, you're just covering for the people who are wrong by calling them liberal'. I think the real issue is that the 'conservatives' do not see what Yegge describes as the 'liberal' position as being a legitimate alternative at all, labels or not.
- anewguy 14y agoWhy do people think it's useful to import badly fitting, emotionally loaded labels from politics into software? Behold the stampede of engineers running away from the "conservative" label!
- guelo 14y agoMaybe a political conservative would have been able to construct the argument in a way that would make developers proud to label themselves programing conservatives.
- chrishouser 14y agoBut I am a political conservative! Maybe a political conservative with more impressive rhetorical skills would have done better... But wait, that doesn't make sense because this supposedly has nothing at all to do with political points of view.
- DigitalJack 14y agoLet's ignore political extremists for the moment. I think the definitions of political conservative on Steve Yegge's post are pretty far wrong. If those are the commonly held beliefs among the liberal side, well, that seems like a stunning level of misunderstanding. I think the only thing colloquially conservative about "conservatives" is that they are colloquially conservative in the amount of power the wish to cede to government. Being a political conservative today in the US, in an ideal case at least, is about freedom and choice. Generally held beliefs are that free-markets are good in many cases, too much regulation is as bad and sometimes worse than too little, and that government is in very many cases a terribly inefficient use of resources. In principle they do not believe in domination of the masses by a vast corpus of rigid rules. They believe a minimal set of overarching rules, and leaving much to freedom and choice. That's conservatism in principle, from my view as a conservative. The reality of course is different, particularly for "conservatives" in office or seeking office. I personally have a hard time distinguishing one brand of politician from another. And there are a vast array of people with sometimes bizarre beliefs that associate with one side or the other of the political spectrum, and the conservative side has plenty of them, and liberals do too. I don't know for sure how this 'brand' of conservatism would apply to programming. I would suggest though, they would want as much freedom to express themselves as they could get. So: --The idea of strong typing would rub conservatives the wrong way. --A rigid and inviolable set of rules and procedures and processes for how code may be written. I'm not sure what else. My programming experience is pretty amateur. My favorite languages to work in are C, Python, and Clojure. So maybe that says something.
- yason 14y agoThese people try to debunk Yegge's idea by proving, point by point, how their language isn't conservative. But no matter how much counter-arguments and rational fodder they provide, it doesn't change a bit anywhere because what Yegge offers is a perception, viewpoint, an idea, a gut feeling of his with some semirandom examples for the sake of examples. And you can't attack someone else's idea or perception with rational weapons. What matters is how well Yegge's idea strikes the chord here. "But it's an oversimplification!" Of course it is but that's not the point here. The point is Yegge thinks he recognized the same driving energy between the political conservatives and conservative programmers, and similarly to liberal ones. The mindset, the kind. What's interesting is if that rings true and if so, how well it rings true. Basically, he seems quite right, give or take a bad example or two. There are these two opposing mindsets in the field of programming whose clashes are well-known to everyone and the conservative--liberal axis quite nicely divides the camps. It overlaps a lot with the static vs. dynamic typing war but like he said, the typing wars are basically a special case of conservative vs liberal. I can certainly recognize these daring sword-swingers and the patient fortress-builders of the programming league.
- chc 14y agoWhy is "striking a chord" what matters? Shouldn't being right matter? Gut feelings may be what matters to some people, but that doesn't make those people right and it doesn't make rational people wrong. People are very capable of valuing things wrongly. This mindset you seem to be advocating here has a disturbing similarity to Stephen Colbert's famous idea of "truthiness." And that brings us to tonight’s word: Truthiness. Now I’m sure some of the word police, the “Wordinistas,” over at Websters are going to say, “Hey, that’s not a word.” Well, anybody who knows me knows that I’m no fan of dictionaries or reference books. They’re elitist, constantly telling us what is or isn’t true or what did or didn’t happen. Who’s Britannica to tell me the Panama Canal was finished in 1914? If I want to say it happened in 1941, that’s my right. […] Do you know you have more nerve endings in your stomach than in your head? Look it up. Now, somebody’s going to say, “I did look that up, and it’s wrong.” Well, mister, that’s ‘cause you looked it up in a book. Next time, try looking it up in your gut. I did, and my gut tells me that’s how our nervous system works. Now, I know some of you may not trust your gut — yet. But with my help, you will. The truthiness is that anyone can read the news to you. I promise to feel the news at you.
- jallmann 14y agoAnd I don't understand the knee-jerk reaction against being labelled software-conservative. Yegge's overarching message, where conservatism is employed to mitigate engineering risk, is a Good Thing. Also, Yegge's specific examples of liberal features are astonishingly bad. Half of the liberal features illustrate the worst aspects of language (non-)design. Automatic type conversion, stringification, semantic nulls? Sounds exactly like PHP and Javascript. The other half of the liberal features are either inconsequential, or actually significant to conservative languages. Bitstrings, function overloading by arity, a global namespace, convention over configuration? Sounds like Erlang/OTP. Preprocessing and DSLs? Try ML (Meta Language), not to mention macros in Lisp-likes.
- MaysonL 14y agoAlready Yegge has fouled the technical discourse. Sad.