V čom je problém 2038?
Problém roku 2000 sa rozumie väčšina ľudí v týchto dňoch, a to z dôvodu veľkého množstva pozornosti médií to přjímal .
Väčšina programy napísané v programovacom jazyku C sú relatívne imúnne voči problému Y2K, ale namiesto toho trpí od roku 2038 problému. Tento problém vzniká preto, že väčšina programov C použitie knižnice rutín s názvom štandardná doba knižnice. Táto knižnica zavádza štandardný formát 4-byte pre skladovanie časových hodnôt, a tiež poskytuje rad funkcií pre konverziu, zobrazenie a výpočet časovej hodnoty.
Štandardný formát 4-byte predpokladá, že počiatok času je 1. január 1970 v 12:00:00 hod Táto hodnota je 0. Akákoľvek času /dáta hodnota je vyjadrená ako počet sekúnd, po nulovú hodnotu. Takže hodnota je 919642718 919,642,718 sekúnd pasca 12:00:00 hod 1. januára 1970, čo je nedeľa 21 február 1999, 16:18:38 v tichomorského času (USA). To je vhodný formát, pretože ak odpočítame dve ľubovoľné hodnoty, to, čo dostanete, je počet sekúnd, že je časový rozdiel medzi nimi. Potom môžete používať ďalšie funkcie v knižnici zistiť, koľko minút /hodín /dní /mesiacov /rokov uplynulo medzi týmito dvoma časmi.
Ak ste čítali Ako bitov a bytov Práca, viete, že podpísaný 4-byte integer má maximálnu hodnotu 2,147,483,647, a to je miesto, kde je problém Rok 2.038 pochádza. Maximálna hodnota času, než to sa prevalí na zápornú (a) neplatná hodnota je 2147483647, ktorý sa premieta do 19. januára 2038. V tento deň, všetky programy, ktoré používajú C je štandardná doba knižnice začne mať problémy s dátumom výpočty.
Tento problém je trochu jednoduchšie, opraviť, než na problém Y2K na sálových počítačov, našťastie. Dobre napísané programy môžu byť jednoducho recompiled s novou verziou knižnice, ktorá používa, napríklad, hodnoty 8 bajtov pre formát ukladania. To je možné, pretože knižnica zapuzdruje po celú dobu aktivity s vlastnými typov a funkcie (na rozdiel od väčšiny sálového počítača programy, ktoré neboli štandardizovať formáty dáta alebo výpočty) času. Takže problém Rok 2.038 by nemalo byť zďaleka tak ťažké, ako opraviť problém Y2K bol
Tu sú niektoré zaujímavé odkazy :.