Language, Purity, Cult, and Deception

By Xah Lee. Date:

[this essay is roughly a 10 years personal retrospect of some languages, in particular Scheme and Haskell.]

I learned far more OCaml in the past 2 days than the faaking 2 months i tried to learn Haskell, with 10 years of “I WANT TO BELIEVE” in haskell.

The Haskell's problem is similar to Scheme lisp, being academic and of little industrial involvement. About 10 years ago, during the dot com era around 1999, where scripting war was going on (Perl, tcl, Applescript, Userland Frontier, with in the corner Python, Ruby, Icon, Scheme, in the air of Java, HTML 3, CSS, CGI, JavaScript), i was sold a lie by Scheme lisp. Scheme, has a aura of elegance and minimalism that's one hundred miles in radius. I have always been a advocate of functional programing, with a heart for formal methods. Scheme, being a academic functional lang, has such a association. At the time, Open Source and Linux have just arrived on the scene in uproars, along with Apache and Perl. The Larry Wall scumbag and Eric Raymond faakface and Linus T moron and Richard Stallman often appear in interviews in mainstream media. Richard Stallman's FSF with its GNU, is quick to make sure he's not forgotten, by a campaign on naming of Linux to GNU/Linux. FSF announced that Scheme is its chosen scripting lang for GNU system. Plans and visions of Guile — the new Scheme implementation, is that due to Scheme Lisp's power will have lang conversion abilities on the fly so programers can code in any lang anywhere in the GNU OS — like today's Microsoft “.NET”. Around that time, i also wholeheartedly subscribed to some A Brave Gnu World bulletin of FSF with high expectations. (it became defunct in 2004.)

Now, it's 2009. Ten years have passed. Guile disappeared into oblivion. Scheme is tail recursing in some unknown desert. PHP, one of the ugly kludge pidgin, practically and quietly surpassed the huckstered Perl in early 2000s to become the top 5 languages. (remember? snake-oil monger Larry Wall said P is for “Practical”. PHP's got two “P”s.) Python has surfaced to became a mainstream. Ruby is the new hipster on the block. Where is Scheme? O, you can still hear these idiots continuationing tail recursions among themselves in newsgroups. Tail recursion! Tail recursion! And their standard the R6RS in 2007, by their own consensus, is one faaked up shit.

In 2000, i was a fair expert of unix technologies. Sys admin to several data center's Solaris boxes each costing 40 grands. Master of Mathematica and Perl but don't know much about any other lang or langs in general. Today, i am a expert of about 5 languages and working experience with tens or so diverse ones. There is nothing in Scheme i'd consider elegant, not remotely, even if we only consider R4RS.

Scheme, like other langs with a cult, sold me a lie that lasted 10 years. Similarly, Haskell faaked me with a lure of “no assignment”. You can try to learn the lang for years and all you'll learn is that there's something called currying and monad.

In 2005, i spent a year to learn Python. Perl is known for its intentional egregious lies, lead by the demagogue Larry Wall. It fell apart unable to sustain its “post-modernistic” sophistry. To me, Python have always seemed a antidote to Perl, until you walked in. You learned that the community is also culty, and is into certain grand visions on beauty and elegance with its increasingly complex syntax soup with backward incompatible python 3.0. The python faakheads sport the air of “computer science R us”, but their intelligence is about the same level of Perl mongers. (Schemers and Haskell book authors at least know what they are talking about. They are just ignorant outside of academia.)

I think my story can teach tech geekers something. In my experience, the langs that are truely a joy to learn and use, are those sans a cult. Mathematica, JavaScript , PHP, are all extremely a joy to use. Anything you want to do or learn how to do, in so far that the lang is suitable, can be done quickly. Their docs are to the point. And today i have to include OCaml. It's not about whether the lang is functional, or whether the lang is elegant, or what theoretical advantage it has. Also, lang of strong academic background such as Scheme and Haskell are likely to stay forever there, regardless what is the technical nature of the lang. The background of the community, makes half what the language is.

The above is not a terrible insight, but i suppose it should be useful for some application. Today, there's huge number of languages, each screaming ME! To name a few that are bubbled up by tech geekers: Arc, Clojure, Scalar, F#, Erlang, Ruby, Groovy, Python 3, Perl6. (for a big list, see: Proliferation of Programing Languages) So, if i want to learn another lang down the road, and wish it to be a joy to use, usable docs, large number of usable libraries, well supported, a community that is not looping eternally around estheticalities, then which one should you buy? I think Erlang, OCaml/F#, would be safe choices, while langs like Qi, Oz, Arc, Perl6, would be most questionable.

Legal Disclaimer: All mentions of real persons are opinion only.