- PR -

配列の添字が0から始まるメリットは?

投稿者投稿内容
はにまる
ぬし
会議室デビュー日: 2003/12/19
投稿数: 969
お住まい・勤務地: 誤字脱字の国
投稿日時: 2005-03-08 11:17
あれ、話が閉じるかな〜と思ったのですが、
皆さんから面白い(脳ミソを掻き混ぜてくれる)情報が来てますね。
ありがとうでございます。

引用:

ukさんの書き込み (2005-03-07 18:26) より:
一方Fortranのように1オリジンの言語もあります
歴史的経緯にすぎない、と思います。


Fortranは、1から始まるのですか。
正直「科学計算技術用なのに?」という根拠不明な疑問を持ってしまいました。

私なりに軽く調べて結果はこうでした。

  Pascal Delphiは、宣言時に添字の範囲指定(開始位置の指定)が可能
  Perl PHP は、0から
  Lisp は、0から
  Smalltalkは、見つけられず。

# 間違いがあれば突っ込みお願いしやす。

引用:

ちいにぃさんの書き込み (2005-03-07 21:06) より:
0から始まる場合:

a[0] .. 配列の先頭からの距離が0
a[1] .. 配列の先頭からの距離が1

1から始まる場合:

a[1] .. 配列の1番目の要素
a[2] .. 配列の2番目の要素


これは非常に判り易い表現ですね。
周囲からすれば当り前だろと思うかもしれませんが、
私はこれを見た瞬間にプログラム言語云々の前に、
私の数字(特に0という値)に対する認識に問題があるのかな?と
考えてしまいました...

引用:

unibonさんの書き込み (2005-03-07 21:13) より:
「なんで1からなんだよ!」と怒鳴ったことはあります。


今の私も1基準は受け付け無いと思います。

引用:

私も問いたい。
もしかして配列が1から始まるのは何か意味深いモノがあるのでは無いか?
そこで質問です。「配列が1から始まるメリットは何ですか?」


unibonさんって結構イジワルですね。
しかし、いざ説明しようとすると大見得を切れる程の大儀が無い事に気がついてしまいました。

精々、配列サイズと配列番号の数値基準が一致するくらいです。

引用:

00 01 02 03 04 05 06 07 08 09
10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29
...
のほうがキレイなのに、と思った。


本当ですね、パッと見。こっちの方が綺麗だ。

これってカレンダーで曜日を並ばる時の法則と何か因果関係が
あるかな〜?と素朴な疑問を抱きました。

引用:

会社員さんの書き込み (2005-03-07 23:32) より:
アセンブラ(機械語)をやってみるとわかりますが、内部的には配列が0から始まったほうが都合がいいのです。


これは、相対値と絶対値を比べた時の相対値の柔軟性で考えれば良いのでしょうか?

ちいにぃさんの意見を噛み砕いている時に、
0基準を想定した時は相対値の概念が、
1基準を想定した時は絶対値の概念が、
私の中で暗黙的に存在しているなぁと気が付きました。
# 私だけかな?

処理の切出し(関数化)を考える際、遣り取りする情報が
絶対値より相対値の方がデータの相互参照又は参照引渡を
減らせる事が多いと考えています。

その為にシステム基準では、相対値概念の0の方が色々メリットがあるのでは無いかと。
因みに今の私は、人間基準です。
# その前に、システム基準と人間基準の分離が、あやふやですけどね。

私もここら辺で逃げておきます。


まだ、纏まりの無い状態ですが、
現在、私の数値に対する認識がアヤフヤなのが纏まらない原因かなと思っています。

ですから、何か御意見があれば、
私を意識しない方が、皆様にとって面白い意見になると思います。

_________________
人生変わっちゃうかもよ?OFF会参加者募集中今考えるな、参加してから考えろ。
はゆる
ぬし
会議室デビュー日: 2004/02/16
投稿数: 1008
お住まい・勤務地: 首都圏をウロウロと
投稿日時: 2005-03-08 11:19
こんにちは。

