Has the author not heard of Roman numerals?
For context, NULL/missing was a type. N/A was a type (i.e. a question irrelevant to someone). I can't remember the 3rd, and of course not the additional (4th or 5th) type he was proposing. If anyone knows a good resource that describes this problem domain, that would be much appreciated. I've been haunted for over 20 years by the regret of not fully appreciating what he was trying to explain to me, both because I could've learned something that day, but also because I almost immediately felt like an a*hole for not showing enough interest in and respect for a piece of scholarly work he was clearly proud of and wanted to share with me.
EDIT: I think the third pre-existing type was for a situation where someone abstains from answering a question like, "Sex: male/female", because they consider themselves neither. So something like an Other type. In retrospect this was presumably related to set theory, and he felt there was a gap in the pre-existing formal models.
“Don’t know”: this has a value, but we do not know it could be one. Also, within N/A, one _could_ discriminate between “not available yet”, “will never be available”, “was available once, but was lost”, etc.
Depending on the domain, others could be
- “Can’t tell”: this has a value, but you are not allowed not know it (unlikely, as you likely also shouldn’t be allowed that the value exists)
- incomputable: this has a value, but it isn’t possible to know it
I think generic systems shouldn’t try to capture such domain specific things, but allow for implementing them. SQL shouldn’t even have null, but have enums and product types on top of which you could create it and functions supporting it.
NI No Information - the default, it is unknown and why it is unknown is also unknown
UNK Unknown - the most common other than NI
ASKU Asked but Unknown
NASK Not Asked - we don't know because we didn't ask
MSK Masked - hidden due to privacy or legal etc
NA Not Applicable
NAV Not Available - for example patient might be unconscious or doctor might be unreachable, temporary
But you can imagine two kinds of "don't care" values, too: the complacent one, and the assertive one. The complacent one is the one we have in Karnaugh maps, which says, "it doesn't matter what I am, so if it matters to you what I am, I'll be what you want". But the assertive variant says, "I don't matter, and if I matter for your calculation, your calculation clearly doesn't matter either."
> SQL shouldn’t even have null
But it needs to, because it needs to represent half of a result record not existing, i.e. on a LEFT JOIN.
It’s common for surveys to encode various null values. ‘Refused to answer’, ‘Did not know’, ‘Not applicable’, ‘Illegible response’ etc, although there is no standard way to do this.
The SAS language allows you to use multiple custom missing values, but this is not widely known and I’ve never seen anyone do it.
On the other side, ancient Egyptian numerals did have a zero, but it was only for nothingness. But they did not have a placeholder zero, because their systems was similar to Greek and Roman numerals.
I highly recommend suffering through both early and late Wittgenstein (only wrote 2 books and essentially invented one of the 3 branches of philosophy).
Expect to only understand 10% of what he says, but that is normal.
Separately, pragmatism by William James is an easy 4 hour read and you can have 2/3 of the branches of meta philosophy.
> Say you’ve found 17 numeric symbols. You might infer that the writing used a base 20 system
Reals numerical systems are much more diverse than that. For instance, Babylon used a base 60 (hence our minutes and hours). But there were much less than 60 numeric symbols, since they had a symbol for 1 and 10. So 2 symbols for a base 60!
> never appears at the beginning of a number, you might infer that is a zero
In the later times Babylonians had a kind of zero, but it was very limited, only used to point the lack of a number between two, i.e. "2∅1" but never "21∅∅" which was written "21" (so numbers were ambiguous if the context didn't give the magnitude).
And Babylonians had floating numbers. So "4" could also mean 4/60.
What I mean is that Babylon had a zero, but it only covered a part of the positional modern zero. They could not write 0 - 3. And if their zero had been fully positional, there would have been numbers beginning with it, i.e. sexagecimals floats.
It's oddly similar (obviously not identical) to bi-quinary: https://en.wikipedia.org/wiki/Bi-quinary_coded_decimal .
Was it really like this or could it have been like "21 h" meaning "2100"?
Did they write things like "5 talents of grain"?
I think it was in a paper which was about how many times the bijective base system had been independently reinvented by mathematicians.
One of the best I can recall.
Well, this is plainly false.
The symbol for ten is 十. Heck, there's also a symbol for twenty, 廿, and it exists despite the number system being base 10. Anything that has to be written a lot is likely to have a convenient written form.
If you're curious, zero is 零. Successive zeroes are combined, so 一千零一 is 1001. 5147 would be 五千一百四十七. 10, as previously mentioned, is 十.
I'm not sure that if you intend to captured the structure of chinese symbols, you wouldn't to make the radicals something below symbols. Then 廿 wouldn't count as a single symbol here, but rather as a concatenation of two 十, i.e. the same as XX is 20 in roman numerals.
(As a matter of character etymology, you are right that 廿 and its variant form 卄 come from combining two 十. But that can't make it "two symbols".)
Why not? Same like I can decompose "combining" into "combine" and "-ing" or "decomposing" into "de-", "compose" and "-ing"?
Characters have structural features that can be identified and named. But at that level of the writing system, meaning isn't present.
> This is not true of the graphical components that make up Chinese characters; the bottom level at which any meaning can be assigned is the entire character.
I don't speak Chinese myself, so I'm a bit unsuited for the discussion, but a Chinese friend told me that the characters are composed of base symbols. You can't necessary guess the meaning from that alone and sometimes they changed shape a lot over time, but that is true for other languages as well.
Maybe "-ing" is a less ideal example, because it suitability to be combined depends on word class (verb), and it actually changes the grammar, not the word itself. Maybe a better example is the "com-" in both "combine" and "compose". It does has some meaning on it's one, but what the actual combined word means is not necessarily directly inferable and has changed over time.
"Five thousand one hundred four tens seven". So each order of magnitude is explicitly labeled. Where's the positional part?
Recall that the use of zero is necessitated by using positional notation, and that is what we see here: you must explicitly zero any magnitudes you're not using. (At least, any that are below one you are using.)
I should also note that while there is no symbol for the number 10,000 - there is a place value, but the number is 一万, not 万 - the number 10 is still written 十.
* Technically you could read "k" as a symbol for thousand, "M" for million, "B" for billion, and "T" for trillion.
When you're writing code, you can express any concept except that of an unfilled hole. We've rearranged every part of the coding process in a twisted-up way, all for the lack of a way to express lack.
If you want to be more clear about what I mean, look to tools which can express holes like https://scratch.mit.edu and https://hazel.org. They give the feeling of letting things snap together like lego bricks. Indeed, lego bricks themselves function because of the negative space (the holes) in them!
I feel like somewhere between zero, null, false, a null pointer or an uninstantiated reference we have a few methods to define nothing.
Sure! Like mad libs if you couldn't be sure if _____ was a missing part or the text what was meant to be there. In a mad lib it's obvious, but with code it may be less obvious. You certainly can't just use _ with code. Even the nil code point is allowed in some programming languages' source code (e.g. rust).
Both are (fairly) programming language agnostic, but in the context of an editor, would become specific. The editor would have to know _how_ to represent them in the code’s language.