شاید از تبلیغات رسانهها در مورد مشکل سال 2000 یا Y2K چیزی یادتان بیاید
و جنجالی که شرکتهای هواپیمایی و مخابراتی به راه انداختند را یادتان باشد. گرچه سال 2000 هم شد و زمین به آسمان نیامد!
اگر اهل کامپیوتر و این حرفها باشید حتماً نام برنامه نویسی به زبان C به گوشتان خورده است. این زبان برنامه نویسی از اهمیت بالایی برخوردار است و اکثر نرمافزارهایی که روزانه از آن استفاده میکنید تحت آن نوشته میشوند.
مشکل سال 2000 به همین زبانهاي برنامه نویسی بر میگشت ولی برنامههای تحت C از این مشکل در امان بودند. ولی شاید در سال 2038 این برنامهها خیلی هم خوش شانس نباشند!
این به این دلیل است که برنامههای C با سیستمی به نام کتابخانه استاندارد زمان یا Standard Time Library کار میکنند. این کتابخانه فرمت 4 بایتی برای ذخیره کردن زمان به کار میبرد و خاصیتهای دیگری برای تغییر و تبدیل زمان دارد.
این استاندارد فرض میکند که شروع زمان ساعت 12:00:00 اول ژانویه 1970 به وقت Pacific Time Zone است و هر زمان دیگری بر طبق این زمان سنجیده میشود و ساعتها و روزها و سالها بر اساس ثانیههایی که از این زمان گذشته شناخته میشوند. برای مثال 919642718 مقدار ثانیههایی است که از آن زمان میگذرد و ساعت 16:18:38 بیست و یکم فوریه سال 1999 را نشان میدهد.
کار کردن با این روش برای کامپیوتر آسان است چون با انجام عملیات ساده جمع و تفریق میتواند فاصله بین دو تاریخ را محاسبه کند.
اگر کمی بیشتر در مورد کارکرد کامپیوتر اطلاعات داشته باشید میدانید که یک مقدار 4بایتی در کامپیوتر ماکسیمم میتواند 2147483647 باشد. این مقدار در کتابخانه استاندارد زمان برنامههای C برابر روز 19 ژانویه 2038 است و مقدارهای بعد از آن منفی و غیر قابل قبول حساب میشوند.
این مشکل ساده تر از مشکل سال 2000 است. خوشبختانه برنامههایی که ساختار خوب و مناسبی دارند را با ایجاد کمی تغیر در ساختار کتابخانه آن از این مشکل در امان نگاه داشت. برای مثال مقدار متغیر آنها را از 4بایتی به 8بایتی تغییر داد.
این گونه مشکلات ساختاری در اکثر سیستمهای کامپیوتری رایج است. برای مثال برای سیستمهای PC IBM با توجه به اینکه شروع سال برای آنها 1980 میلادی است و مقادیر زمان 32 بایتی است؛ مشکلی در سال 2116 پیش بینی میشود.
وینذوز NT مقیاس 100 نانو ثانیه دارد و با 64 بایت زمان را ذخیره میکند و شروع زمان برای آن ابتدای سال 1601 است. از این رو پیشبینی میشود که در سال 2184 مشکلی برای آم پیش بیاید. البته اگر کسی تا آن زمان نام ویندوز NT را به خاطر داسته باشد!
در این میان سیستمهای مکینتاس حالا حالاها وقت دارند که با خیال راحت به کار ادامه دهند چون تا سال 29940میلادی مشکلی برایشان پیش نمیآید
همشهری آنلاین - رشید عسگری