How would you know whether an ancient culture had zero?

(johndcook.com)

57 points | by ibobev 3 days ago

8 comments

  • lisp2240 7 hours ago
    Zero has two roles: as a positional placeholder and as a cardinal value (nothingness or net-zero). This only addresses the former.
    • amelius 1 minute ago
      The article has quite some assumptions. They also assume a base-N system with big-endian lexicographic ordering from left to right.

      Has the author not heard of Roman numerals?

    • rendaw 2 hours ago
      Doesn't the placeholder imply nothingness? E.g. 10 means 1 ten and 0 ones.
      • idoubtit 52 minutes ago
        No, that implication is not automatic. The Babylonian numeral system evolved over milenaries, and the simple space noting the absence of a digit between two digits was later noted by a "0" digit. But this symbol was never used by itself, so it did not mean "nothingness". In the same way, a civilization having the concepts of addition and subtraction does not automatically induce the concept of negative numbers.

        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.

    • j16sdiz 7 hours ago
      Afaict, most ancient civization have conception of "nothingness" or "emptiness". The dispute is often whether they consider it as a number or not
      • philipov 4 hours ago
        We have both. Zero and Null are different data types.
        • wahern 3 hours ago
          I once had a statistics professor (teaching a programming class using, IIRC, SAS) in college who worked as a data analyst in the federal government, possibly the Labor Department. Part of his job was working with polling and form data. After class he once tried to explain a paper he wrote arguing for an additional null-like type in the formal analytics system in his domain. I was young and stupid (took it as an easy programming course; was not skilled at abstract math) and impatient (wanted to meet up with friends at a pub) so didn't follow along well enough to even properly remember his argument, let alone understand it. But I've always distinctly recalled that he was arguing for a 4th, or possibly 5th type, yet whenever I survey the literature I've only found at most such 2 types. But I've probably been looking in the wrong places.

          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.

          • Someone 2 hours ago
            > 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

            “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.

            • adzm 1 hour ago
              This reminds me of the sixteen or so different flavors of null used in HL7! https://terminology.hl7.org/en/CodeSystem-v3-NullFlavor.html though in practice I've only seen a handful of these. Notably:

              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

            • 1718627440 21 minutes ago
              How is “not available yet” different from "Don't know"? How is incomputable different from “will never be available”?

              > 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.

    • Beijinger 5 hours ago
      [dead]
  • idoubtit 2 hours ago
    The question is the title is left unanswered by this shallow article. At least it's not AI slop since there are spelling mistakes ("You’re best hope").

    > 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.

    • leoc 1 hour ago
      > 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!

      It's oddly similar (obviously not identical) to bi-quinary: https://en.wikipedia.org/wiki/Bi-quinary_coded_decimal .

  • jamesjolliffe 39 minutes ago
    Is this the perfect clickbait title for nerd sniping?

    One of the best I can recall.

  • gmuslera 9 hours ago
    Looks like translating a positional numbering system from ancient cultures than ruling out or not if they had the concept of zero. It may be a single use symbol, here is nothing, instead of being part of bigger amounts. Numbering systems doesn't have to be positional (nor go too far).
    • whatsThisBtn4 8 hours ago
      Gosh I love Wittgenstein for this.

      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.

      • verisimi 2 hours ago
        What do you think Wittgenstein would say?
        • heresie-dabord 2 hours ago
          Alas, Wittgenstein can only explain it like you are 0.5.
  • thaumasiotes 4 hours ago
    > If you knew somehow that some symbol corresponds to 20, then you’d know they didn’t use base 20 because base b doesn’t have a single symbol for b.

    Well, this is plainly false.

    • CamperBob2 4 hours ago
      I suppose Roman numerals would be one counterexample, but are there any number systems based on place/position value that qualify as counterexamples?
      • wongarsu 1 hour ago
        English number words are positional-ish and base 10, but have special words up to 12, as well as 100, 1000, 1000000
      • thaumasiotes 4 hours ago
        Of course. The Chinese number system is base 10 (or, if you scale way up, base 10,000) with a positional writing system.

        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 十.

        • 1718627440 15 minutes ago
          > Heck, there's also a symbol for twenty, 廿, and it exists despite the number system being base 10.

          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.

        • card_zero 1 hour ago
          > 5147 would be 五千一百四十七

          "Five thousand one hundred four tens seven". So each order of magnitude is explicitly labeled. Where's the positional part?

  • conartist6 6 hours ago
    What I wonder is: why has nobody noticed that code editors lack a concept of 0?

    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!

    • mungoman2 4 hours ago
      This could be interesting but too vague for me to understand what you mean. Could it be explained more clearly, or link some blog entry?
      • conartist6 4 hours ago
        Yeah, I will. I'm being a bit coy because I already have a very specific solution in mind which would be a lot like Scratch, but unifying those ideas with syntax. It should be fully ready to share quite soon.
    • protocolture 2 hours ago
      I dont understand.

      I feel like somewhere between zero, null, false, a null pointer or an uninstantiated reference we have a few methods to define nothing.

    • dosisking 4 hours ago
      Like Madlibs?
      • conartist6isme 4 hours ago
        Ugh I got rate limited so I had to make a new acct just to post this reply:

        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).

    • onestay42 6 hours ago
      How about an `extern` variable in C?
      • conartist6 6 hours ago
        A million variations exist. I'm looking for a programming-language-agnostic concept. The closest you'll find are templating languages like Handlebars
        • Someone 46 minutes ago
          Function arguments are unfilled holes. So are interface declarations.

          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.

        • skew-aberration 5 hours ago
          Delimited continuations? Though I'm not totally clear what you're asking for. Semantics or syntax?
          • conartist6isme 4 hours ago
            Syntax. Delimited continuations would be a similar concept but for semantics
  • ZeroDayDreamer 1 hour ago
    [dead]
  • NotBenny 6 hours ago
    [dead]