Оценить:
 Рейтинг: 0

Пузыри. Айти для детей и их родителей

Год написания книги
2021
<< 1 ... 7 8 9 10 11 12 13 >>
На страницу:
11 из 13
Настройки чтения
Размер шрифта
Высота строк
Поля

– На самом деле, любой папа-программист на этом вопросе сядет на пол и заплачет. Да так, что сыну придется его долго утешать. Я и сам бы сейчас разрыдался.

– Но, предположим, после этого папа решил все-таки объяснить сыну почему.

– Ну, для начала… Для начала папа должен рассказать сыну про год как результат полного прохода планеты вокруг светила по своей орбите. Дальше, если следовать формальной логике, следовало бы рассказать про месяц, но…

– Но забудьте о формальной логике, когда речь идет о датах и времени! – вклинился Борис Николаевич.

– К сожалению, именно так. Потом папа должен рассказать про день как результат полного оборота планеты вокруг своей оси. На этом базовые вводные, которые были даны жителям этой планеты самой планетой, заканчиваются.

– И начинается очередная магия. Время – это социальный конструкт.

– Спасибо. Когда-то, сильно до нашей эры, какие-то египетские товарищи про 365,25 дней в году уже знали. Астрономы, несмотря на низкую продолжительность жизни в то время, успели это уже замерить. Но году требовалось разбиение на даты. А суткам требовалось разбиение на время. И решили товарищи поделить сутки на какие-то понятные промежутки. В принципе, глупо ожидать от ребят, которые придумали очень много всего крутого, но не придумали вменяемого алфавита или хотя бы цифр, что они придумают что-то вменяемое и удобное в качестве календаря. И они оправдали ожидания эти.

– Я по памяти воспроизвел, как в Древнем Египте записывали дату[26 - Честно срисовано Борисом Николаевичем с изображения в википедии.]:

– Спасибо, Борис Николаевич. Но мне кажется, что вы подглядывали в телефоне в википедию, пока рисовали.

– Ой… Ну какой возраст, такая и память…

– А когда им, египтянам, потребовалось эту дату раздробить, ничего лучше, кроме как подробить ее на 24 куска, они не придумали. Почему на 24? Кто их теперь уже разберет. С тех пор многое поменялось, но 24 часа перескакивали из календаря в календарь, и в итоге имеем, что имеем.

– Горе-горе…

– Делить час на что-то более мелкое люди пытались с тех пор еще несколько тысяч лет. Тут на 12, тут на 24, тут на 60, тут на 360. Не любили в древности десятки и их степени, к очень великому сожалению. Каждая культура, каждая цивилизация делала это по-своему, и всех в целом устраивало. А потом несколько европейских сумрачных гениев по очереди придумывали и совершенствовали такой сверхтехнологичный девайс, как механические часы. И досовершенствовались до того, что час делится на 60 минут, а те на 60 секунд. А дальше вместе с механическими часами это было навязано всей остальной планете.

– На этом месте сын, а мы ведь все еще в примере про папу и часы, спрашивает: «А что такое секунда?» Сын же любознательный.

– И папа, конечно же, дает сыну простое и понятное определение секунды: «1/31 556 925,9747 доля тропического года для 0 января 1900 в 12 часов эфемеридного времени». Но это определение просуществовало недолго, его заменили более простым: «величина устанавливается фиксацией численного значения частоты сверхтонкого расщепления основного состояния атома цезия-133, находящегося в покое при температуре 0 К, равным в точности 9 192 631 770, когда она выражена единицей СИ Гц, что эквивалентно с

». Как хорошо, что у меня открыта статья «Секунда» на википедии[27 - Я серьезно, там так и написано.] и я смог это прочитать почти без запинки. Для тех, кто не верит – это официальные определения секунды.

– А для тех, кто не понял, поясню: то есть какие-то умные часовые мастера сделали механизм, в котором что-то и как-то работало, а дальше сотни физиков, химиков, астрономов, астрологов, гомеопатов, знахарей и других замечательных людей пытались придумать хоть сколько-нибудь вменяемое определение того, что используют все люди на планетке более сотни лет. И не придумали ничего лучше и проще, чем «1/31 556 925,9747 доля» и «в точности 9 192 631 770» при температуре 0 К. Да, я теперь тоже открыл статью «Секунда».

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

