一部の一般的なプログラミング言語は、1だけ離れた月の番号付けを使用します-Javaと同様にJavaScriptが頭に浮かびます。いくつか質問があります。
- laypeopleが使用する月の番号付けを無視する場合は、一貫性を保つために、laypeopleが使用する日付の番号付けも無視し、各月の日数を0から開始してください。
- これはなぜそれほど一般的ですか?
- そもそもこれは誰の考えでしたか?
一部の一般的なプログラミング言語は、1だけ離れた月の番号付けを使用します-Javaと同様にJavaScriptが頭に浮かびます。いくつか質問があります。
回答:
ゼロを使用してカウントを開始することは、実際にはアセンブリプログラマーによる最適化の秘訣です。カウントレジスタに1を割り当てる代わりに、レジスタ自体をXORしたため、CPUサイクルがわずかに高速でした。つまり、カウントは0から始まり、最後の要素を除いて常に要素の長さまでとなります。
また、ゼロの使用は、割り当てられたメモリを指す1つのベースポインターと、このベースポインターからのオフセットにある2番目のポインターを使用するポインター演算でも一般的です。ここで、値0を使用することは、オフセットをメモリブロックのベースにポイントするのに非常に意味があります。(一般的な配列ロジックは、ベースアドレス+オフセットxレコードサイズになる傾向があります。)
そして、ゼロベースの月数は?多くのプログラミング環境では、デフォルトのデータからの日数としてデータを計算することがよくあります。1899年12月31日は人気のある日付ですが、基準日として使用される他の日付もたくさんあります。他のすべての日付はこの基準からオフセットされており、単一の数値として格納されます。分数は、時間、分、秒を示すために使用されます。0.25は24/4 = 6時間です。したがって、日付を実際の日付に変換するには、環境でこの数値を実際の日付に変換するだけです。
ただし、0ベースの配列と1ベースの月の値の組み合わせには問題があります。月9の月名を取得するには、月の配列から項目8を取得する必要があります。一部の開発者は、名前を取得する前に月数を減らして満足しています。人々は数字ではなく名前を知りたいだけなので、月をゼロから始まるものに変更することを好む人もいます。それは個人的な見解です。
それはそれであり、その仮定に基づいて構築されたソフトウェアの巨大な重みは、それがしばらくの間存在することになることを意味します。
私の意見では、これはCのせいで、他のすべてのJohnie-come-lately言語がCに準拠しただけだと思います。
あなたはよりよく知らない人々からいくつかの面白い状況を受け取ります。私たちのチームが見つけた数少ないY2Kバグの1つは、年の前struct tm
に文字「19」を付けただけで年が19100であることを誇らしげに宣言したWebサイトでした。
はい、ローマ人もゼロの問題を抱えていました。
これは、単に最初の(問題の用語は1つ)の実、としてゼロを画定する数学の[非直感的な]結果(プログラミングの強い成分である、特に初期プログラミング)正 *自然数、およびアレイが実で索引付けされているので、「最初の」要素がインデックス0にある自然数
月は配列で実際に名前が付けられた値であり、日と年は番号付きの値です。日/年を{"1"、 "2"、 "3"のような配列であると考える方がおそらく便利でしょう。 ..}自身。
なぜこれが非常に一般的であるか(数学的に正しいことを除けば)、リストしたすべての言語は共通の起源から派生しています...
編集:
さらに詳しく見ると、このウィキペディアリンクは、ゼロインデックス付けのいくつかの優れた興味深い理由を詳細に示しており(これは、月がゼロインデックス付けされる理由を直接説明していませんが、すでにカバーされていると思います)、このSOリンクは以前の質問に回答しています。
誰の質問かによって、「歴史的な事故」か「月は数字ではないので、日/年の保管と比較できないから」という一般的な意見のようです。
*すみません、すみません、物理学!手をアイロンがけしてください。
a[0]
== *(a + 0)
。