- From: Doug Schepers <schepers@w3.org>
- Date: Tue, 02 Feb 2010 15:44:01 -0500
- To: Marcos Caceres <marcosc@opera.com>
- CC: public-webapps <public-webapps@w3.org>
Hi, Marcos- Marcos Caceres wrote (on 2/2/10 7:29 AM): > > I had a discussion with an implementer who was a bit confused about the > concept of "null" in the specification. The problem is that I kinda > wrote the spec as if it was to be implemented in Java or JavaScript. > This has resulted in confusion wrt how "null" is to be interpreted in > languages that don't have that concept/data type. > > So, in an effort to clarify that, I've added the following to Processing > Rules section of P&C: > > [[ > In the following algorithms, the concept of null is used as a special > symbol to indicate that a variable has no data associated with it. For > example, "let x be null" or "if y is empty, then return null". > > Note: Although ECMAScript and Java support null as a native value type, > there are some programming languages that have no notion of null or > where null is problematic (e.g. C++). For those languages, it is OK for > an implementation to substitute the null for some other value or symbol > (or for nothing at all). For example, it is ok to have the value 0 > represent null for the height of a widget as the height of a widget is > defined as a non-negative integer greater than 0. In such a case, 0 > would behave as if it is null. > ]] It seems strange to me to use language like "OK" in a spec, since it seems overly casual and definitely not normative; I suggest you replace all instances of "OK" with "awesome". Failing that, maybe wording like this might better capture the interop aspects? We want all the C++ implementations to behave the same, even if they are crippled by their language. :P (I used to be a C++ programmer... I thought it did have a NULL, but I guess that's only for pointers.) [[ In the following algorithms, the concept of null is used as a special symbol to indicate that a variable has no data associated with it. For example, "let x be null" or "if y is empty, then return null". Note: Although languages such as ECMAScript and Java support null as a native value type, there are some programming languages that have no notion of null or where null is problematic (e.g. C++). Implementations in these languages should substitute a language-specific value or symbol which is functionally equivalent to null, or if no equivalent exists, to have no value at all. For example, the value 0 may represent null for the height of a widget, since the height of a widget is defined as a non-negative integer greater than 0. In such a case, 0 should be treated as if it were null. ]] I'm not satisfied by that wording either, to be frank... I think it needs to be precise about the value for each language that's affected. I also think we need to make a distinction between the implementation language and the content language... the content should not get a '0', right? It should get 'null', I'd think. Regards- -Doug Schepers W3C Team Contact, SVG and WebApps WGs
Received on Tuesday, 2 February 2010 20:44:03 UTC