web-dev-qa-db-ja.com

`cal`は壊れていますか? 1752年9月に何が起こりましたか?

cal 9 1752の出力を見ると、この奇妙な出力が表示されます。

   September 1752
 S  M Tu  W Th  F  S
       1  2 14 15 16
17 18 19 20 21 22 23
24 25 26 27 28 29 30

" cal 9 1752の説明" "というタイトルの次のストーリーは、90年代初頭にニュースリストからコピーされ、デビッドGによって コンピューターの視聴者にとって面白いもののコレクション にアーカイブされました。ワイズマン(西オンタリオ大学のコンピューターサイエンス学部のネットワークマネージャー)。

一部の古いバージョン7マシンで「cal」コマンドを最初に書いた人は、コードに1つずれたエラーがありました。これは、mallocされた変数がゼロで12の余分なバイトを上書きしたときに、誤った出力として表示され、上記の奇妙なカレンダー出力につながりました。

1752年のideaもUNIXでは存在しません。その結果、1970年の初めまでUNIXで開始されませんでした。その結果、「cal」にこのエラーが発生するのはずっと後になるまで誰も知りませんでした。それまでに何千もの「cal」のコピーが浮かんでいたが、それらの多くはバイナリのみであった。それらをすべて修正するには遅すぎました。

1975年半ばに、AT&Tの高官の一部が教皇と面会し、合意に達した。暦は遡及的に変更され、1752年9月はUNIXの現実に沿ったものになりました。 1752年9月14日からbackwardsをカウントしてカレンダーが変更されたため、それ以降の日付は影響を受けません。それ以前の日付はすべて12日ずれていました。また、「cal」のマニュアルページを修正して、バグを機能として文書化しました。

9月3日から9月13日までの11日間は単に記録から消えていました。彼らは歴史書を検索しましたが、幸いなことに、これらの11日間、それほど重要なことは何も起こりませんでした。

全体的に見て、この事件全体はほとんどイベントではありませんでした。あるSF作者が後でそれについて聞いて、そのことを「The Lathe of Heaven」と呼ばれるSFの完全な作品に吹き込んだ。私の考えでは、本は実際に起こったこととほとんど似ていない。

出力異常の本当の説明は何ですか?

28
LanceBaynes

実際の話をたどるには、man calを自分で実行してみてください。

The Gregorian Reformation is assumed to have occurred in 1752 on the 3rd
of September.  By this time, most countries had recognized the reforma-
tion (although a few did not recognize it until the early 1900’s.)  Ten
days following that date were eliminated by the reformation, so the cal-
endar for that month is a bit unusual.

次に、履歴がおおざっぱである場合は、ウィキペディアを続行して、 グレゴリオ暦 によって導入された変更と、世界のさまざまな地域での採用の履歴についての情報を確認します。

グレゴリオ暦の改定には、教皇グレゴリーの時代まで使用されたユリウス暦の改定と、教会がイースターの日付を計算するためのユリウス暦と一緒に使用した太陰周期の改定とともに、2つの部分が含まれていました。
[...]
暦年の平均の長さが365.25日(365日6時間)から365.2425日(365日5時間49分12秒)に変更されたことに加えて、年間10分48秒の削減、グレゴリオ暦の改革は、これらの長さの過去の累積された違いにも対処しました。
[...]
しかし、プロテスタント宗教改革のせいで、多くの西ヨーロッパ諸国は当初グレゴリオ暦の改革に従わず、古いスタイルのシステムを維持していました。最終的に他の国々は一貫性を保つために改革に従いましたが、東ヨーロッパ(ロシアおよびギリシャ)のユリウス暦の最後の支持者までに20世紀にグレゴリオ暦に変更されたため、1582以降の2つのカレンダー間の累積差が原因で、カレンダーから13日を削除する必要がありました。
[...]
イギリスと大英帝国(現在のアメリカの東部を含む)は、1752年にグレゴリオ暦を採用しました。そのときまでに11日まで修正する必要がありました。 1752年9月2日水曜日に続いて1752年9月14日木曜日。

Unixが登場し、1970年1月1日に世界時計をリセットするようになるまでに、リセットを表示する日付を選択する以外に、混乱することは何もありませんでした。世界は現在のグレゴリオ暦システムをさまざまな時期に採用しているため、この修正を行う正確な時期はいくぶん恣意的です。

ソフトウェアでその日付までさかのぼって日付を数える理由がある場合は、その1つのリセットよりもはるかに重大な問題が発生します。カレンダーの歴史は驚きに満ちています!

49
Caleb

これがカレンダーについての 良い論文です(PDF) これは、イースターが年間を通じてゆっくりと変化するため、この日付の修正が必要になった理由と、各国が切り替えた時期について説明しています。

904ページ:

彼[Pope Greogory]はまた、1582年10月4日木曜日、旧式(ユリウス暦)の最後の日付である1582年10月4日木曜日に1582年10月15日金曜日が続くと宣言することにより、カレンダーの累積10日間エラーを修正しました。新しいスタイル(グレゴリオ暦)カレンダーの初日。カトリック諸国はこのルールに従いましたが、プロテスタント諸国は抵抗しました。ドイツのカトリック諸国がそうであったように、スペイン、ポルトガル、イタリアはすぐにそれを採用しました。ドイツのプロテスタント地域はそれを採用するために1700年まで待った。イギリスとその植民地(アメリカ合衆国を含む)は1752まで待機しました、ロシアは1918年の革命後まで、ブルガリアは1920年まで続いた。

この論文は、天文学者によって編集された採用日の広範なリストを引き続き参照し、異なるカレンダーシステム間で変換する方法を簡単に説明しています。

4
whoplisp