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.
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.
To me the survey suggests that the division between camp A and camp B is immaterial to the decision to use the language. Obviously the designers think the language is worthwhile, otherwise they wouldn't have made it. Obviously the users think the language is worthwhile, otherwise they wouldn't use it.
Since both find value in the language, this political/conservative spectrum is about as valuable as judging physical fitness by hair color.
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.
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.
My point was that you can't attack a perception or an idea with rational tools made for splitting things to right and wrong. You can only either resonate with his idea or not. Those who do resonate, are able to explore the idea further. Those who apply the rational tools will obviously reach a rational conclusion but that per se still can't give them decision of whether they're in or out as for the idea. It's an idea of Yegge's and simply, it's out there. It's not right or wrong, it's just there for some people to maybe make something out of it.
When you ask if being right shouldn't matter, you're assuming quite a lot about what's right and wrong and what can be known about right or wrong. The world as we know it rarely works out with facts; the problem is that facts are only facts within some commonly agreed context, and they're only true and untrue within that context.
I don't know the origin or context of the text you quoted but the author seems to play with the idea of what can you know really. For example, how much of human history is factually 100% proven to be absolutely correct? If it's not absolutely, undeniably correct then it doesn't matter whether it's 95% correct or completely false; what's left is only what we decide to (collectively) think about it.
The history of the same event, such as a war, as described in two opposing nations can be very different—which one is correct? It's foolish to think there's only one and only description that is correct and even more foolish to think it must be the one which is "ours". The event affected both nations and how it hit them both is both correct. If we want to remove subjectiveness of the nations themselves and we assume there was a third, objective observer to that event, then his would be the third truth, not the one and only one.
So, to come back to Yegge's idea—or to just reduce it to the old static typing vs. dynamic typing divide—how can you determine which one is right? How can dynamic typing be more right than static typing? How can you determine whether liberalism vs. conservatism applied to programmers is right or wrong? You can only argue for a specific point, such as whether frowning at macros makes Clojure conservative or not, but you can't extrapolate from that to make a decision of whether Yegge is right or wrong. It will come down to whether it resonates with you, or "strikes a chord", or not. If it does, then you don't care about the details and if it doesn't, then you're just arguing for nothing since you're not into his idea anyway.
I think he made a mistake by trying to extend the liberal/conservative dichotomy from programmers to languages. His obsession with static typing versus dynamic typing (which he apparently sees as the universal Manichean struggle underlying every single programming question ever) causes him to label languages in a way that contradicts the way he labels programmers. This is especially apparent right now when many of his "liberal" languages (notably Perl 5, PHP, Python, Visual Basic, and Javascript) are safe, established, corporate-friendly languages that any timid Blub programmer would tackle without anxiety, while many of his "conservative" languages (notably Scala, Clojure, Erlang, ML, and Haskell) are widely considered alien, exotic, and high-risk (from both a project management standpoint and a career standpoint.)
Perhaps he sees no contradiction in conservative languages like Haskell appealing mostly to risk-tolerant programmers and risk-averse programmers feeling quite at home with liberal languages like Javascript, but I find it incoherent.
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.
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.
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.
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.
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.
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.
But wait, that doesn't make sense because this supposedly has nothing at all to do with political points of view.
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).
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) - 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.
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.