Comments 42
Посчитайте 1-й день года по Вашей формуле, у Вас получится 2-е января, т.е. на самом деле второй. Т.е. прибавлять 256 нужно к дате 31.12.2023, а не 01.01.2024. Тогда 256-й день получится 12.09.2024, всё правильно посчитано.
Просто у него первое января это нулевой день, а не первый...
А в Excel'е есть несуществующая дата 29.02.1900, и что? )
Хотя, может так и логичней, если праздник наступает в 0 часов 0 минут по прошествии 256 дней, то есть на 257-й день. Тогда действительно праздник надо сдвигать на 1 день вперёд (13 сентября в високосные годы и 14 сентября в обычные). У нас же Новый год наступает в 0 часов 0 минут 1 января, а не 31 декабря.
Автор просто немного путает количество значений и максимальное число. Поэтому когда он добавляет к 1-му января число значений появляется ошибся, а должен был добавлять максимальное 255. Так как у него 1-е января уже 0-й день и он посчитан.
Нольник или начальник)
Ох уж мне эти вечные споры... Я помню аналог про смену тысячелетия (31.12.1999-01.01.2000 или 31.12.2000-01.01.2001).
В целом, 256 - это максимальное число комбинаций, влезающих в байт (8 бит). У нас нет нулевого января - значит формально такая дата невозможна (ошибочна). То же относительно месяца. Чего не скажешь о времени - ибо "минута без времени" между 23:59 и 00:01 вполне возможна.
Идея о 13-ом сентября 2024-ого - она прямо в духе тех, кто отчет тысячелетий начал с 01.01.2001. И, если честно, тогда это все порядком надоело.
Если отсчитывать год с 0, то просто праздновать нужно день № 255, который является 256-м днем года. Если у вас есть 8 бит и вам надо присвоить каждому дню уникальную последовательность, то 12 сентября 2024 в день № 255 память закончится.
Если бы мы отмечали не день программиста, а коду программиста, т.е. период в 256 дней, то отмечать его следовало бы с началом новой коды на 257-й день, но тогда в календаре это была бы каждый раз разная дата.
Однако, когда я 1-й раз несколько лет назад услышал об этой дате, я по привычке провел факт-чекинг, чтобы вычислить точную дату дня программиста.
А в 0-й раз почему не провели, в этом то вся и проблема. Вы опоздали с проверкой.
Если мне понадобится вычислять разы, которых будут десятки тысяч, работать с отрицательными разами и писать для этого код, то нулевой раз обязательно появится.
Я программист, а не маньяк, поэтому для бытовых примеров использую слова, принятые для бытового применения. Это, кстати, не навсегда. Например, раньше в русском и многих других языках были обособлены слова, обозначающие два предмета, второй номер и т. д., а сейчас хоть "2 человека идут (идута)", хоть "50 человек идут (идутъ)", почти никакой разницы. Так что и нулевые формы существительных, глаголов и прилагательных в будущем могут появиться (хотя, вероятность этого небольшая).
Комментарии... Есть какая-то забавная ирония во всех этих рассуждениях. Типичная off by one error. Праздновать два дня будем.
~$ date '+%d.%m.%Y'; date +%j
13.09.2024
257
~$ date -d '-1 days' '+%d.%m.%Y'; date -d '-1 days' +%j
12.09.2024
256
Это день эникейщика, если угодно - админа. День программиста - 10 декабря, конечно.
Насчёт приоритета Ады не уверен - всё таки до отладки на железе у неё не дошло, а в теории алгоритм ещё у Евклида был. Я бы за 9 сентября проголосовал )
Я всё же за леди Аду. Понятия "цикл" и "ячейка" дорогого стоит...
что она просто была дочкой разработчика языка программирования
Язык программирования от Байрона - это интересно )
Почитайте про леди Аду Лавлейс. В честь кого назван язык - дело десятое, в данном случае.
Евклидовы алгоритмы - последовательные действия получения конкретных результатов. Главное - нет оформления условных переходов, циклов и единиц памяти (ячеек) как сущностей и инструментов создания произвольных алгоритмов.
И вот именно это сделала Ада. Более того, она же сделала и первый баг в той самой первой программе.
Соглашусь, что у Евклида алгоритм недостаточно формализован для исполнения на механическом устройстве (хотя фактически там и цикл, и две ячейки памяти есть).
Более того, она же сделала и первый баг в той самой первой программе.
Вроде нашла баг в коде Бэббиджа, нет?
у Евклида алгоритм недостаточно формализован для исполнения на механическом устройстве
Дело не в этом, а в понимании и фиксации того, что есть инструменты, универсальные для написания самых разных алгоритмов. А так-то и "курочка-ряба" - алгоритм.
Вроде нашла баг в коде Бэббиджа
Да, она делала поправки Бэббиджу. Но и в известной "распечатке" первой программы есть баг. Первый баг в программе!
Мы тоже в конце 90-х начале 00-х праздновали в день рождения леди Ады.
И это единственно правильное - то, как сами программисты отмечают. А правительство - что правительство, при чём тут оно?
Вот у энергетиков как стал день принятия ГОЭЛРО (и заодно самый короткий день в году) праздником, так и отмечался день энергетика 22 декабря, несмотря на несколько попыток правительства его переместить или отменить. И — правительство сдалось :-)
Правильный день программиста уже был Sun Mar 24 2024 13:27:12 GMT+0300 (Москва, стандартное время)
Unixtime 1711276032 или 0b1100110000000000000000000000000
Следующий будет Wed Apr 16 2025 22:07:44 GMT+0300 (Москва, стандартное время) 😭
Впрочем я жду правильный день программиста в 2038 году
Простая команда прибавляет к началу года 256 дней.
1 + 256 = 257
Ах, в очередной раз ошибка с нулевым индексом)
Для проверки правильности даты нужно вспомнить анекдот. 2+2=?.а сколько вам надо?. Так и здесь.
Существует хоть какое-нибудь логическое объяснение того, почему 256 января называют то 12, то 13 сентября? С детства не люблю мигающие юнит-тесты.
А если вспомнить, что первой появилась троичная система исчисления, то и значение 2^8 становится не таким сакральным.
Вообще дался вам этот байт! Лучше праздновать каждый четвёртый (ну ладно, каждый второй) день в году.
С правильным Днем программиста