オリジン

オリジン（origin）とは、原点のことで、主に0オリジンと1オリジンが存在する。0オリジンのものは0から数え始め、1オリジンのものは1から数え始める。ちなみに0オリジンと1オリジンは和製英語で、英語ではzero-basedとone-basedなどという。
オリジンの混在.
複数のオリジンが混在する身近な例として、日時があげられる。年・月・日は1オリジン（数え初めが1年1月1日）であるが、時・分・秒は0オリジン（0時0分0秒）である。時については0時のことを12時ということもあるため紛らわしいが、0時が午前と午後の境であるために0オリジンであるといえる。ただし、期間を表す場合はすべて0オリジンとなる。
世紀の数え方は1オリジンと考えられる。つまり、紀元1年は1世紀であり、0年や0世紀は存在しない（紀元前1年の直後は直後は紀元1年となる）。ただし天文学的紀年法では0オリジンで年を数える。
また、年齢の数え方として満年齢と数え年がある。ほかにも違いがあるが、それぞれの特徴として満年齢は0オリジンであり、数え年は1オリジンであることがあげられる。
プログラミング言語.
プログラミング言語やそのライブラリ・API類では、両方が散在する。特に言語によって配列の先頭が0なのか1なのかはよく議論になる。配列では、C言語などは0オリジン・FORTRANは1オリジンである。BASICのように複数回の標準化で標準が変わったという言語もある（特に2回目の標準ではデフォルトの1オリジンから0オリジンに変更できるようにした。そのためVisual Basicなど現代的なBASICは両対応である）。また日付を扱うライブラリを例にすると、月日を直感的な1オリジンで扱うか、算術的に便利な0オリジンに変換するか、どちらにも得失があり混在していることもあるので注意を要する。
VBAでのオリジンの指定.
以下はVisual Basic for Applicationsでオリジンを指定する例である。
Option Explicit
Option Base 1 ' 1オリジンに指定
Sub Foo()
 Dim bar(2) As Integer
 bar(0) = 1 ' 1オリジンの場合のみランタイムエラーが発生する
End Sub