Re: Is Lisp a Blub?
- From: Slobodan Blazeski <slobodan.blazeski@xxxxxxxxx>
- Date: Mon, 02 Jul 2007 00:24:27 -0700
On Jul 2, 5:38 am, Don Geddis <d...@xxxxxxxxxx> wrote:
Some thoughts spurred -- I am ashamed to admit -- by our local spammer JH.
It's better to ignore the trolls completely, you'll learn nothing from
them except bad smell of feeling dirty. Not to mention waste of time.
google a little bit and you'll find that in current state that's
Probably most of us are familiar with Paul Graham's hypothetical "Blub"
language, as described in the section "The Blub Paradox" in the middle of
http://paulgraham.com/avg.html
It was a hypothetical example to show how some programmers, only used to
languages less powerful than Lisp, might not appreciate the power of Lisp,
simply because they don't understand those features of Lisp that their own
favorite language lacks.
The core of the argument is here:
Blub falls right in the middle of the abstractness continuum. It is
not the most powerful language, but it is more powerful than Cobol or
machine language.
And in fact, our hypothetical Blub programmer wouldn't use either of
them. Of course he wouldn't program in machine language. That's what
compilers are for. And as for Cobol, he doesn't know how anyone can
get anything done with it. It doesn't even have x (Blub feature of
your choice).
As long as our hypothetical Blub programmer is looking down the power
continuum, he knows he's looking down. Languages less powerful than
Blub are obviously less powerful, because they're missing some
feature he's used to. But when our hypothetical Blub programmer looks
in the other direction, up the power continuum, he doesn't realize
he's looking up. What he sees are merely weird languages. He probably
considers them about equivalent in power to Blub, but with all this
other hairy stuff thrown in as well. Blub is good enough for him,
because he thinks in Blub.
When we switch to the point of view of a programmer using any of the
languages higher up the power continuum, however, we find that he in
turn looks down upon Blub. How can you get anything done in Blub? It
doesn't even have y.
By induction, the only programmers in a position to see all the
differences in power between the various languages are those who
understand the most powerful one.
Along the same lines, John McCarthy apparently once said something like:
Lisp seems to be a lucky discovery of a local maximum in the space of
programming languages.
Also paraphrased as:
Lisp is a kind of local maximum in programming language quality: not
necessarily the best thing possible, but hard to change in any simple
way without making it worse.
OK, so now the question. Common Lisp was formalized quite some time ago;
ANSI CL a bit later, but without many radical changes. Are there tools now
known in the abstract space of programming language design that "ought" to be
part of Common Lisp? That, if there had been an ANSI CL 2 effort, would
surely have been strongly suggested to get added to the language?
impossible.
I'd like to distinguish this from libraries or specific applications, which
are easy enough to layer on top of existing ANSI CL. Of course everybody can
name sockets, or web programming (XML parsers, HTTP servers). I'm thinking
of generic ideas in the description of computation, which apply across a wide
range of applications. Things like "iteration" or "recursion" or "CLOS".
There are some things clearly on the edge. All the existing trig functions
(SIN, COS, TAN) are highly useful to some small set of programmers, and
generally ignored by the rest. They could have easily been an add-on
library. (On the other hand, the basic numeric tower in Lisp, the automatic
conversion of numbers between data types, is far more fundamental to the
language.)
Regular expression matching, which is missing from the ANSI CL standard, is
probably of this "edge" class and would have been included in a CL2. Maybe
multiprocessing too.
So I'm wondering about language expressions that are so fundamental to
describing computation, that they "ought" to be part of the vocabulary of any
advanced programmer.
The previously mentioned spammer has suggested that pattern-matching function
definition is one such thing. As best I can tell, this seems to be sort of
related to CLOS generic methods, with different code called for different
argument lists, although the power of the expressions to choose the different
code that is called is greater with pattern-matching than with CLOS.
Static typing is another interesting corner case. Lots of pros and cons.
Qi seems to claim a Lisp-like language with "optional" static typing. Would
that be something that "should" be in a CL2?
It already there remember declare , the, fixnum etc
And the pattern-matching programming idea got me thinking of unification. At
one time, people touted Prolog as the future of programming languages. Very,
very different from Lisp, and hugely useful when it applies. I think Prolog
failed as a general purpose programming language, but should that technology
be part of the bag of tricks available to every Lisp programmer? Unification
and inference is probably a generalization of the pattern-matching idea.
Just curious if anyone here has thoughts on these possible additions to a
core (new) Lisp, or perhaps other similar topics that ought to be included.
ITERATE? SERIES? Partial evaluation? Call/CC?
There's many libraries that are relatively easy to find and
install,iterate, series, cells, qi....For a lot of the other mentioned
there is a library already ready to use or code exist or as in call/cc
feature is questionable, some like it some believe it doesn't worth.
So you already have a most powerfull toolbox from any other
lanaguages, you only need to build with it.
The only thing that I really believe that lisp is missing is erlang/
termite like concurrency, but time will tell.
For now we only need more apps written in it.
-- Don
___________________________________________________________________________ ____
Don Geddis http://don.geddis.org/ d...@xxxxxxxxxx
In bed the other night my girlfriend asked "if you could know exactly when and
where you would die, would you want to?" I said "no". She said, "ok, then
forget it". -- Steven Wright
.
- Follow-Ups:
- Re: Is Lisp a Blub?
- From: jimbokun
- Re: Is Lisp a Blub?
- From: cwarren89@xxxxxxxxx
- Re: Is Lisp a Blub?
- References:
- Is Lisp a Blub?
- From: Don Geddis
- Is Lisp a Blub?
- Prev by Date: Re: A problem statement (and a proposed solution)
- Next by Date: Re: using polyadic functions in Qi
- Previous by thread: Re: Is Lisp a Blub?
- Next by thread: Re: Is Lisp a Blub?
- Index(es):
Relevant Pages
|