[racket-dev] P4P: A Syntax Proposal

From: Matthias Felleisen (matthias at ccs.neu.edu)
Date: Fri Jul 30 10:52:10 EDT 2010

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

Posted on the dev mailing list.