|
|
On 14/05/2011 06:49, Neeum Zawan wrote:
> http://www.winestockwebdesign.com/Essays/Lisp_Curse.html
>
> Reminds me of an Arthur C. Clarke story about how a civilization lost a
> war due to having superior weapons...
He makes a valid point.
It's great having a powerful programming language. On the other hand, it
does tend to discourage code reuse. Why reuse an existing implementation
when it's so trivial to reimplement it yourself?
For example, Haskell currently has 5 incompatible string-manipulation
libraries. And everybody seems to think this is somehow a "good" thing.
I appear to be the only person to realise that this is actually a very,
very, very *bad* thing.
I don't want to use 5 string libraries; I want to use _one_. I want
_one_ library to cover all my needs. I want all the other libraries that
I work with to use the same string representation as each other and as
me. And I certainly don't want to have to waste time comparing 5 similar
but subtly different libraries to find out which one has the nicest API,
best performance, and fewest bugs, based mostly on hear-say and guesswork.
Moreover, having 5 open-source projects just means that each one gets
one fifth of the userbase, and therefore testing, feedback and code
contributions, compared to what would happen if there was only one library.
Apparently nobody else sees it this way. They seem to think that having
multiple implementations trying to compete with each other means that
each of them will end up mean leaner and fitter as a result. Which would
work if people chose libraries by some metric more deterministic than
flipping a coin, or just using what everybody else uses.
To anyone who thinks competition ensures a superior technical outcome, I
present a counter-example: Haskell exists, yet there are people still
coding in Java and even COBOL. Technical superiority is *far* from being
the only criterion for selecting a technology. (!)
So, yes, he makes a very valid point.
On the other hand, I take issue with the rather obnoxious comment that
it only took one random Lisp hacker to implement Qi, a language more
powerful than Haskell, while it took an entire committee of experts to
design Haskell.
This cynically suggests that Qi is somehow more powerful than Haskell
BECAUSE OF LISP. This is of course nonsense.
Recall why Haskell exists: At the time, there were half a dozen
essentially equivalent but syntactically different programming languages
in active use, which was fragmenting development effort. [See how this
is curiously related to the present topic?]
The reason it took a committee to design Haskell is *not* because it's
"hard". (For goodness sake, the stated design goal is basically to
produce a straight copy of half a dozen pre-existing, already worked out
language designs!) It took a committee because they wanted everybody to
agree, to keep all the best unique features of the languages they were
replacing, and to make a consistent whole.
Seriously. Designing a programming language has little, if anything, to
do with the language in which you're going to implement the tools for
it. It's not like using Lisp is what makes it possible to build a
language more powerful than Haskell. Consider Epigram or Agda, both of
are [drastically] more powerful than Haskell, both of which are
implemented *in* Haskell, both of which have pretty small codebases, and
both of which were implemented by a development team consisting of
strictly less than 3 humans.
To claim that Lisp is what made Qi so easy is simply trolling.
Post a reply to this message
|
|