Zero's Ring
最初の要素にインデックス0を割り当てる番号付けの慣習。
ゼロベースの番号付け(0-based numbering)とは、数列の最初の要素に通常の数学外やプログラミング以外の場面で一般的な1ではなく、0というインデックスを割り当てる方法である。ゼロベースの番号付けでは、最初の要素は第一要素ではなく、第零要素(zeroth element)と呼ばれることがある。第零(zeroth)は序数0のために作られた造語である。場合によっては、本来その数列に属さないが、最初の要素の前に自然に配置できるオブジェクトや値が第零要素と呼ばれることがある。文脈が欠如している場合、0を序数として使用することの正しさ(および第零(zeroth)という用語の使用)については広く合意されておらず、数列の後続のすべての要素に曖昧さを生み出す。
- Creator
- Satella (Witch of Envy)
- Primary user
- Subaru Natsuki
- First appearance
- Arc 1: The Beginning of the End
- Nature
- Cursed Artifact / Magical Seal
- Associated curse
- Return by Death
背景と経緯
0から始まる数列の番号付けは、数学の表記法、特に組合せ論では非常に一般的であるが、数学用のプログラミング言語は通常1からインデックスを付ける。コンピュータサイエンスでは、現代のプログラミング言語の多くで配列のインデックスは通常0から始まるため、コンピュータプログラマーは他の人が「第一」を使う状況で「第零」を使うことがある。数学的な文脈によっては、序数形式が「第一」の前に来る明らかな候補とともに確立された意味を持つ場合、ゼロベースの番号付けは混乱なく使用できる。例えば、関数の第零次導関数は、0回微分して得られる関数そのものである。このような用法は、本来数列に属さないがその前に位置する要素に名前を付けることに相当する。第零次導関数は実際には導関数ではない。しかし、第一次導関数が第二次導関数に先行するのと同様に、第零次導関数(または元の関数自体)は第一次導関数に先行する。
読者ガイド
この用法は、C、Java、Lispを含む多くの影響力のあるプログラミング言語に組み込まれた設計上の選択に従っている。これら3つの言語では、シーケンス型(Cの配列、Javaの配列とリスト、Lispのリストとベクター)は0の添え字からインデックスが付けられる。特にCでは、配列がポインタ演算と密接に結びついているため、これにより実装がより単純になる。添え字は配列の開始位置からのオフセットを参照するため、最初の要素のオフセットは0である。アドレスとオフセットによるメモリ参照は、事実上すべてのコンピュータアーキテクチャのコンピュータハードウェアで直接表現されるため、Cのこの設計の詳細によりコンパイルが容易になり、人間工学的なコストが多少かかる。この文脈で序数として「第零」を使用することは厳密には正しくないが、この業界では広く行われている習慣である。FortranやCOBOLなどの一部のプログラミング言語では、配列の添え字が1から始まる。これらは高水準プログラミング言語として意図されており、そのためゼロの発明よりはるかに前から存在する通常の序数に対応する必要があったからである。また、Ada、ALGOL 60、PL/Iなどの一部のプログラミング言語では、各インデックスに任意の下限を許可している。Pascalでは配列の範囲を任意の順序型(列挙型を含む)にでき、Adaでは任意の離散部分型を許可している。APLでは、実行時にプログラムでインデックス原点を0または1に設定できる。LuaやVisual Basicなどの一部のより新しい言語も、同じ理由で同じ慣習を採用している。0は符号なし整数の最小値であり、プログラミングとハードウェア設計における最も基本的な型の1つである。コンピュータサイエンスでは、0は多くの種類の数値再帰のベースケースとしてよく使用される。コンピュータサイエンスにおける証明やその他の数学的推論は、しばしば0から始まる。これらの理由から、コンピュータサイエンスでは1ではなく0から番号を付けることは珍しくない。配列が循環を表現するために使用される場合、モジュロ関数でインデックスを取得すると便利であり、結果として0になることがある。
