Y2K

Написано в ноябре 1999 года

Обозначает эта аббревиатура «Year 2000» – 2000-ый год по-нашему, и на ней сдвинулся цивилизованный Запад. Помешательство всеобщее и вроде даже считается хорошим тоном: «Как, вы еще не решили проблему Y2K? Как же вы жить дальше собираетесь?». Ажиотаж доходит до того, что жители американских городков, расположенных около тюрем, начали активно скупать оружие на случай отказа охранных систем в новогоднюю ночь.

Рассмотрим внимательно, чем она конкретно грозит нам.

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

И вот дожили. Огромные базы данных накопили информацию о чем угодно – продажи фирмы «Кока-Кола» по всем регионам мира, включая деление по странам, городам, типам магазинов и киосков, по каждому виду продукции, в разрезе наиболее часто встречающихся цен или всплесков продаж в привязке к погоде, политической ситуации и чемпионатам мира по футболу. Но в базе данных в поле «дата» стоит, например, «200597», что расшифровывается как 20 мая 1997 года. При распечатке отчета первые две цифры года «19» подставляются программой, они не хранятся в базе данных. Таким образом, через пару месяцев отчет окажется датированным 1900-м годом, что, конечно, не смертельно, но смотрится несколько странно.

Теперь посмотрим, какие задачи, решаемые компьютерами, привязаны к дате. Мы поделим их на три части:

• Задачи реального времени, такие как диспетчерское управление транспортом, расчет процентов на вклады в банках, обработка разнообразных кредитных карт, электронных проездных билетов и прочее.

• Задачи, где дата используется, но не критична. Типа отчета по продажам «Кока-Колы».

• Задачи, где дата вообще не используется. В эту группу входят практически все приложения, используемые на домашних компьютерах – текстовые редакторы, игры, программы для Интернета.

Первая группа задач наиболее критична к потере правильной даты – представьте себе, если компьютер рассчитывает курс заходящего на посадку самолета, используя координаты, полученные 5 секунд назад и текущие, вычисляя по ним скорость, снижение и другие параметры. Вдруг дата перескакивает на 100 лет назад, в программе расчета появляются невообразимые значения, результат печален…

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

Западные банки проблему решили еще несколько лет назад, их она коснулась раньше всех. Ведь кредитные карты, например, выдаются на время до 5 лет. И уже в 1996 году срок действия некоторых карт перевалил в 21-й век. Курьезные случаи вроде начисления отрицательных процентов за минус 100 лет, когда клиент остается должен банку, подробно рассмотрены сатириками, мы их касаться не будем.

Российскому обывателю, хранящему сбережения в чулке или «банке», тем более волноваться не о чем. Археологи находят подобные «вклады», датированные предыдущим тысячелетием, в абсолютной сохранности. Правда, без процентов.

Проблема даты во второй группе задач решается до смешного просто. В одной компании, где ведется та самая база данных по «Кока-Коле» программисты, зная о том, что база данных ведется с 1981-го года, поступили так: при печати отчета проверяют номер года – если он больше 80-ти, подставляют перед ним «19», если меньше – «20». Добавлением всего одной проверки в коде программы они решили проблему Y2K до 2080 года, а что будет дальше – будут решать другие программисты.

И, наконец, третья группа – домашние пользователи. Что им грозит? Да ничего. Задумайтесь – в каких программах вы используете дату/время? Иногда, потеряв последнюю версию файла, делаете сортировку по дате создания? С нулевым годом разберетесь, наверное. Ставите автодозвон до вашего интернет-провайдера в 3 часа ночи, чтобы скачать большой файл? Так время не зависит от даты. Даже не придумать ситуации, в которой нормальный домашний пользователь компьютера, подключен он к Интернету или нет, мог бы понести потери при смене даты на заведомо неправильную. Проверить это очень просто – откройте календарь Windows и смените год на любой другой. Что изменилось?

Но бизнес – он бизнес. Тысячи компьютерных компаний в мире сейчас лихорадочно зарабатывают деньги на проблеме Y2K. Кому повезло получить заказы по первой в нашей классификации группе задач – делают реальную работу, перелопачивая тонны исходных текстов и заменяя двухсимвольный номер года на четырехсимвольный. А те компании, кто не пробился к реальным задачам, напускают туман в сознание обывателя и пишут на каждом текстовом редакторе или игрушке типа «Тетрис» Y2K-compliant, совместима, значит, с 2000-м годом. За отдельную плату, естественно.

И какой вывод? Мы, авторы этой статьи, не полетели бы рейсом «Аэрофлота» в новогоднюю ночь. Кто его знает… По железной дороге поехали бы – тетя, которая присматривает за шлагбаумом на разъезде 58-ой километр, делает свою работу без компьютера, и, если не напьется, шлагбаум опустит вовремя. Чубайс обещал все электростанции на Новый год перевести на ручное управление – очень здравое решение. Метро в Москве будет бесплатным, никого за «просроченный» проездной билет не придавит. Что еще?

Проснетесь 1-го января и на компьютере увидите дату 01/01/1900? Посмеемся вместе!

Павел Шевчук
Михаил Берг