prototype for operator proposal for review

Brendan Eich brendan at mozilla.com
Wed May 18 09:30:55 PDT 2011


On May 18, 2011, at 9:25 AM, Dean Landolt wrote:

> I think the argument for ease of static analysis applies just as well to human analysis (after all, our wetware makes for a poor interpreter). But I think the counter-argument is more compelling -- this is yet another construct our *tooling* would have to understand, and every new construct *substantially* ups the ante for fluency (ISTM the tax for each new syntax is approximately combinatorial for inexperienced developers).

I hear this sometimes, but not about languages with established syntactic complexity (e.g. Ruby). Indeed people learn Ruby and other languages by learning subsets. They learn via tutorials. They learn inductively until idioms need to be learned.

Meanwhile, syntax as better user interface, for usability ("developer ergonomics" applies to programming languages too), must matter. Not just keystrokes and chording for code production. That hurts (some of my RSI afflicted talented-programmer friends testify) but for *maintenance*.

And readability, which ultimately trumps writability but not in any zero-sum-game sense, can be aided by new syntax, compared to using library methods and functions.


> The imperative alternative, on the other hand, only requires learning the semantics of a new API, not whole new constructs and how they compose (regardless of how nicely they compose). I personally believe this matters a great deal, and not just for newcomers.

I don't see why you assume newcomers learn all the syntax, all at once. I did not when I learned a great many languages.


> As I've heard /be suggest, some of javascript's success can be owed to its lack of syntactical novelty. I'm not saying all new syntax is bad syntax, but at the very least the committee should be optimizing for humans first.

JS mainly had first-mover and it "did not suck" so badly that it lost to a second mover -- it stuck. We are not removing old syntax. So people can learn the old syntax if they like.

Then the objection moves from pedagogy to maintenance: "I don't want to have to maintain paren-free code", e.g. But you always have choices. Refuse, parenthesize were allowed, negotiate. Syntax is partly social.

/be



More information about the es-discuss mailing list