`Cal` сломан? Что случилось в сентябре 1752 года?


28

Если вы посмотрите на вывод, 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-х годов и заархивирована в« Коллекции забавных вещей для компьютерной аудитории »Дэвидом Г. Уайзманом (сетевой менеджер на факультете компьютерных наук в университете. Западного Онтарио).

У парня, который первоначально написал команду "cal" на каком-то старом компьютере Версии 7, была ошибка в коде. Это выглядело как некоторый ошибочный вывод, когда переменная malloc перезаписала 12 дополнительных байтов с нулями, что привело к странному выводу календаря, показанному выше.

Никто в здравом уме на самом деле не заботится о календаре на сентябрь 1752 года. Даже идея 1752 года не существует в UNIX, потому что время для UNIX не начиналось до начала 1970 года. В результате никто даже не знал, что была эта ошибка намного позже. К тому времени вокруг были плавающие тысячи копий, многие из которых были только двоичными. Было слишком поздно, чтобы исправить их все.

Поэтому в середине 1975 года некоторые высокопоставленные чиновники AT & T встретились с Папой и пришли к соглашению. Календарь был задним числом изменен, чтобы привести сентябрь 1752 года в соответствие с реальностью UNIX. Поскольку календарь был изменен путем обратного отсчета с 14 сентября 1752 года, ни одна из дат после этого не была затронута. Все даты до этого были перенесены на 12 дней. Они также исправили man-страницу для «cal», чтобы документировать ошибку как функцию.

11 дней с 3 по 13 сентября просто исчезли из записей. Они обыскали учебники истории и обнаружили, что, к счастью, за эти 11 дней ничего особенного не произошло.

В целом, весь этот инцидент был в значительной степени не событием. Один из авторов научной фантастики позже услышал об этом и превратил эту штуку в полнометражную научно-фантастическую работу под названием «Токарный станок небес», книгу, которая, на мой взгляд, мало похожа на то, что действительно произошло.

Каково реальное объяснение выходной аномалии?


14
Разве вы не видите /humorкаталог в размещенном вами URL? ;)
Алекс

1
Эта ссылка заставила меня посмеяться.
jw013

1
... что опять не так с выводом? : p
d33tah

Григорианский календарь с прогностическими показателями кажется более разумным, в противном случае вам нужно знать страну, религию и т. Д., Чтобы определить календарь с некоторой точностью.
JFS

1
Даже идея 1752 года не существует в UNIX ... ... но была ли идея UNIX в 1752 году?
Алоис Махдал

Ответы:


49

Чтобы отследить реальную историю, попробуйте запустить 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.

Затем, если ваша история отрывочна, перейдите в Википедию за информацией об изменениях, внесенных григорианским календарем, и его истории усыновления в различных частях мира:

Реформа григорианского календаря состояла из двух частей: реформы юлианского календаря, использовавшейся до времени папы Григория, вместе с реформой лунного цикла, использованного Церковью, наряду с юлианским календарем для расчета дат Пасхи.
[...]
Помимо изменения средней продолжительности календарного года с 365,25 дней (365 дней 6 часов) до 365,2425 дней (365 дней 5 часов 49 минут 12 секунд), сокращение на 10 минут 48 секунд в год реформа григорианского календаря также касалась накопленной в прошлом разницы между этими длинами.
[...]
Однако из-за протестантской реформации многие западноевропейские страны изначально не следовали григорианской реформе и сохранили свои системы старого образца. В конце концов, другие страны последовали за реформой ради последовательности, но к тому времени, когда последние приверженцы юлианского календаря в Восточной Европе (Россия и Греция) перешли на григорианскую систему в 20-м веке, им пришлось отказаться от своих календарей на 13 дней. , из-за дополнительной накопленной разницы между двумя календарями с 1582 года .
[...]
Великобритания и Британская империя (включая восточную часть того, что сейчас является Соединенными Штатами) приняли григорианский календарь в 1752 году, к этому времени необходимо было исправить на 11 дней. В среду, 2 сентября 1752 года, последовал четверг, 14 сентября 1752 года.

К тому времени, когда появился Unix и перезапустил мировые часы, чтобы начаться 1 января 1970 года, с этим беспорядком ничего не поделаешь, кроме выбора даты, чтобы показать сброс. Поскольку мир в разное время принял текущую систему григорианского календаря в разных странах, точное время для внесения этой поправки является несколько произвольным.

Если у вас когда-нибудь будет причина подсчитывать даты, уходящие так далеко в вашем программном обеспечении, вы столкнетесь с гораздо более серьезными проблемами, чем просто один сброс! История календаря полна сюрпризов!


3
Отличный ответ! Чтобы сделать вещи еще более сложными, некоторые греческие монашеские общества до сих пор используют юлианский календарь сегодня.
Terdon

1
«Точное время для внесения этой коррекции несколько произвольно», - это упрощенно. Более точная версия была бы такова, что «потребуется хотя бы местоположение пользователя, чтобы распознать дату (и), в которые произошло исправление». (У шведа, например, был амбициозный план
размазать

4

Вот хорошая статья о календарях (PDF), которая объясняет, как медленное смещение Пасхи в течение года сделало эту корректировку необходимой, а также описывает, когда разные страны сделали это.

На странице 904:

Он [Папа Григорий] также исправил накопившуюся 10-дневную ошибку в календаре, объявив, что за четвергом, 4 октября 1582 года, последней датой в старом стиле (юлианским календарем), последует пятница, 15 октября 1582 года н.э. первый день нового стиля (григорианский) календарь. Католические страны следовали этому правилу, но протестантские страны оказали сопротивление: Испания, Португалия и Италия немедленно приняли его, как и католические государства в Германии Протестантские части Германии ждали до 1700 года, чтобы принять его. Великобритания и ее колонии (включая Соединенные Штаты ) ждали до 1752 года , Россия продержалась до революции 1918 года, а Болгария - до 1920 года.

Документ продолжает ссылаться на обширный список дат усыновления, который был составлен астрономами, и прямо объясняет, как конвертировать между различными календарными системами.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.