[E-Lang] E Project, Documentation, and new programmers
zooko@zooko.com
zooko@zooko.com
Wed, 11 Apr 2001 16:43:55 -0700
I haven't used E (in any incarnation) enough to have formed an opinion of its
suitability, nor do I have any idea what OpenCola was doing with E or how
likely they are to do something with E in the future.
But when I joined the syntax discussion, the common understanding seemed to be
that we wanted to make whatever changes necessary in order to make E maximally
palatable to the most common kinds of programmers. I thought that this was an
excellent goal and I still think that achieving that goal would yield benefits
that would outweigh many costs.
On a more philosophical note, I believe that many kinds of design are impossible
to get right without practice -- that design and implementation are in these
cases mutually co-requisite and that if you try to do one first and then do the
other, you will fail.
In particular, I don't believe it is possible to design programmer-friendly
syntax for such a radical new programming language without actually
implementing a syntax and having some programmers try it, and then learning
from your mistakes and designing a new syntax.[1]
So in my view you cannot have both of: (a) a good programmer-friendly version
1.0 of your language that will be easily accepted by large numbers of
programmers, and (b) early adopters before 1.0 who need a stable, unchanging
language. But you *must* have (c) early adopters before 1.0 who can accept an
evolving language.
Now, obviously my own prejudice is towards having more programmer-friendly
syntax, as I imagine the future success of E being influenced largely by how
palatable it is to Java and C hackers, but I will remain interested in using E
even if the E cabal values this trade-off differently than I do.
Regards,
Zooko
P.S. You could also try to satisfy early adopters who need stability by
offering to support features that they are using even after those features are
deprecated.
[1] For a case in point, after my first foray into using E, I think that the
default ":none" guard is a major source of surprises that leave newbie
programmers unable to figure out what went wrong, and that it really ought to
be changed to a default ":retAny" guard that returns anything wrapped in a
"RetVal" object. I will soon publish my notes about that experience.