It struck me the other day that this is why archivists have trouble with the web. Old links go dead all the time. Various people have tried to convince web publishers that they should take the preservation of old links seriously - we are destroying history! But it isn't just that preserving old links is hard work - which it is - but that history is a terrible burden for the living. You are forced to curate and disclaim it, or risk having it held against you. It's much more comfortable to just walk away from your history and hope that it biodegrades.
Forgetfulness is a blessing, and few online systems provide it in any well-thought-out fashion. Users are forced to use hacks to achieve it.
Publishing thoughts on web, like print, demands rigour from the author and the reader. Read actively, write like you have an audience, and be skeptical.
This is another mindset endemic to engineers like myself: First-order thinking. The notion that, because a bit in a piece of flash RAM, a memory in someone's brain, and an etching on the wall of a thousand-year-old church are all the same to first order -- "persistent" storage of information -- they can therefore safely be treated as the same thing.
The second-order differences are pretty important. To pick just one particular example: Human memory is not just an incredibly fallable medium (you remember events that never happened, and your memory of events that did happen gets distorted over time and is situational, dependent on your current mood) but it is inevitably filtered through the personality of the rememberer. The only way to learn what a World War II veteran remembers about the war is to listen to what the veteran tells you. If the veteran happens to have been a personal friend of General Patton, they will tell you certain things about Patton. If the veteran was a sworn enemy of Patton, they will tell you other things about Patton. If you strive to prevent them from doing this consciously, they will do so unconsciously. Such is the nature of human memory and communication.
A photograph of Patton, or a written memoir, is an entirely different beast.
And, similarly, there is a big qualitative difference between a third-hand account of a conversation in a bar, an entry in a handwritten diary that is stored in your basement someplace, and a popular web page that has been downloaded a thousand times and is available on Bittorrent in case the original is taken down.
But I couldn't justify using either for a project for work. I generally choose Ruby instead nowadays. In Clojure I still end up rolling my own libraries for a lot of things, which is really quite fun in my spare time, but not justifiable if I'm billing by the hour and there are a dozen Ruby gems already written to do it.
We have seemingly constant threads on HN saying "I can't hire a good programmer!" What are the chances of my non-programmer boss hiring a good Lisp programmer? At the small non-profit at which I work? Good freaking luck.
I'm still using some PHP scripts at work today, and I still cringe to see the code, and I whine a little (to myself) whenever I have to edit it, and my boss still loves the end result, and it's done its job well for 2 years. What else matters? I believe in "Worse is Better" in this case.
I do sneakily use Clojure at work for small data-munging tasks. But not for code anyone else ever needs to see.
(I do also wonder why this blog post from 2008 made it to HN.)
How do you think these Ruby libraries got written?
If you want to put Clojure in the spotlight don't use it to build redundant, half-assed solutions to problems that are already solved. Use it to solve a new problem. Companies like Runa and BackType and Flightcaster are setting the right example here.
Someone has to get the basics in place. Trying to do a web 3.0 startup that may or may not succeed, using clojure, will have absolutely no impact on getting people to use clojure for web development.
"There are 10x as many potential library writers for Ruby/Python etc because it's 10x easier to get up to speed in those languages."
Why? Clojure is smaller, simpler and more consistent than either Python or Ruby.
Forth is even simpler than Clojure. A language is not necessarily easy to learn just because it has a small, simple, orthogonal core. Understanding how bricks are made doesn't automatically make it easier to build a house. It's the difficulty of the macro-concepts that makes the most difference and most people find imperative programming and mutable state and infix syntax easier to handle than declarative programming and immutability and prefix syntax. Lisp has been more powerful than the competition for most of its history but it's never been popular.
TL;DR size isn't everything.
Where is the empirical data to support this?
The overwhelming (and it really is overwhelming) market preference is for imperative, infix languages with rich syntax. The extraordinary claim that this is purely circumstantial is the one that requires extraordinary proof.
In America, there is also overwhelming market preference for junk food. It doesn't mean junk food is better for you.
So what's your explanation then? If functional languages are no more difficult to learn and are more powerful why are they not used? Why have Python and Ruby flourished while Lisp and ML remain academic obscurities?
I still say the burden of proof is on the FP advocates. If you want to claim that everybody is doing it wrong you should have a pretty strong case.
Programming languages are cultural, not technical, artifacts. For reasons why one language is used by more programmers at a given point in time than another you need to turn to sociology. Lisp has some clearly superior technical ideas, which is why it has continued to be used and expanded for the last 50 years, and why all the other languages you mention (Python, Ruby, ML) drew ideas there. On the other hand, a language like Perl (and as Python and Ruby will eventually be) is briefly popular, but has no compelling technical features or metaprogramming facilities for people to continue to use and expand it when another shiny new language comes along.
See the CPAN and especially modules such as PPI, Moose, and Devel::Declare.
So O'Reilly can sell books about it.*
"Despite the existence of Rails, Perl 5 is still more widely used than Ruby."
Who is writing new projects in Perl 5? Ruby will also have a lot of legacy code in five years.
* If you thought that was a joke, you're still missing the point.
I suffer no illusion that their sales numbers have any correlation to the popularity or efficacy of a technology. Their Ruby book sales crashed in 2007, for example.
Who is writing new projects in Perl 5?
I know of many, many new projects written in Perl 5. So far this year I've worked on three and have another later in the year.
I guess all that PR and advertising from dozens of publishing, training, analyst and consulting firms is a giant waste of money?
Sociology is a factor but that's wildly overstating the case. The fact that people prefer to borrow from Lisp rather that adopt it is telling. Many programmers are aware enough of Lisp to take inspiration from it but choose not to use the language itself.
There's a subtext of arrogance in the claims FP and Lisp advocates make about the popularity of various programming languages. In my experience most of those people don't actually write much code. I gave up on the Common Lisp community years ago after realizing that it was full of people that would rather sit around discussing how things should be than actually building something.
Clay Shirky talks about people knocking out an important app in 2 days PHP here: http://www.ted.com/talks/clay_shirky_how_cognitive_surplus_w...
I doubt very much that the typical Lisp crowd would have gotten past arguing which web templating library to use.
And how does anything you wrote after this sentence not support my argument?