Чи порушено `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

Наступна історія під назвою " кал 9 1752 пояснила" "була скопійована зі списку новин на початку 90-х та заархівована під колекціями забавних матеріалів для комп'ютерної аудиторії Девід Г. Вісман (Менеджер Мережі кафедри інформатики університету Західного Онтаріо).

Хлопець, який спочатку написав команду "cal" на якійсь старій машині версії 7, у своєму коді помилково вмикався. Це виявилося як деякий помилковий висновок, коли змінна malloc'd вимикала 12 зайвих байтів із нулями, що призводить до дивного результату календаря, який видно вище.

Зараз ніхто з розумом не піклується про календар на вересень 1752 р. Навіть ідея 1752 року не існує в рамках UNIX, оскільки час для UNIX починався не на початку 1970 року. В результаті ніхто навіть не знав, що " "була помилка набагато пізніше. На той час уже було тисячі примірників "кал", багато з яких були лише бінарними. Було вже пізно виправити їх усіх.

Так в середині 1975 року деякі високопосадовці з питань AT&T зустрілися з Папою Римським і домовились. Календар було змінено заднім числом, щоб привести вересень 1752 року у відповідність з реальністю UNIX. Оскільки календар був змінений підрахунком назад від 14 вересня 1752 року, жодна з дат після цього не вплинула. Дати до цього всі перенесли на 12 днів. Вони також виправили сторінку man для "cal", щоб задокументувати помилку як особливість.

11 днів з 3 по 13 вересня просто пройшли з обліку. Вони здійснили пошук у книгах з історії та виявили, що, на щастя, за ці 11 днів нічого подібного не відбулося.

Загалом, весь цей інцидент був значною мірою без події. Пізніше один автор наукової фантастики почув про це і підірвав річ у повнометражному творі наукової фантастики під назвою "Верстат неба", книзі, яка, на мою думку, мало нагадує те, що насправді сталося.

Яке справжнє пояснення вихідної аномалії?


14
Ви не бачите /humorкаталогів у опублікованій URL-адресі? ;)
alex

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
Чудова відповідь! Щоб зробити це ще більш складним, деякі грецькі монастирські товариства досі використовують Юліанський календар.
тердон

1
"Точний час внесення цієї корекції дещо довільний" - Це спрощено. Більш точною версією було б "знадобиться принаймні місцезнаходження користувача, щоб визнати дату (дати), на яку відбулося виправлення". (Шведські, наприклад, мали амбітний план замазати календарну реформу протягом 40 років: en.wikipedia.org/wiki/Swedish_calendar )
Piskvor

4

Ось хороший документ про календарі (PDF), який пояснює, як повільний зсув Пасхи на рік зробив цю корекцію дати необхідною, а також описує, коли різні країни зробили перехід.

На сторінці 904:

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

У статті продовжується посилання на широкий перелік дат прийняття, який було складено астрономами, і прямо пояснюється спосіб перетворення між різними календарними системами.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.