BCPL言語の作成者（Cの前駆体）の作成者であるMartin Richardsは、アドレスとして使用されるポインターPの値がメモリの位置p + 0にアクセスするため、ゼロから始まるアレイを設計しました。これは、位置XのサイズSのタイプの配列へのインデックスを作成することはP + S*xだけであり、Sが2つの小さなパワーである場合、単一の命令で実行できます。

一部の言語では、1つで配列を開始します。これには、Mathematicaなどの数学に焦点を当てた言語が含まれます。一般的に、ユーザーのエクスペリエンスと期待が生のパフォーマンスよりも重要であり、メモリを直接操作できる場合、ユーザーがプログラミングの背景がほとんどないかまったくない数学者であると予想されるかなど、メモリを直接操作できる場合に使用されます。。
Martin Richards, creator of the BCPL language (a precursor of C), designed arrays starting at zero, since the value of a pointer p used as an address accesses the position p + 0 in memory. This means that indexing into an array of types with size S at position x is just P + S*x, which can be done in a single instruction if S is a small power of two.

Some languages start their arrays at one. This includes more maths-focused languages such as Mathematica, and is generally used where user experience and expectation are more important than raw performance and being able to manipulate memory directly, such as if the users are expected to be mathematicians with little to no programming background.