On 1/30/14 10:20 AM, Forrest L Norvell wrote:
So far, this has been a very straightforward spec to implement.

Forrest,

I think I may have been a bit unclear, my apologies.

I think we all agree that ES-style specifications are in fact more straightforward to transcribe into an ES implementation.

What is harder, in my experience, is understanding whether the specification actually says what it means to say and determining whether there are bugs in the specification. This arises to some extent from the core functionality being partially obscured by a fair amount of boilerplate.

Now I agree this is somewhat subjective. Some people prefer to have all the complications explicitly written out, both in specifications and in code, while others prefer reusable tested black boxes that have certain defined behavior. The former approach is much more verbose and can thus hinder understanding of the big picture. The latter approach involves in-depth understanding of the black boxes to understand the details. In practice, both the WebIDL and ES styles use some mixture of the two; what differs is the exact set of black boxes used. The ES style black boxes are mostly more fine-grained than the WebIDL ones.

I wish I had a good way to combine the strengths of the two approaches more than existing specification formalisms do right now. In some ways, something that allows looking at higher-level definition in terms of black boxes and then on-demand (e.g. a "expand this" or "expand all in this section" link) allows the reader to inline the black boxes to see all the details might be a possibility. That would involve creating some tooling, obviously.

As an implementor, I find this all a refreshing contrast to trying to
wrap my head around WebIDL

I honestly think that this (just like other people's experiences with trying to wrap their heads around ECMASpeak) is at least partially due to familiarity, or lack thereof, with the black boxes being used as specification primitives... Partially it may be due to the wrong primitives being used, of course, which is a real problem in both styles I believe.

I have nothing against formal specification methods per se, but, at least for 
things
that are implementable in pure JavaScript (as Domenic's proposal is)

It's not, actually, since it requires asynchronous callbacks which do not currently exist in pure JavaScript. This is not quite a nitpick, since properly defining asynchronous callbacks is a fairly nontrivial matter with security implications, as I already pointed out in this thread.

-Boris
_______________________________________________
es-discuss mailing list
[email protected]
https://mail.mozilla.org/listinfo/es-discuss

Reply via email to