X

Microsoft объяснила, почему баг с «високосным» 1900 годом в Excel никогда не исправят

На сайте техподдержки Microsoft опубликовано разъяснение, почему один из старейших и самых известных багов в Excel останется в программе навсегда. Речь идёт об ошибке в календарных вычислениях: Excel считает 1900 год високосным, хотя на самом деле таковым он не является. Компания признаёт проблему, но подчёркивает, что её исправление приведёт к слишком серьёзным последствиям для пользователей.

Корни сбоя уходят во времена Lotus 1-2-3 — популярнейшего табличного процессора до появления Excel. В Lotus 1-2-3 по тем или иным причинам также считали 1900 год високосным: историки ПО предполагают либо непреднамеренную ошибку, либо сознательное упрощение логики работы с датами ради экономии памяти. Когда Microsoft выпускала Excel, разработчикам пришлось воссоздать это поведение, чтобы обеспечить максимальную совместимость и корректный перенос документов и формул из Lotus 1-2-3.

С точки зрения календаря проблема затрагивает только один случай — 1900 год, все остальные високосные годы Excel обрабатывает корректно. Однако ценой этого единственного исключения стала долговечная совместимость: миллиарды ячеек и формул по всему миру рассчитываются, исходя из устоявшейся системы счёта дат. ЕслиMicrosoft сейчас «починит» 1900 год, почти все существующие даты в файлах Excel сдвинутся на один день, что затронет отчёты, финансовые модели, архивы и взаимосвязанные документы.

Microsoft подчёркивает, что теоретически устранить баг несложно, но недостатки такого шага значительно перевешивают потенциальные плюсы. Исправление сломает не только старые таблицы, но и совместимость последовательных дат с другими программами, где уже принято текущее поведение Excel. С учётом аудитории в сотни миллионов пользователей по всему миру последствия такой коррекции предсказать практически невозможно.

В компании добавляют, что для большинства людей ошибка остаётся сугубо теоретической: подавляющее число пользователей Excel не работает с данными, относящимися к периоду до 1 марта 1900 года. Поэтому баг с «високосным» 1900 годом, появившийся ещё во время господства Lotus 1-2-3, фактически превратился в неизменяемую особенность отраслевого стандарта для работы с электронными таблицами.