- - PR -
配列の添字が0から始まるメリットは?
投稿者 | 投稿内容 | ||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2005-03-08 11:17
あれ、話が閉じるかな〜と思ったのですが、
皆さんから面白い(脳ミソを掻き混ぜてくれる)情報が来てますね。 ありがとうでございます。
Fortranは、1から始まるのですか。 正直「科学計算技術用なのに?」という根拠不明な疑問を持ってしまいました。 私なりに軽く調べて結果はこうでした。 Pascal Delphiは、宣言時に添字の範囲指定(開始位置の指定)が可能 Perl PHP は、0から Lisp は、0から Smalltalkは、見つけられず。 # 間違いがあれば突っ込みお願いしやす。
これは非常に判り易い表現ですね。 周囲からすれば当り前だろと思うかもしれませんが、 私はこれを見た瞬間にプログラム言語云々の前に、 私の数字(特に0という値)に対する認識に問題があるのかな?と 考えてしまいました...
今の私も1基準は受け付け無いと思います。
unibonさんって結構イジワルですね。 しかし、いざ説明しようとすると大見得を切れる程の大儀が無い事に気がついてしまいました。 精々、配列サイズと配列番号の数値基準が一致するくらいです。
本当ですね、パッと見。こっちの方が綺麗だ。 これってカレンダーで曜日を並ばる時の法則と何か因果関係が あるかな〜?と素朴な疑問を抱きました。
これは、相対値と絶対値を比べた時の相対値の柔軟性で考えれば良いのでしょうか? ちいにぃさんの意見を噛み砕いている時に、 0基準を想定した時は相対値の概念が、 1基準を想定した時は絶対値の概念が、 私の中で暗黙的に存在しているなぁと気が付きました。 # 私だけかな? 処理の切出し(関数化)を考える際、遣り取りする情報が 絶対値より相対値の方がデータの相互参照又は参照引渡を 減らせる事が多いと考えています。 その為にシステム基準では、相対値概念の0の方が色々メリットがあるのでは無いかと。 因みに今の私は、人間基準です。 # その前に、システム基準と人間基準の分離が、あやふやですけどね。 私もここら辺で逃げておきます。 まだ、纏まりの無い状態ですが、 現在、私の数値に対する認識がアヤフヤなのが纏まらない原因かなと思っています。 ですから、何か御意見があれば、 私を意識しない方が、皆様にとって面白い意見になると思います。 _________________ 人生変わっちゃうかもよ?OFF会参加者募集中今考えるな、参加してから考えろ。 | ||||||||||||||||||||||||
|
投稿日時: 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. | ||||||||||||||||||||||||
|
投稿日時: 2005-03-08 11:47
Excelを開いてふと思ったのですが、
Excelの列単位でデータを取得する時は1から始まってた方が間違えなそうですね。 POIとか使った時とかすごくはまりそうな予感がします。 個人的にはJavaを使う機会が多いので、 0からに慣れてしまっていますが。 余談ですが、英語と米語でfirst floorの意味が違うことでトラブルが起きるのに 似てるような気もしてしまいます。 | ||||||||||||||||||||||||
|
投稿日時: 2005-03-08 12:36
慣れちゃったので、もう気にしてはいないですが
「1個目を取得するのに0を指定する」 という文章にすると、理不尽さを感じられるのではないかと(^^ | ||||||||||||||||||||||||
|
投稿日時: 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 ] | ||||||||||||||||||||||||
|
投稿日時: 2005-03-08 14:01
0から始まるのは機械の都合
1から始まるのは人間の都合 ってことではないでしょうか? 0番目の... っていうのはちょっと違和感ある。 | ||||||||||||||||||||||||
|
投稿日時: 2005-03-08 14:21
(普通に?)0 番目、 1 番目、・・・と数えています。 蛇足ですが、テーブル形式のデータも 0 行目、1 行目、・・・です。 ただ、列はについては(語感が悪いから)0 列目、1 列目とは 数えなくて 0 カラム目、1 カラム目、・・・と数えます。 私の周りには誰もツッコむ 方 がいないので それが普通なのかと思っておりましたが? | ||||||||||||||||||||||||
|
投稿日時: 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オリジンのほうが自然だと思います。 |