[racket-dev] P4P: A Syntax Proposal
I see two different points in this proposal.
1. Indentation matters. This point is entirely orthogonal to syntax.
It applies to Racket and Honu as well.
2. Syntax matters. But I don't understand whether the proposal is
really for students only or for students and then a lot more.
If it were for the former, I wouldn't expect any discussion of
Racket macros in the design document. I'll treat it for now as
"it is initially for students but it should accommodate everyone."
On Jul 29, 2010, at 2:09 PM, Shriram Krishnamurthi wrote:
> I think parens are synecdoche.
This is true and easier said than with a rarely used word.
Programmers who complain about parens mean something larger:
-- the entire syntax (it doesn't look traditional)
-- the entire semantics (function calls dictate nearly everything)
-- the way we program (inductive structures have more weight than indexed ones)
and more and certainly all the 'syntactic' symptoms that come with this:
-- nested expressions show up a lot; how to read them
-- array/for-loop "patterns" of programming aren't working, how to start?
-- why this focus on data representations, can't we just use arras?
And I am sure the list of such make-me-feel-bad unfamiliarities goes on.
Assuming that the lack of syntactic familiarity outweighs the others
-- something we don't know for sure -- I think the next question
to ask is how much distance to 'real' or 'familiar' syntax these
'targeted' people can tolerate.
After reading the entire document and looking at the sample
programs, I remain unconvinced in two ways:
1. I tend to agree with Eli's general point and his arithmetic
example illustrates this point really well.
2. I doubt that we can figure out the usefulness of this new
syntax on this mailing list.
I really think we need a reasonably large-scale experiment and that
worries me. With such an experiment a lot of things need to be considered:
-- say we stick with +(1,2,3) and people don't come, what went wrong?
they considered +(1,2,3) too distant from 1 + 2 + 3
they didn't like identifiers such as posn-x
they disliked the semantic distance, i.e., they wanted to
write p.x not posn-x(p) because they think they don't
care when p is not a posn struct
in general, who knows what to conclude from a failure
-- conducting this experiment on students will lead to very
different results than conducting it on 'real' programmers
Where should we start? Personally I think students are the
_wrong_ audience. They can cope with () and this prefix
notation in the middle is something they are guaranteed
_not_ to encounter elsewhere.
-- how much work do we have to invest to make it so robust that it
works as well as Javascript?
I think you have a nice prototype and it's roughly were
Honu was a while back. But we need much much more to
get the full power of Racket with P4P.
And I am sure you can imagine many more questions that we
should discuss before we spend the resources.
I for one am looking forward to a robust discussion of this
topic at PLT day.
-- Matthias