[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: What is a lightweight language

Simon Cozens <simon@simon-cozens.org> writes:

> On Tue, Dec 11, 2001 at 08:05:59PM -0800, Paul Graham wrote:
> > (My guess is that if you do end up designing a language
> > that all the best hackers like, everyone else will get
> > dragged along, psychological hurdles or no.
> Have you ever wondered why you're all hacking Scheme and
> few other people are? :)

I have a different take on this issue than Paul Graham.  I do not think
that the opinion of "expert hackers" is the long-term driving force
behind any language's popularity.

First, total newbies don't seek out "expert hackers", who are often the
worst teachers.  They'll seek the most available person with the
knowledge they need.  The languages newbies learn will statistically
tend to be languages that are already in popular use.

Second, most people with programming experience will not explore a
language just because an "expert hacker" uses it.  A few curious people
will do so, but the majority will not.  E.g., Scheme is viewed as a tool
for people who can build the numeric tower from lambda, eq?, variables
and chewing gum.  Not for me!

Programmers' migration from one language to another works by a win-stay,
lose-shift strategy.  Like all other creatures with a brain, if a
behavior feels ok, we repeat it.  If it hurts, we try something else.
Once we establish a pattern of behavior, some pain, or perception of
losing, is required to change it.

Shell programming with awk and sed hurts.  Other aspects of Unix shell
programming, e.g. that variable names start with $, do not hurt.  Perl
won over programmers by making the kind of tasks previously done with
awk/sed hurt less.  At the same time, it retained much of the syntax of
Unix shell scripts, accommodating the win-stay side of things.

When you see someone of similar programming ability as yourself winning
in an area where you're losing, *then* you'll explore a language they're
using.  If it fits with win-stay, lose-switch, you'll change.

Java worked this strategy by changing only the worst aspects of C/C++
syntax.  I sometimes look at my Java code and ask, "How did I write all
this C without any pointer arithmetic?"  It fits with win-stay.  Through
various class libraries they did the lose-shift part.  Database
independence in C hurts.  JDBC does not.

Win-stay, lose-shift.  Perl is like shell script, but less painful and
more powerful.  Java is like C, but less painful and more powerful.

Here's where I think Scheme/Lisp's rising popularity will come from: As
Shriram illustrated in his LL1 talk, s-expr syntax is like XML, but less
painful and more powerful.  For ambitious web developers, it's clearly
the next big thing.

<brlewis@[(if (brl-related? message)    ; Bruce R. Lewis
              "users.sourceforge.net"   ; http://brl.sourceforge.net/