W3C home > Mailing lists > Public > public-webapps@w3.org > January to March 2010

Re: [widgets] Null in P&C

From: Doug Schepers <schepers@w3.org>
Date: Tue, 02 Feb 2010 15:44:01 -0500
Message-ID: <4B688E91.1030704@w3.org>
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 GMT

This archive was generated by hypermail 2.3.1 : Tuesday, 26 March 2013 18:49:36 GMT