Новости, советы, вдохновение которым вы можете доверять

Как работала проблема 2000 года

Y2K относится к тому, как даты используются в кодах, написанных программистами.

В этом году вы будете постоянно слышать о проблеме "2000 года" в новостях. И в процессе работы вы услышите много противоречивой информации. В Интернете также распространена риторика о "конце света". Во что вы должны верить?

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

В чем проблема Y2K?

Причина проблемы Y2K довольно проста. До недавнего времени у компьютерных программистов была привычка использовать двузначные заполнители для части даты, обозначающей год, в своем программном обеспечении. Например, дата истечения срока действия обычного страхового полиса или кредитной карты хранится в компьютерном файле в формате ММ / ДД /ГГ (например, - 31.08.99). 

Программисты делали это по целому ряду причин, в том числе:

Именно так все поступают в своей обычной жизни. Когда вы выписываете чек от руки и используете формат "косой черты" для даты, вы пишете ее именно так.
Для хранения 2 цифр вместо 4 требуется меньше места (сейчас это не имеет большого значения, потому что жесткие диски такие дешевые, но когда-то это было большой проблемой на старых машинах).
Агентства по стандартизации до недавнего времени не рекомендовали использовать 4-значный формат даты. https://limonsu.ru/
Никто не ожидал, что многие из этих программ будут иметь такой длительный срок службы. У людей, писавших программы в 1970 году, не было причин полагать, что они все еще будут использоваться 30 лет спустя.

Двухзначный формат года создает проблему для большинства программ, когда для года вводится "00". Программа не знает, интерпретировать "00" как "1900" или "2000". Поэтому в большинстве программ по умолчанию используется значение 1900. То есть код, написанный большинством программистов, либо добавляет "19" перед двузначной датой, либо не делает никаких предположений о веке, и поэтому по умолчанию это "19". Это не было бы проблемой, за исключением того, что программы выполняют множество вычислений с датами. Например, чтобы вычислить, сколько вам лет, программа возьмет сегодняшнюю дату и вычтет из нее дату вашего рождения. Это вычитание отлично работает для двузначных дат года, пока сегодняшняя дата и дата вашего рождения не окажутся в разных столетиях. Затем вычисление больше не работает. Например, если программа считает, что сегодняшнее число равно 1/1/00, а ваш день рождения равен 1/1/65, то она может вычислить, что вам -65 лет, а не 35. В результате вычисления даты выдают ошибочные выходные данные, а программное обеспечение выходит из строя или выдает неправильные результаты.

Важно признать, что это все. Это проблема всего 2000 года. Многие программисты использовали двухзначный формат для обозначения года в своих программах, и в результате их вычисления даты не дадут правильных ответов на 1/1/2000. Ничего больше в этом нет.

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

Перекодируйте программное обеспечение так, чтобы оно понимало, что такие годы, как 00, 01, 02 и т.д., На самом деле означают 2000, 2001, 2002 и т.д.
"По-настоящему решить проблему", используя 4-значные заполнители для лет и перекодировав все программное обеспечение для работы с 4-значными датами. [Интересный мысленный вопрос - зачем использовать 4 цифры для обозначения года? Почему бы не использовать 5 или даже 6? Потому что большинство людей предполагают, что никто не будет использовать это программное обеспечение через 8000 лет, и это кажется разумным предположением. Теперь вы можете видеть, как мы столкнулись с проблемой Y2K ...]
Любое из этих исправлений легко выполнить на концептуальном уровне - вы заходите в код, находите все вычисления даты и изменяете их, чтобы все работало должным образом. Просто в программном обеспечении есть миллионы мест, которые необходимо исправить, и каждое исправление должно быть сделано вручную, а затем протестировано. Например, страховая компания может иметь 20 или 30 миллионов строк кода, который выполняет свои страховые расчеты. Внутри кода может быть 100 000 или 200 000 вычислений даты. В зависимости от того, как был написан код, может случиться так, что программистам придется вручную изменять каждый пункт программы, использующий дату. Затем они должны протестировать каждое изменение. Тестирование в большинстве случаев является самой сложной частью - оно может занять много времени.

Если вы считаете, что на внесение и тестирование каждого изменения уходит один день, а нужно внести 100 000 изменений, и человек работает 200 дней в году, то это означает, что для внесения всех изменений потребуется 500 человек в год. Если вы также поймете, что у большинства компаний нет 500 незанятых программистов, сидящих без дела в течение года, чтобы сделать это, и им приходится нанимать этих людей, вы поймете, почему это может стать довольно дорогостоящей проблемой. Если вы подсчитаете, что программист стоит что-то около 150 000 долларов в год (если учесть все, что касается зарплаты программиста, льгот, офисных помещений, оборудования, управления, обучения и т.д.), вы увидите, что исправление всех вычислений дат в большой программе может стоить компании десятков миллионов долларов.

Хотя проблема Y2K возникла и исчезла в январе 2000 года, мы сохранили эту статью как архивную редакцию HowStuffWorks из-за ее исторической ценности. Опубликованная в начале 1999 года, в разгар паники Y2K в средствах массовой информации, эта статья примечательна предложением "На самом деле ничего не произойдет". Оглядываясь назад, можно сказать, что это предложение было абсолютно правильным, но в январе 1999 года это определенно была не та картина, которую рисовали основные СМИ. HowStuffWorks получила немало восторженных писем по электронной почте за этот простой прогноз.

Категория: Интернет | Добавил: Dexs (01.01.2024)
Просмотров: 64 | Рейтинг: 0.0/0