

Clojure is not Software Conservative - liebke
http://blog.n01se.net/Clojure-is-not-Software-Conservative.html

======
yason
These 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
Why 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._

~~~
yason
You're raising an interesting question that drifts to being off-topic but I'll
post a reply anyway.

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.

------
jerf
I'm not going to submit this as a separate link, but here's Haskell:
[http://blog.ezyang.com/2012/08/is-haskell-liberal-or-
conserv...](http://blog.ezyang.com/2012/08/is-haskell-liberal-or-
conservative/)

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.

~~~
ChuckMcM
In 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.

~~~
plinkplonk
"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
This. This. This.

------
rys
What'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?

~~~
aristidb
He 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
Steve 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
You 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.

------
aero142
Agreed. 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
Have you seen the US Tax code?

~~~
aero142
Yes, and if you told me it was complex because of either the conservatives or
liberals, I would call you an ideologue.

------
10098
Leaving 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 :)

~~~
chrishouser
There 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>

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.

------
jallmann
And 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.

------
bcbrown
I 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.

~~~
lispm
Rich Hickey, the designer of Clojure, isn't from Haskell/ML background. His
background is C, C++ and Java.

~~~
bobak
With a little Lisp, incl. two Java<->CL attempts: <http://jfli.sf.net> &
<http://foil.sf.net>

~~~
Ralith
Did nobody tell him about <http://common-lisp.net/project/armedbear/>?

------
MaysonL
Already Yegge has fouled the technical discourse. Sad.

------
anewguy
Why 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
Maybe a political conservative would have been able to construct the argument
in a way that would make developers proud to label themselves programing
conservatives.

~~~
DigitalJack
Let'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.

~~~
sanderjd
You are speaking exclusively of the fiscal side of the current use of the word
"conservative", which currently makes no sense from the point of view of the
non-political definition of the word "conservative", because it would take a
fairly radical set of policy changes to achieve those goals. This is why
"libertarian" is a much better word for that type of "conservatism" - it
refers to the goals themselves, not to the amount of policy change necessary
to achieve them. However, on the social side of modern "conservatism", it
truly is about conserving status-quo in many cases, even when that approach is
at odds with "freedom and choice", (gay marriage, drug laws, etc.)

tl;dr; Yegge's use of the word "conservative" is not wrong, but rather the use
of the word "conservative" to describe the (usually exclusively-) fiscally
libertarian portion of the modern "conservative" movement is wrong.