今も VB ライクな言語を使用していますが、配列は

 Dim astrBuff( 0 to 4 ) As String
 Dim astrData( 1 to 5 ) As String

のように宣言して使うので、添え字で特に困ることはないかも…

基本は言語仕様、あとは場合によって使い分け、ということで (^^;
_________________
はゆる
Smile, Smiles make me happy.
未記入
会議室デビュー日: 2003/09/24
投稿数: 18
投稿日時: 2005-03-08 11:47
 Excelを開いてふと思ったのですが、 
Excelの列単位でデータを取得する時は1から始まってた方が間違えなそうですね。
POIとか使った時とかすごくはまりそうな予感がします。

 個人的にはJavaを使う機会が多いので、
0からに慣れてしまっていますが。

余談ですが、英語と米語でfirst floorの意味が違うことでトラブルが起きるのに
似てるような気もしてしまいます。
fukus
会議室デビュー日: 2004/10/20
投稿数: 9
投稿日時: 2005-03-08 12:36
慣れちゃったので、もう気にしてはいないですが
「1個目を取得するのに0を指定する」
という文章にすると、理不尽さを感じられるのではないかと(^^
ちゅき
常連さん
会議室デビュー日: 2005/02/18
投稿数: 41
お住まい・勤務地: 関西
投稿日時: 2005-03-08 13:19
むか〜し、BASICで配列のお勉強をしたとき、箱が並んでいる、と習いました。で、数えるときは1個目、2個目...

機械語を勉強したとき、アドレスの概念を知って、Indexとか、プラスいくつとかやってました。

それでも、Cをお勉強したとき、配列が0からということになじめませんでした。コンパイル結果見て、なるほどぉと思うんですが、1個目2個目と数えてしまい混乱^^;
#ところで、配列ってどうやって数えてます? いまだに配列の0番目って言う言葉が気持ち悪くて、Index0とか位置0なんて言ってます。
配列:順序を決めて並べる(or こと)

VB.NETは0固定ですね。C#やJ#の方の基準の方が変えづらかったということですかね?
#あえてmanaged C++には触れない^^;

[パスワード再入力したら、内容が引用時に戻ってしてしまったため再投稿]

[ メッセージ編集済み 編集者: ちゅき 編集日時 2005-03-08 13:22 ]
なか-chan@最愛のiMac
ぬし
会議室デビュー日: 2002/07/17
投稿数: 385
お住まい・勤務地: 和光市・世田谷区
投稿日時: 2005-03-08 14:01
0から始まるのは機械の都合
1から始まるのは人間の都合

ってことではないでしょうか?
0番目の... っていうのはちょっと違和感ある。
パテ太
ベテラン
会議室デビュー日: 2004/08/16
投稿数: 64
お住まい・勤務地: 千葉・東京
投稿日時: 2005-03-08 14:21
引用:

#ところで、配列ってどうやって数えてます?


(普通に?)0 番目、 1 番目、・・・と数えています。

蛇足ですが、テーブル形式のデータも 0 行目、1 行目、・・・です。
ただ、列はについては(語感が悪いから)0 列目、1 列目とは
数えなくて 0 カラム目、1 カラム目、・・・と数えます。

私の周りには誰もツッコむ 方 がいないので
それが普通なのかと思っておりましたが?
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2005-03-08 22:16
unibon です。こんにちわ。

数の数え方で戸惑うのは、たとえば、なにか事象が○年○月○日にあって、そのn日後とn日目は、違う日だと言うことです(もちろん n は両方とも同じ値だとして)。
たとえば、新潟中越地震(2004年10月23日)が発生して3日後は2004年10月26日ですが、発生から3日目は2004年10月25日です。株を売買した場合は、約定してから4日目が受渡日ですが、これは分かりにくいです。最近は約定日を T+0 日目とし、受渡日は T+3 日目、というような感じで説明することも多いようです(ロケットの打ち上げのカウントみたいだ)。
結局は、n日後は0オリジンで、n日目は1オリジンだと思いますが、ものごとを足し算・引き算できる量として考えると、0オリジンのほうが自然だと思います。

スキルアップ/キャリアアップ(JOB@IT)