Познавательно

История про високосный год на языке ай-тишника

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

Люди думают, что костыли при работе с датами изобрели инженеры, но это совсем не так

Взять хотя бы високосный год:

У древних римлян (до VII века до н. э.), в календаре было 10 месяцев (промежуток с марта по декабрь — только июль и август назывались иначе), а вместо двух оставшихся была дыра))0))

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

со временем на модуль «календарь» стали завязываться всякие важные подсистемы (налоговая например) и где-то в VI веке до нашей эры римский царь Нума Помпилий затеял рефакторинг календаря, чтобы устранить дыры в абстракции

при Нуме Помпилии в римском календаре стало 7 месяцев по 29 дней, 4 по 31 и 1 по 28 (февраль), что в сумме дает… 355 дней

то есть лет за 20 жизни по такому календарю июнь менялся местами с январем и юзеры начинали люто-бешено репортить баги про снег

происходило это в самом деле или нет, мы не знаем, но знаем что в админке для понтифика добавили бэкдор и понтифик рандомно раз в несколько лет вручную добавлял в календарь еще один месяц из 27/28 дней, чтобы не отставать от астрономического года

гай юлий цезарь в ходе очередного римфакторинга решил покончить с этим легаси и наконец спроектировать нормальный календарь, где не нужно было бы править таблички на проде

придворные астрономы насчитали, что в среднем астрономический год длится 365 дней 6 часов. то есть за четыре года по 365 набегают ровно сутки (кажется кто-то подгонял) отставания — так получилась формула юлианского календаря: три года по 365 дней и один по 366

так появился високосный год, костыли убрали, математика сошлась и все стало классно

… пока в 16 веке у христиан не потекла Пасха.

церковь отталкивалась от дня весеннего равноденствия при проведении своих праздников, а он каждый год почему-то наступал все раньше

(вряд ли римляне при проектировании календаря закладывали такие юзкейсы)

правда в том, что в астрономическом году не 365 дней 6 часов, а 365 дней 5 часов 49 минут и костыль Цезаря с високосными годами не работал long term: каждый юлианский год длится на 11 минут меньше астрономического, а за 16 веков набежало почти две недели разницы!

в 1582 году папа римский Григорий XIII выпустил хотфикс календаря (обратную совместимость сохранили) в котором выпилил високосный год в годах кратных 100 (но оставил в годах кратных 400)

финальная версия алгоритма високосных годов:
1. год номер которого кратен 400 — високосный
2. номера кратные 100 — невисокосные
3. номера кратные 4 — високосные

релиз назвали в честь автора крайнего коммита григорианским и именно этим календарем мы и пользуемся сегодня :)

Дмитрий Тусаев
@tusaeff
·
28 мая
Source: https://ru.wikipedia.org/wiki/%D0%92%D0%B8%D1%81%D0%BE%D0%BA%D0%BE%D1%81%D0%BD%D1%8B%D0%B9_%D0%B3%D0%BE%D0%B4

Если что то непонятно (ну вдруг))) есть некоторые пояснения от людей «в теме»:

Дата — данные
Рефакторинг — контролируемый процесс улучшения кода, без написания новой функциональности.
Юзеры — пользователи.
Репортить баги — создавать задачу с описанием ситуации или последовательности действий, приведшей к некорректной работе объекта тестирования.
Бэкдор — дефект алгоритма, который намеренно встраивается в него разработчиком для различных целей.
Легаси — код доставшийся в наследство от предыдущих разработчиков.
Прод — основная рабочая версия сайта, программы.
Юзкейс — перечень действий, сценарий по которому пользователь взаимодействует с объектом для выполнения какого-либо действия для достижения конкретной цели.
Long term — долгосрочный процесс.
Хотфикс — срочное исправление критической ошибки или уязвимости в программе.
Релиз — стабильная версия программы, прошедшая все предыдущие стадии, в которых исправлены основные ошибки.
Коммит — сохранение, фиксация (в архиве, репозитории и др.) изменений в программном коде.

Реклама

Еще интересненькое

Материалы сайта предназначены для лиц старше 18 лет (18+)