-
R23 ноя 15да успокойтесь, а с 8-16 битными системами, не так было?
а проблема 2000-го года?
ну перестанут пахать ваши раритетные часы или кофемолка )) подумаешь, покупайте новые, старые девайсы на помойку или в музей ))
компы программно это обходят, а к 2038 году все 32-х битные компы просто морально устареют -
23 ноя 152038?? к тому времени выпустят обновление операционок, а ныне действующий аппаратный парк уже и на помойках перестанет встречаться, возможно будут образцы в захолустных музеях. -
H23 ноя 15Проблема Y2K была вполне реальна, поскольку на тот момент в работе было полно систем, использующих 2 цифры для хранения года (оно и понятно, тогда экономили не то что каждый байт, а каждый бит).
Системы, понятно дело, не десктопные, поэтому большинство пользователей этого не заметили никак вообще. Но тем не менее там реально надо было переписывать код, причем код весьма старый, поэтому ООПшная школота со своими фреймворками на все случаи жизни, пролетала в таких работах как фанера над парижем. Программерам на коболе, по слухам, тогда были готовы платить неплохие бабки.
С unixtime'ом проблема больше высосана из пальца, поскольку как и в статье заметили, используется тип time_t, и если кодер не мудак (т.е. не определил переменную как int), все что надо — это перекомпилировать софт с новым time.h.
Специально проверил: sizeof(time_t) под ubuntu 12.04 i686 равен 4 байтам, под FC 22 x64 — 8 байт.
проблем с несовместимостью этих систем я пока не наблюдаю.
конечно, если сделать на одной write( f , time , sizeof(time_t)) а на другой read(f,&time,sizeof(time_t)) то проблемы будут, но это проблемы быдлокодера, а не unixtime, никто не гарантировал конкретную размерность тех или иных данных на любой архитектуре, что известно любому Си-шному программеру. Хочешь конкретных байт — используй intN_t/uintN_t.
Я как-то давно наступил на эти грабли, сделал структуру, описывающую заголовок bmp файла, считываю — явно какая-то лажа. Внезапно выяснилось, что компилятор для оптимизации произвел выравнивание данных на размер слова, т.е. 32 бита. :)
Вообщем-то даже на 32-битных системах ничего не мешает определить time_t как int64_t и просто перекомпилировать. Разве что код потом не влезет в какой-нибудь микроконтроллер, где все оптимизированно с точностью до байта.
ps. Лучше бы вспомнили более насущные проблемы — IPv4/IPv6, и то, что много оборудования до сих пор не поддерживает бесклассовые IP-сети. В ZyXEL'овской точке доступа/роутере на LAN-интерфейсе можно поставить только /24 и никак иначе. Поэтому в сети /22 не с любого компа можно зайти на ее интерфейс. :)
Сделано с
NoNaMe