วันพุธที่ 24 กันยายน พ.ศ. 2557

ปัญหาปี ค.ศ 2000 (Y2K Problem)

      ปัญหาปี ค.ศ. 2000 บางครั้งเรียกว่า ปัญหาวายทูเค (Y2K problem) เป็นปัญหาที่เกิดกับระบบเอกสารและการบันทึกข้อมูล ทั้งในแบบดิจิตอล (เกี่ยวกับคอมพิวเตอร์) และระบบอนาล็อก สืบเนื่องมาจากการบันทึกปีคริสต์ศักราชจำนวนสี่หลัก ย่อเหลือเพียงสองหลักท้าย โดยละสองหลักแรก คือ "19" และ "20" ไว้ในฐานที่เข้าใจ
      ปัญหาจะเกิดขึ้นเมื่ออุปกรณ์ต่างๆ ใช้งานจนถึงหลังเที่ยงคืนของวันที่ 31 ธันวาคม ค.ศ. 1999 และเข้าสู่วันที่ 1 มกราคม ค.ศ. 2000 แต่ระบบกลับเข้าใจว่าเป็น ค.ศ. 1900 ทำให้การทำงานของระบบผิดเพี้ยน ปัญหานี้ถูกหยิบยกมากล่าวถึงเป็นครั้งแรกในหนังสือชื่อ Computers in Crisis เขียนโดย Jerome และ Marilyn Murray ในปี ค.ศ. 1984 และในเครือข่ายยูสเนต ในปี ค.ศ. 1985 สร้างความตื่นตัวในแวดวงธุรกิจ การธนาคาร การแพทย์ และการทหาร ว่าอาจทำให้ระบบคอมพิวเตอร์ทำงานผิดพลาด อาจทำให้ระบบสาธารณูปโภค เช่น ไฟฟ้า โทรศัพท์ ระบบอาณัติสัญญาณ ถึงขั้นหยุดการทำงาน

ความหมายของคำว่า Y2K

      Y2K คือคำย่อของ Year 2000 ซึ่งหมายถึงปี ค.ศ. 2000 โดย Y ย่อมาจากคำว่า Year, K เป็นหน่วยในการวัดค่าต่างๆ ในระบบเมตริก มีค่าเท่ากับ 1000 2K จึงมีค่า 2x1000 เท่ากับ 2000


สาเหตุ

  • การเก็บข้อมูลปี ค.ศ. เฉพาะแค่ 2 หลักท้ายแทนที่จะเก็บเต็ม 4 หลักโดยถือว่า 2 หลักหน้าคือ 19 เสมอ เช่น ค.ศ. 1998 จะเก็บแค่เพียง 98 ดังนั้นข้อมูลในระบบจึงมีค่าอยู่ในช่วงระหว่างปี ค.ศ. 1900-1999 เท่านั้น เมื่อถึงปี ค.ศ. 2000 คอมพิวเตอร์ยังคงถือว่า 2 หลักหน้าคือ 19 อยู่เหมือนเดิม เมื่อป้อนปีเป็น 00 ซึ่งหมายถึงปี ค.ศ. 2000 คอมพิวเตอร์ยังคงตีความว่าเป็นปี ค.ศ. 1900 เหมือนเดิม คังนั้นการคำนวณเกี่ยวกับระยะเวลา เช่น การคำนวณอายุ การคำนวณระยะเวลา การชำระหนี้และการเรียงลำดับข้อมูลจึงผิดพลาดหมด
  • การคำนวณปีอธิกสุรทิน ไม่ถูกต้องทำให้เดือนกุมภาพันธ์ปี ค.ศ. 2000 มีเพียง 28 วันเท่านั้น ทำให้การคำนวณหาวันที่ในปี (Day of Year) หลังเดือนกุมภาพันธ์ผิดพลาดหมด กฎในการคำนวณปีอธิกสุรทินที่ถูกต้องคือ
1. ปีที่หารด้วย 4 ลงตัวจะเป็นปีอธิกสุรทิน
2. ปีที่หารด้วย 100 ลงตัวจะเป็นและไม่เป็นปีอธิกสุรทิน
3. ปีที่หารด้วย 400 ลงตัวจะเป็นปีอธิกสุรทิน
หากสลับกฎข้อ 2 และกฎข้อ 3 จะทำให้การคำนวณปีอธิกสุรทินของ ปี ค.ศ. 2000 ผิดพลาด
  • ช่วงก่อนวันที่ 1 มกราคม ค.ศ. 2000 จะเกิดปัญหา Y2K แต่มีอีกวันที่มีปัญหาคล้ายกันวันที่ 9 กันยายน ค.ศ. 1999 เพราะวันนี้อาจจะมีการเขียนในรูปแบบตัวเลข 9/9/99 ก็จะได้ขัดแย้งกับค่าวันที่ 9999 ที่ใช้บ่อยในการระบุวันที่ทราบ มันจึงเป็นไปได้ว่าโปรแกรมฐานข้อมูลอาจจะทำหน้าที่ในระเบียนที่มีวันที่ไม่ รู้จักในวันนั้น ค่อนข้างคล้ายกับนี้คือรหัสสิ้นสุดของแฟ้ม 9999 ที่ใช้ในการเขียนโปรแกรมภาษาที่มีอายุมากกว่า ในขณะที่ความกลัวเกิดขึ้นที่บางโปรแกรมไม่คาดคิดอาจยุติในวันที่ข้อผิดพลาด ก็มีแนวโน้มที่จะทำให้ระบบประมวลผลของคอมพิวเตอร์
  • การแทนวันและเวลาโดยการนับจากเวลาอ้างอิงในอดีต เช่น ระบบหาตำแหน่งด้วยดาวเทียม (GPS) จะใช้ตัวเลขขนาด 10 บิต (Bits) แทนค่าเวลาเป็นสัปดาห์ นับตั้งแต่เดือนมกราคม 1980 เป็นต้นมา ซึ่งจะแทนค่าได้ 1024 สัปดาห์ และจะ Roll Over ในวันที่ 21 สิงหาคม 1999 ระบบ Unix เก็บวันและเวลาโดยการแทนค่าวินาทีนับตั้งแต่วันที่ 1 มกราคม 1970 ด้วยตัวเลขขนาด 32 บิต ซึ่งจะ Roll Over ในปี 2038 เป็นต้น