Пузыри. Айти для детей и их родителей - страница 34
– Как вы понимаете, месяцы и недели были придуманы просто так. Так же как и количество дней в них. Тут пусть будет 28, а тут пусть целых 31. Антон, продолжай, а я сейчас зарисую.
– 1 февраля 2003-го я встретил в школе, одиннадцатый класс. Помню, сколько радости меня переполняло, когда я выводил в тетради «01.02.03». Вру, конечно, ничего я не помню. Календарь говорит, что это была суббота. Я даже не смог вспомнить, учились ли мы по субботам в одиннадцатом классе. Но дату помню – красивая была дата. А как на эту дату отреагирует машина? Машина наверняка попросит дать ей формат даты28, ибо вариаций того, что хотел сказать автор, машина знает множество. 1 февраля 2003, 2 января 2003, 2 марта 2001, 3 февраля 2001 – все это и кое-что еще. И то в случае, если машина не скажет «еггог ай-ай-ай». А она скажет.
– Это все в том числе потому, что в разных странах разные форматы – это тоже норма, к сожалению. Что в России – 1 февраля 2003, то в США будет 2 января 2003, а в Китае – 3 февраля 2001.
– Да, ведь машинную логику закладывают люди. И это ведь еще стоит порадоваться, что человечество ушло от следующих календарей: майя, Нуми Помпилия, самватский, лунно-солнечный, бахаи, румийский, хараппский, Армелина и от сотен других.
– Даже от советского революционного календаря человечество ушло. Спасибо википедии за то, что мы хотя бы их названия сегодня можем вспомнить.
– Возможно, кто-то из жителей планеты все еще живет по ним, но это исключительная проблема тех самых жителей. Ведь абсолютное большинство человечества, к небольшому счастью программистов, постепенно подтянулось к григорианскому, даже те, кто параллельно календарит еще и по какому-нибудь своему.
– И вот, казалось бы, один григорианский календарь у всех, – продолжил Антон. – Сутки можно измерить по солнцу. Секунду каждый желающий может аж двумя способами отмерить в домашних условиях: и через атом цезия, и через скорость света. Ну вот чего еще не хватает? Но проблемы продолжают возникать даже сейчас, особенно в информационных технологиях.
– А следствием являются проблемы у их пользователей.
– В каждом из существующих языков программирования есть несколько, а то и несколько десятков, типов данных, связанных с хранением даты и времени. Есть десятки функций, которые их как-то преобразовывают. Форматов ввода и вывода даты и времени (маска, шаблон) десятки, где-то они указываются неявно, где-то явно преобразовываются, и вот 1 февраля превратилось во 2 января. Сколько людей проспало работу, потому что будильник сам не перевелся на летнее время? А сколько проспало из-за того, что перевело часы на зимнее время, а потом они еще раз перевелись автоматически? Сколько людей, покупая билеты или назначая встречу, не учли часовые пояса? Или учли, но как-то не так. Или попросили бездушную и безошибочную машину сказать точное время в другой части планеты…
– А бездушная и безошибочная машина бездушно не ошиблась, просто тоже не учла зимнее/летнее время, отличие времен на устройстве от текущего часового пояса и много чего еще. Либо учла несколько раз.
– Да-да. Несколько лет назад лично наблюдал, как мои коллеги делали мобильные приложения для крупной конференции, которая должна была состояться во Владивостоке. Суть была такова: часть разработчиков находится в Москве, часть в Астрахани (это уже другой пояс), мероприятие во Владивостоке (третий). Гости мероприятия едут из разных стран. Приложения работают на двух-трех операционных системах разных версий. У конкретного пользователя может быть вообще любой часовой пояс. При этом часовой пояс может быть установлен один, а время выбрано другое. А еще между непосредственно разработкой и мероприятием должно было время то ли переехать с летнего на зимнее, то ли это был первый год, когда, наоборот, не должно было. И при этом при всем пользователь должен был видеть актуальную информацию о времени проведения конкретных мероприятий конференции относительно времени на устройстве. Наблюдал за этими страданиями не одну ночь.