امین یزدی
امین یزدی
خواندن ۳ دقیقه·۴ سال پیش

ایراد فنی سال 2000

ایراد فنی سال 2000 (Y2K glitch)، به مشکلات قالب بندی و نمایش تاریخ در سیستم‌های کامپیوتری در ابتدای سال 2000 میلادی اشاره دارد.

این مشکلات به این علت پیش آمدند که برنامه‌های کامپیوتری سال‌ها، عدد مربوط به سال را به جای 4 رقم تنها با 2 رقم پایانی ذخیره می‌کردند و نمایش می‌دادند. به همین علت بعد از پایان سال 1999، در برخی برنامه‌ها سال 1900 نمایش داده می‌شد و مرتب سازی اطلاعات بر اساس تاریخ هم مشکلاتی را ایجاد می‌کرد.


از اونجایی که این اتفاق چیزی شبیه به رفتن به 1400 از سال 1399 برای ماست. به همین بهانه تصمیم گرفتم که بخشی از این مقاله رو از ویکی‌پدیا ترجمه کنم.

اشتباه تابلوی الکترونیکی در نمایش سال 2000. منبع: ویکی‌پدیا
اشتباه تابلوی الکترونیکی در نمایش سال 2000. منبع: ویکی‌پدیا


(ادامه) ... همین مسئله باعث شده بود که موسسه بریتیش استاندارد در سال 1997 استانداردی فنی معرفی کند تا از بروز مشکلات در برنامه‌های کامپیوتری جلوگیری کند.

این استاندارد حاوی 4 قاعده بود:

  • هیچ تاریخی نباید باعث بروز خطا در عملیات‌های کامپیوتری شود.
  • عملیاتی که به تاریخ‌ها وابسته هستند، باید قبل از سال 2000 و در سال 2000 و همچنین بعد از آن هم به درستی کار کنند.
  • تاریخ‌ها چه بر اساس محاسبه الگوریتمی بدست آمده باشند چه به طور ثابت برنامه ریزی شده باشند باید عاری از هرگونه ابهام یا ایراد باشند.
  • سال 2000 یک سال کبیسه است!


در این سال دو مشکل ممکن بود باعث ایجاد اختلال در کارایی برنامه‌های کامپیوتری بشه.

یک. داده‌های مربوط به سالیانی که یک برنامه در حال کار بوده است، به خوبی قابل مرتب سازی نباشد.

مثلا اگر فقط دو رقم برای نمایش تاریخ در نظر گرفته شده باشد، سال 00 که به صورت تقویمی بعد از سال 99 قرار دارد؛ در محاسبات کامپیوتری قبل از این سال قرار می‌گیرد.

دو. کبیسه بودن سال 2000.

همانطور که می‌دانید هر 4 سال یک بار، یک سال بعنوان سال کبیسه در نظر گرفته می‌شود، به این معنی که این سال در تقویم یک روز اضافه‌تر دارد. اما از طرفی سال‌های مضرب 100 هم سال کبیسه نیستند.

برخی برنامه نویس‌ها با در نظر گرفتن این قاعده تصور می‌کردند که سال 2000 سال کبیسه نیست. اما در صورتی که قاعده دیگری که وجود دارد این است که سال‌های مضرب 400 هم حتما کبیسه هستند. بنابراین سال 2000 را هم می‌بایست سال کبیسه در نظر گرفت.

همچنین در 31 سال اول از سال 2000 (یعنی از 2000 تا 2031)، مشکل دیگری هم وجود دارد.

و آن مشکل این است که اگر تاریخ را به شکل "YY/MM/DD" «روز/ماه/سال» ]به صورتی که سال دو رقمی باشد[ نمایش دهیم، ممکن است سال و روز با هم اشتباه گرفته شوند.

بعنوان مثال سال 12/08/03؛ هم ممکن است روز سوم ماه هشتم سال 2012 باشد و هم روز دوازدهم ماه هشتم سال 2003. مشکلی که در سال‌های قبل از 2000 وجود نداشت.

در سال 1997 شرکت AT&T اعلام کرد که 60% از زمان و هزینه‌ای که برای حل این مشکلات وجود دارد را باید صرف تست کردن کارایی برنامه بخاطر تغییرات انجام شده نمود.

با پیش‌بینی‌های صورت گرفته، شرکت‌ها و سازمان‌های زیادی در کشورهای مختلف دست به اصلاح این مشکلات زدند و همین باعث شد مشکلات گزارش شده در سال 2000 بسیار کم باشد.

در نهایت هزینه‌های مالی صورت گرفته برای حل این مشکلات چیزی نزدیک به 300 میلیارد دلار تخمین زده شده است.



امیدوارم مشکلی در سیستم‌های کامپیوتری کشور ما در سال 1400 رخ نده. و سال خوبی داشته باشید. ?

اگر این مطلب رو دوست داشتید حتما برای بقیه هم بفرستید و ❤️ فراموشتون نشه :)


مطالعه بیشتر

مشکل سال 2000؛ راه حل‌هایی که برای رفع مشکل در نظر گرفته شد و زمینه‌های شروع برای حل مشک توسط کشورهای مختلف و ...


مشکل مربوط به سال 2038 که در روز 1 ژانویه، ذخیره قالب تاریخی unix time در یک متغیر عددی (integer) 32 بیتی بی علامت، ممکن نخواهد بود


سایر مشکلات شناسایی شده مربوط قالب بندی و نمایش تاریخ‌ها




برنامه نویسیمهندسی نرم افزارباگ۱۴۰۰سال ۱۴۰۰
علاقه‌مند به دنیای تکنولوژی و محصولات دیجیتال
شاید از این پست‌ها خوشتان بیاید