– Как вы понимаете, месяцы и недели были придуманы просто так. Так же как и количество дней в них. Тут пусть будет 28, а тут пусть целых 31. Антон, продолжай, а я сейчас зарисую.

– 1 февраля 2003-го я встретил в школе, одиннадцатый класс. Помню, сколько радости меня переполняло, когда я выводил в тетради «01.02.03». Вру, конечно, ничего я не помню. Календарь говорит, что это была суббота. Я даже не смог вспомнить, учились ли мы по субботам в одиннадцатом классе. Но дату помню – красивая была дата. А как на эту дату отреагирует машина? Машина наверняка попросит дать ей формат даты[28 - Формат записи даты – те самые «дд.мм.гггг», «гггг-мм-дд», «мм/дд/гг»], ибо вариаций того, что хотел сказать автор, машина знает множество. 1 февраля 2003, 2 января 2003, 2 марта 2001, 3 февраля 2001 – все это и кое-что еще. И то в случае, если машина не скажет «еггог ай-ай-ай». А она скажет.

– Это все в том числе потому, что в разных странах разные форматы – это тоже норма, к сожалению. Что в России – 1 февраля 2003, то в США будет 2 января 2003, а в Китае – 3 февраля 2001.

– Да, ведь машинную логику закладывают люди. И это ведь еще стоит порадоваться, что человечество ушло от следующих календарей: майя, Нуми Помпилия, самватский, лунно-солнечный, бахаи, румийский, хараппский, Армелина и от сотен других.

– Даже от советского революционного календаря человечество ушло. Спасибо википедии за то, что мы хотя бы их названия сегодня можем вспомнить.

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

– И вот, казалось бы, один григорианский календарь у всех, – продолжил Антон. – Сутки можно измерить по солнцу. Секунду каждый желающий может аж двумя способами отмерить в домашних условиях: и через атом цезия, и через скорость света. Ну вот чего еще не хватает? Но проблемы продолжают возникать даже сейчас, особенно в информационных технологиях.

– А следствием являются проблемы у их пользователей.

– В каждом из существующих языков программирования есть несколько, а то и несколько десятков, типов данных, связанных с хранением даты и времени. Есть десятки функций, которые их как-то преобразовывают. Форматов ввода и вывода даты и времени (маска, шаблон) десятки, где-то они указываются неявно, где-то явно преобразовываются, и вот 1 февраля превратилось во 2 января. Сколько людей проспало работу, потому что будильник сам не перевелся на летнее время? А сколько проспало из-за того, что перевело часы на зимнее время, а потом они еще раз перевелись автоматически? Сколько людей, покупая билеты или назначая встречу, не учли часовые пояса? Или учли, но как-то не так. Или попросили бездушную и безошибочную машину сказать точное время в другой части планеты…

– А бездушная и безошибочная машина бездушно не ошиблась, просто тоже не учла зимнее/летнее время, отличие времен на устройстве от текущего часового пояса и много чего еще. Либо учла несколько раз.

– Да-да. Несколько лет назад лично наблюдал, как мои коллеги делали мобильные приложения для крупной конференции, которая должна была состояться во Владивостоке. Суть была такова: часть разработчиков находится в Москве, часть в Астрахани (это уже другой пояс), мероприятие во Владивостоке (третий). Гости мероприятия едут из разных стран. Приложения работают на двух-трех операционных системах разных версий. У конкретного пользователя может быть вообще любой часовой пояс. При этом часовой пояс может быть установлен один, а время выбрано другое. А еще между непосредственно разработкой и мероприятием должно было время то ли переехать с летнего на зимнее, то ли это был первый год, когда, наоборот, не должно было. И при этом при всем пользователь должен был видеть актуальную информацию о времени проведения конкретных мероприятий конференции относительно времени на устройстве. Наблюдал за этими страданиями не одну ночь.

– Нам пора закругляться.

– Спасибо, Борис Николаевич. Напоследок, вернусь к форматам дат. Сам неоднократно сталкивался с тем, что крутое западное ПО говорит, что единственный католический вариант вывода даты – «мм. дд. гггг», а иногда «м.д.гггг», а вы со своими «дд. мм. гггг» можете идти и построить CRM/BI на базе…

– На базе «2Ж», Антон. У нас это называется так.

