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

Re: XML as a transition to s-expr



Bruce Lewis wrote:
> 
>...
> 
> I think the only thing standing between Lisp (at least Scheme) and the
> most novice programmers is an hour with a halfway-decent tutorial.

I'm going to risk flamage and say that Scheme (not MZScheme or BobScheme
but R5RS Scheme) does have usability problems. I came to that conclusion
watching the DSSSL experiment. It looks to me as if you are going to
replicate the experiment with BRL.

 * the parens are poor for error reporting. You could imagine a Lisp
that would report syntax errors much more reliably:

(if (brl-related? message)    
     "users.sourceforge.net"
     "alum.mit.edu"
if)

As it is, Scheme errors can be reported miles away from where you
actually forgot a paren.

 * the Lisp community has an attitude, totally at odds with, let's say
the Perl community, that you can get around this problem with the "right
tools" that will do brace-matching for you. Python people have this
attitude to some extent also, but I'll note that most editors (even
Windows notepad) come out of the box configured to work okay with
Python.

 * the parens do not sufficiently denote "parts of speech". Consider the
two examples described by this URL:

http://www.cs.utexas.edu/users/wilson/schintro/schintro_21.html#SEC21

if test1 then
   action1();
else if test2 then
   action2();
else if test3 then
   action3();
else
   action4();

versus.

(cond (test1
       (action1))
      (test2
       (action2))
      (test3
       (action3))
      (else
       (action4)))

 * car, cdr, cadr, cons etc. are not exactly newbie friendly names for
core functions.

 * most people learn procedural programming in high school. They don't
learn the functional, recursive style. Scheme strongly encourages you to
use the functional style. If you try to increment a counter and index
into a Scheme list, you'll have terrible performance because they are
implemented as linked lists, not stretchy arrays.

 * we've already discussed how important libraries are. "Scheme" can't
become popular until I can download any random scheme and expect a rich
set of libraries. Some specific Scheme distribution might become
popular, I guess, but then you've got a fragmented community with books
that apply to Scheme versus those that apply to the distribution, etc.

 Paul Prescod