Newsgroups: comp.lang.dylan
Path: cantaloupe.srv.cs.cmu.edu!rochester!udel!news.mathworks.com!news.kei.com!bloom-beacon.mit.edu!usc!news.cerf.net!netlabs!lwall
From: lwall@netlabs.com (Larry Wall)
Subject: Re: Popularity of a language
Message-ID: <1995Jun23.013029.15242@netlabs.com>
Organization: NetLabs, Inc., Los Altos, California.
References: <1995May31.194257.26804@chemabs.uucp> <mdc.1152586641B@sundog.tiac.net> <19950611T125034Z@naggum.no> <DAHG10.1AvI@bocanews.bocaraton.ibm.com>
Date: Fri, 23 Jun 1995 01:30:29 GMT
Lines: 98

In article <DAHG10.1AvI@bocanews.bocaraton.ibm.com>,
 <Larry_Kyrala@bocaraton.ibm.com> wrote:
: In <19950611T125034Z@naggum.no>, erik@naggum.no (Erik Naggum) writes:
: >this is a prevalent belief.  I can see that it seems to be true from what
: >happens to language acceptance, but syntax is never a hard hurdle to
: >overcome.  if it were, then syntactic disasters like C++ and Perl would not
: >have any users.  it appears, however, that arbitrarily counter-intuitive
: >syntaxes win big, and simple, clean syntaxes lose.  so, too, with Dylan.
: >
: >do you have any theory to explain this strangeness in public acceptance?
: 
: 
: Only one, that the field of computer science is finally 
: taking steps toward becoming a mature science.  There
: is nothing *that* strange about C++'s syntax, nor I suspect
: in Dylan's.  What is strange about them is that the underlying
: power of their abstraction is not obvious at a low level,
: any more than a differential equation versed in terms of
: simple algebra would be.
: 
: However, to someone who knows differential equations,
: both are obvious, even if the algebraic answer is less
: conscise... less elegant.
:
: The structures we seek to control and define are complex.
: There is no reason to think that they can be "simplified" 
: into one common language, for the simple reason that
: languages evolve from their usage.  Different sciences all
: have their "languages", with many dialects at different
: levels, because their usage varies.

This is well thunk.  But let me take it a step further.  Languages like
C++ and Perl are attempting to make *multiple* levels of abstraction
available simultaneously.  This means, in general terms, that you end
up with some fractal redundancy.  So-called "simple, clean" syntaxes
are geared more towards orthogonal problem spaces rather than fractal
problem spaces.

Human language, just like mathematics, tends toward the fractal.  You
can express concrete notions without defining them all in terms of
underlying abstractions.  But the abstractions are also available for
when you need them.  Perhaps fractal is the wrong word, since that
implies more self-similarity than I mean.  But there's definitely
something tree-structured (or plex-structured) there.  Computer
scientists seem to love tree structures except when they're designing
languages.  They think there should only be one way to get from here to
there.  They would like to require jets to fly only east/west or
north/south.  And connect to your doorstep.  Forget the bicycle and
bus on this end, or the taxi on the other.  Not to mention a few moving
walkways in the middle.  No, jets can go anywhere, so we'll just use
them.  They're *powerful* enough.

A language dealing with multiple levels of abstraction is going to be
more complex syntactically than a language that tries to fit everything
into a procrustean number of infinite dimensions.  In some global
sense, such a language can be claimed to be "counter-intuitive".  But a
language like Perl can be globally counter-intuitive (to a computer
scientist), yet locally intuitive to an ordinary person.

Reductionists prefer symmetry, and get annoyed when something fits like
a glove.

Note: I'm not claiming that Perl is perfect in this regard, but then,
I'm still working on it...  :-)

: The need for this is apparent in mathematics, why not in
: computer science?  I think it's because computer science
: is a very young science, just beginning to realize what the
: older sciences have known, that you cannot reduce certain
: levels, because they are a factor of magnitude more intricate...
: they require different and stronger abstractions, not
: simply better macros.

The weaker abstractions are also required, for most people.  Most of
the time, the weaker abstractions are strong enough.  In fact, for
everyday wear and tear, the number 1 is a "stronger" abstraction than
any definition resembling "the set containing the fewest elements that
is not the empty set".  Small numbers are most easily defined by
holding up fingers.  Small people know this.

: Not everyone will or wants to understand these abstractions,
: but there is certainly no obligation to make such power 
: understandable without effort, without discipline... in fact,
: I highly doubt whether such a thing is possible.  However,
: we shouldn't remove the "simpler" dialects that we build
: upon either.

Precisely.  But not everyone will or wants to understand this abstraction.  :-)

: Case in point:  the majority of C++ programmers continue to 
: use it as a beefed up C... the underlying abstractions have been
: missed entirely.  C++'s popularity has more to do with
: the fact that it supports C, than any of C++'s superior
: abstractions.

It's Officially Okay to program in a subset of Perl.  In fact, it's
almost a requirement.

Larry Wall
lwall@netlabs.com
