- - PR -
配列の添字が0から始まるメリットは?
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2005-03-09 00:35
オフトピですが、Pascal/Delphiの配列は数値の範囲を直接書く以外の
書き方もあって、列挙型(Booleanも列挙の一種)を使って
などともできます。 個人的には、配列より文字列型を切り出すときのインデックスのほうが つらいです(Pascalは最初の文字が1)。C#やJavaを使うときは 時々指折り数えてしまいます | ||||
|
投稿日時: 2005-03-09 01:47
私は、0基準以外ほとんど考えられないけれど、いずれにしろ0基準のルーツを
探るなら、Cで止まるのじゃなくて、ALGOLまで戻るのが筋では? ALGOLとFORTRAN(そしてCOBOL)。BASICはFORTRANの流れを受けているから1オリジン なのだろうと。範囲を導入したPASCALは、偉かったけれどやはり効率などの面でうまく 受け入れられなかったということですね。 | ||||
|
投稿日時: 2005-03-09 08:59
暦(西暦とか)や、建物の階(日本などの場合)に、"0"がないので結構面倒ですよね。
紀元前1年〜西暦紀元1年、年越しは何回? 地下1階から地上2階まで、階段いくつ? 配列の添え字が0からというのも、そのほうが楽なんではなかろうかと。 | ||||
|
投稿日時: 2005-03-09 13:30
暦といえば、getMonth() で0〜11を返すのは
なんとかならなかったものか... これこそ何のメリットもないような... | ||||
|
投稿日時: 2005-03-09 13:47
昔入居前の高層マンションに工事で入る事があったんですが。 その日がエレベータの法定点検日と重なり、 地下4階(工事詰め所@駐車場の一角)から36階まで階段で 登る羽目になった事あります。 _________________ Inspired Ambitious ISMS Assistant Auditor | ||||
|
投稿日時: 2005-03-09 14:22
0からなのは英語の月は January、February、March、・・・で 月を表すのに数字を使わないからだって聞いたことがあります。 表記を配列にすれば、 String strMonth[] = {"January", "February", "March", ・・・}; getMonth()の値をそのままつかえます。 String strInreki[] = {"睦月", "如月", "弥生", ・・・}; と陰暦表示にもつかえます。 って、普通使わないですね | ||||
|
投稿日時: 2005-03-09 17:12
おぉALOGLの存在を完全に忘れていました。情報処理技術者試験以来です。 いやぁ正直に言うと、何故CからALGOLの名が出てくるのか不明でした。 Adaのお父さん(お母さん?)は ALGOLだったんですね。勉強になります。 _________________ 人生変わっちゃうかもよ?OFF会参加者募集中今考えるな、参加してから考えろ。 | ||||
|
投稿日時: 2005-03-09 17:20
まいど、まいど。皆様のお陰で無事、一段落出来ました。
私が問題認識を持ったのは、下記2点への認識不足の結果という事でした。 (1)順番と個数は違う。(両者を混在させている。) (2)順番は0から始まる考えもある。 最初の投稿でメリットを伺ったのは失敗ですが、 「意味深いモノがあるのでは?」と思ったのは当っていました。 (私にとってですよ。) いやはや自分の中に起こった問題認識を 解決するというのは難しいモノですね〜。 今、結果だけを振り返れば「その程度如きで..」 って感じですからね。 お陰様で、今後プログラムを教える時に ちょっと思考深い人を演じれます。 最後に判り辛いかもしれませんので、認識不足の話を補足すると。 ・順番が1から始まる場合、順番=個数となる。 ・順番が0から始まる場合、順番≠個数となる。 ・順番を「いろは・・・」で数えた場合、順番と個数の対応表が別途必要となる。 つまり、順番を数字で考え1から始める習慣を持つと「順番=個数」と錯覚し易く、 はにまるは見事にその錯覚に陥った。って事です。 _________________ 人生変わっちゃうかもよ?OFF会参加者募集中今考えるな、参加してから考えろ。 |