[plt-scheme] The perfect teaching language--Is this too much to ask for?
On Sun, Jun 14, 2009 at 2:24 PM, Shriram Krishnamurthi<sk at cs.brown.edu> wrote:
> My talk was meant to be at least partially rhetorical, and those
> bullets were not meant to be taken *too* seriously.
That much is clear. It was a good talk, though. Thanks for making it
available with the audio file.
> I don't think you can apply glib arguments like Don Norman's to a
> situation complicated like language syntax.
I don't think it is a glib argument at all, perhaps my very short
rendition of the argument is glib.
Concrete language syntax is meant for humans after all, so I the
perspective from user studies is very relevant.
By the way, if some of you have pointers about human factors in
programming language design, I am very interested in studying that,
perhaps even as a main focus in graduate school.
> First of all, Python too
> has various similarities (good heavens, it uses ASCII syntax for
> *everything*); second, Scheme has only a few concepts; third, your
> argument is sort of bogus, because
>
> (x y z)
>
> cannot be a macro unless you've defined `x' to be a macro keyword.
OK, but there are numerous macros or special forms that are
pre-defined in Scheme, and many of them look like (x y z) but have
different evaluation rules.
> There are no "higher-order" macros, so if it's a macro, it has to be
> the name of a macro keyword, nothing else. This is why, fourth, this
> is virtually never a problem in practice. People program in a
> well-subscribed (super)set of Scheme, and that's that. In PLT, we
> make this (super)set completely explicit with the #lang qualifier.
>
> It is true that if you don't know what macros are operational, you can
> be in some trouble. If you're in DrScheme, this problem goes away.
>
>> Probably there have been worthwhile discussions of this in the past.
>
> Not to be too cynical, but precisely this discussion happens on some
> parenthetical list or the other about once every two years. In
> response, I feel there should be a new kind of FAQ called a FooAQ. In
> a FooAQ, you only list the (frequent) questions. The response is
> always the same: "Foo". Meaning, "We've had this debate for decades,
> and nobody has resolved anything because everyone (eventually)
> understands the trade-offs". (Yes, "Foo" is a macro.)
Prof. Shriram, I never meant to convince you or anyone else here that
the "usability cost" of parenthetical syntax outweights its benefits.
Even a newbie like me understands the trade-off and appreciates the
benefits.
I just wanted to point out that the "simple" syntax of Scheme does not
make it necessarily easier to read than other syntaxes that are not so
regular.
Cheers,
Luciano