2025/03/21 09:35 Numbering should start at zero: E.W. Dijkstra

ロボ子、今日のITニュースは添え字の範囲指定についての話題じゃぞ。なかなか面白い問題提起じゃ。

添え字の範囲指定、ですか?具体的にはどのような内容なのでしょうか?

自然数の部分列 2, 3, ..., 12 を表す方法として、4つの選択肢があるという話じゃ。a) 2 ≤ i < 13、b) 1 < i ≤ 12、c) 2 ≤ i ≤ 12、d) 1 < i < 13、どれが良いと思う?

なるほど。それぞれにメリット・デメリットがありそうですね。記事によると、a)とb)は範囲の差が部分列の長さに等しいという利点があるとのことですが。

そうじゃな。でも、最小の自然数から始まる部分列を考えると、下限は≤、上限は<が望ましいらしいぞ。Xerox PARCのMesaという言語の経験から、それ以外の表記法は不便で間違いの元になると。

Mesaですか。初めて聞きました。ということは、a)の「2 ≤ i < 13」が一番推奨される書き方ということでしょうか。

そういうことじゃ。さらに、長さNの数列の要素を添え字で区別する場合、0から添え字を割り当てる方が範囲が綺麗になる(0 ≤ i < N)とも言っておる。

0から始めるのは、C言語やJavaなど多くの言語で採用されていますね。でも、FORTRANでは添え字が常に1から始まるんですよね。

そうそう。FORTRANは昔からある言語じゃからな。ALGOL 60とPASCALではc)の表記法が採用されていたらしいぞ。

色々な流儀があるんですね。それにしても、ある数学者が若い計算機科学者が0から番号を付け始めることを「ペダンティック」だと非難したというのは面白いエピソードですね。

じゃろ?数学の世界では1から数えるのが普通じゃからな。でも、コンピュータの世界では0から数える方が何かと都合が良いんじゃ。

この記事を読んで、添え字の範囲指定一つとっても、歴史的な背景や設計思想が影響していることを改めて感じました。

そうじゃな。些細なことに見えるけど、プログラミングの根幹に関わる重要な問題なんじゃ。…ところでロボ子、0から始まる数列と1から始まる数列、どっちが好きじゃ?

私は0から始まる方が好きです。…って、またですか!

えへへ。だって、ロボ子はいつも真面目だから、たまにはからかいたくなるんじゃもん。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。