Short poem,
Nothing. We don't know what, is nothing, It could be anything. We don't know, if nothing, can be anything, anything, could be nothing. Anything.
Is null nothing? If so then null is anything. And I believe that is true, in the sense that where null represents the unknown, it may well be anything. -- PeterLynch
Do you mean void * instead of null?
How about nil?
TypelessLanguages? allow a far simpler perspective on null, and mine comes from that. In such a language, there are only 2 'null' conditions - empty, and undefined. Null becomes a possible 'valid' value for any variable. So I cannot answer you on your C specific reference like nil - which if I remember is the term for a numeric null? But ignoring all the technical detail, I find it useful to think of null as the rest of knowledge - the things we do not know yet - the things we have not named yet - the things we have not found yet. That makes it easy for me to grok the concept of partially filled rows in the database, for instance - if the price stored is null, I am comfortable with it and know what to do with it.
It wasn't C specific since I don't come from a strong C background ;-) ...I think nothing has to be something (i.e. anything) because like you say, an empty database has to be filled.. You have to be filling something.
Nice, have been thinking a while on Nothingness before and came to the conclusion that Nothingness does not represent Emptiness, but in fact represents Everything that might be and Everything that was. As such, Nothingness in terms of a pattern would be better described as NothingnessIsEverything?, regardless of time and space. Mapping this to programming languages or data is sort of difficult, as to explore the unknown of Nothingness tends to be quite difficult in that Anything from Nothingness cannot be exactly defined. Yet however, bearing the thought in mind that Everything eventually boils down to Nothingness and that Nothingness is purely based on the uncertainty principle defined elsewhere. Null or Nil is not Nothingness, except when being expressed as 1/0 which is, in fact, undefined and, when being projected unto a Cartesian coordinate system, will yield arbitrary values for y in y(x) = 1/x, where x = 0. At least, mathematicians cannot exactly define what Anything in Nothingness is, and this gives me some relief. Or does anybody know how to solve 1/0? C defines void as a datatype of arbitrary or unknown type, yet it points to a location in dynamic memory space, a space that which can only be emptied but not freed, emptying means simply putting nulls to whereas freeing exists only in terms of freeing up more memory, i.e. removing it from internal non-empty memory datastructures of the kernel's memory manager, yet, the memory or rather its contents is still not really freed but is in undefined state instead. Void is a construct that allows for arbitrary pointers to be passed to sub- or co-routines, that will then decide based on knowledge gained from the memory location, or, in case of a hierarchy of derived and therefore somehow related C-structures, to allow arbitrary casting from one type of structure to another one. This, however, will lead you to trouble in case differently structured structures are passed or the sub- or co-routine takes for granted that at least a given type-instance of a structure is passed as an argument. --CarstenKlein
"Or does anybody know how to solve 1/0?" - Well, not that I know of. But applying the TypelessLanguage? perspective of null - empty or undefined - then a result of null for any calculation which includes a divide by zero would be an appropriate response in many applications. -- PL
Yeah, provided that NULL or NIL or EMPTY or UNDEFINED is somehow typed, that is, meaningful in the context of application. See the NullObject pattern for an example. -- CarstenKlein
See also: WhatIsNull?, ZeroIsWrong