1

ですから、私のアパートのリフトでは、ボタンには(英国にある)ラベルが付けられていません:G、1、2、3など。アメリカのファッションでは:1、2、3、4など。

それらは0、1、2、3のラベルが付けられています。つまり、0からのインデックスです。

私は自分自身に思いました:'明らかに、フロア間の移動を表すgoToFloorのような関数を作成する場合は、要素のインデックスによって作成できます。簡単!'

そして、すべての言語が0から配列を開始するわけではなく、1から開始する言語もあることに気付きました。

この決定はどのように行われますか?それは効率の1つですか(私はそれを疑っています!)?新しいプログラマーを楽にしますか(おそらく、一度間違えた人は誰でも、二度と間違えません)?

プログラミング言語が標準から逸脱する理由は、0、1、またはその他の数値であるかどうかはわかりません。それを念頭に置いて、インデックスを作成する機能を備えた最初の言語を知ってから、設定されている規則を破る最初の言語を知ることはおそらく役立つでしょうか?

これがSOにとってあまりにも「気の利いた」質問ではないことを願っています。インデックス作成の背後にある歴史を聞きたいと思っています。

4

2 に答える 2

2

最初の「言語」はアセンブラーでした。配列は単に最初の要素のメモリアドレスです。配列内の1つの要素にアクセスするために、オフセットが追加されます。したがって、配列が位置t0にある場合、t0+0は最初の要素、t0+1は2番目の要素などです。これにより、0から始まるインデックスが作成されます。後で、高級言語によってより優れた構文が追加されましたが、インデックスは同じままでした。

ただし、例外が発生することもありました。たとえば、Pascalでは、文字列はバイトの配列です。ただし、配列/文字列の最初のバイトには文字列の長さが格納されるため、最初の文字はインデックス1に格納されます。ただし、インデックス0はまだ存在し、この長さを取得するために使用できます。

于 2012-09-21T23:25:01.353 に答える
2

最初のプログラミング言語が設計されたとき、配列はメモリ位置にマップされるため、0から開始していました。配列はメモリ位置にマップされ、その数値は隣接する値を取得するためのオフセットとして使用されました。これによると、数値は、配列内の順序としてではなく、開始からの距離として表示される必要があります。

数学的な観点からは、アルゴリズムをより自然に実装するのに役立つため、それは理にかなっています。

ただし、0は1から数え始めるため、人間にとって魅力的ではありません。これは直感に反し、一部の言語が1で開始配列を「偽造」することを決定した理由です(VBなどの一部では0と1ベースのアレイ。)

このトピックに関する興味深い情報は、この有名なDijkstraの記事にあります。

于 2012-09-22T08:40:34.383 に答える