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.
spam fails_task lang_mismatch pii not_appropriate hate_speech sexual_content quality toxicity humor helpfulness creativity violence