– Хм, окей. Нет, ну некоторые, конечно, пытались сделать это на 2Ж. Но большинство использовало то, что есть. Однако с датой надо было что-то делать.

– Тем, кто за жизнь не успел достаточно пострадать над форматами дат, поясни, пожалуйста, чем отличается «мм. дд. гггг» от «м.д.гггг».

– В двухзначных значениях месяца и дня разницы нет, а вот третий день восьмого месяца будет записан в первом случае как «08.03», а во втором как «8.3». В итоге, чтобы это католическое написание преобразовать в православное «дд. мм. гггг», в далекие годы нужно было перевести дату в текст, поискать в нем точки или другие разделители и запомнить их положение. После чего относительно положения понять, сколько символов (1 или 2) занимает значение, после чего поменять их местами и хранить дальше в виде текста. Этот топорный механизм работал почти всегда. Были и более изящные, но их реализация была не всегда доступна. Сейчас все это атавизм. Даже большие западные католики поняли, что нужно дать православным возможность выводить дату в православном режиме.

– Но если что-то является атавизмом, это не значит, что это что-то не продолжает использоваться повсеместно… На этом все, до следующего вторника. Антон, спасибо.

Пузырь безопасности

– Борис Николаевич, к вашему Антону претензий нет. Даты – это очень и очень важно. Но обозначенную «Проблему-2000» вы так и не раскрыли в ходе лекции.

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

– Что кроме нее?

– Информационная безопасность. На этой лекции буду рассказывать на основании своего опыта. На следующую хочу позвать еще одного бывшего коллегу.

– Специалиста по ИБ?

– Специалиста по общению с ИБ.

– Если бы я был японцем, я бы сказал:

Каждый диалог

С вами сердце скорбью

Наполняет мне.

Лекция от 29.10.2019

– Всем ку! Мы в прошлый раз разглагольствовали целую лекцию про даты, а «Проблема-2000» опять мимо. Давайте быстренько. На дворе рубеж третьего десятилетия двадцать первого века. Те, кто писал программы в начале девяностых прошлого века, особо не думали о проблемах календарей. Сотрудники передовых многомиллиардных корпораций не думали о том, что их детища проживут пять-десять лет и перешагнут рубеж тысячелетия. Что уж говорить о сотрудниках более мелких продуктовых компаний. Хотя официально рубеж вроде бы перешагнулся с 00 на 01, а не с 99 на 00, но именно смена с 99 на 00 грозила всему миру. Из-за этого отвратительного мученичества с датами, а также еще и из-за крайне невысокой производительности компьютеров того времени считать биты было необходимостью. На один символ два бита. Еще два бита на каждый разделитель. А выкидывание двух лишних символов из каждой даты («19») позволяло сэкономить четыре бита и чуть-чуть сократить трудоемкость операций над ними. Сделали и забыли, другие тоже сделали и забыли, третьи… Четвертые поставили ПО и решили больше не обновляться, пятые поставили, но больше обновлений не прилетало от шестых, потому что они закрылись и разбежались. И вот в какой-то момент времени оказывается, что компьютеров на планете десятки миллионов, на каждом десятки программ, компьютеры замешаны уже практически во всех сегментах человеческого бизнеса… И большая часть экземпляров используемого ПО, то есть сотни миллионов инсталляций, считает, что после 1999 года идет 1900-й. Точнее, после 99 идет 100, что могло запросто считаться и как 19100.

– Возникала натуральная квантовая неопределенность. Каждая программа могла умереть или жить дальше при начале 2000 года. И только позиция наблюдателя, который посмотрит в программный код, могла внести ясность в эту неопределенность. Это, конечно, шутка, квантовой неопределенностью тут и не пахнет. Обычная такая, неквантовая… Человечество спохватилось своевременно, что-то обновили разработчики, что-то поменяли пользователи: подкрутили в исходниках, где это было возможно, либо перешли на новые системы, где нет. Также некоторым системам было индифферентно, какой на дворе год, хоть 1601-й, хоть 2038-й. Калькулятор и пасьянс «Косынка» будут служить вам верой и правдой вне зависимости от года. Человечество преодолело проблему малой кровью.
<< 1 ... 7 8 9 10 11 12 13 >>
На страницу:
11 из 13