ยังจำได้มั๊ย ! ปัญหาคอมพิวเตอร์ปี 2000 หรือ Y2K เป็นปัญหาที่เกิดขึ้นเมื่ออุปกรณ์คอมพิวเตอร์ต่างๆ เมื่อเลยหลังเที่ยงคืนของวันที่ 31 ธันวาคม ค.ศ. 1999?แล้วเข้าสู่วันที่ 1 มกราคม ค.ศ. 2000 ระบบจะเข้าใจผิดคิดว่าเป็น ค.ศ. 1900 จึงทำให้การทำงานของระบบผิดเพี้ยนไป
ถ้าใครจำได้ดี ปัญหานี้ถูกโปรโมทและประโคมข่าว จนเป็นเรื่องราวใหญ่โตระดับนานาชาติ จนคิดว่าปี 2000 โลกจะแตกเป็นเสี่ยง ๆ?กลัวกันว่า ระบบไฟฟ้า โทรศัพท์ ธนาคาร และระบบอื่น ๆ จะหยุดการทำงาน
จริง ๆ ปัญหาบั๊กคอมพิวเตอร์ปี 2000 ยังไม่จบเพียงเท่านี้
เพราะปี 2038 ก็ยังมีปัญหาอีก แต่เป็นปัญหาที่แก้ง่ายกว่า Y2K
มันเป็นปัญหาที่มีที่มาที่ไป มาจากโปรแกรมที่เขียนด้วยภาษา C
เนื่องจากไลบรารี่ที่จัดการเกี่ยวกับเวลา ที่เรียกว่า “standard time library”
มันดันเก็บค่าเวลา โดยกำหนดมาตรฐานในการเก็บค่า ให้ใช้เพียง 4 byte เท่านั้น
จึงทำให้ฟังก์ชันอื่น ๆ ที่ทำการแปลงค่า หรือแสดงผล หรือคำนวณอะไรก็ตามเกี่ยวกับเวลา พลอยซวยฟ้าซวยฝนไปด้วยเมื่อเจอปี 2038
แล้วซวยอย่างไงละ ?
ต้องทำความเข้าใจอย่างนี้ก่อน
การเก็บค่าตัวเลขเพียง 4 byte หรือ 32 bit
สามารถเก็บค่าจำนวนเต็มได้ตั้งแต่ -2147483648 ถึง 2,147,483,647 เท่านั้น
(คนเรียนคอมทุกท่านคงทราบดีว่า ถ้ามันเก็บค่ามากกว่านี้ มันจะวนไปเก็บเป็นเลข -2147483648 แทน)
ปกติเวลาตั้งต้นในไลบรารี่ของภาษา C
จะกำหนดให้ 1 มกราคม 1970 เวลา 12.00 AM เก็บค่าเป็นเลข 0
เมื่อค่าของเวลาเดินทางมาถึงวินาทีที่ 2,147,483,647
หรือก็คือ 19 มกราคม 2038 (พศ.2581) เวลา 03:14:07
(ซึ่งเป็นเวลาสูงสุดที่จะเก็บได้แล้ว)
และถ้าเลยช่วงเวลานี้ไปแล้ว มันจะวนกลายเป็นเลข -2147483648
ส่งผลให้การแสดงค่าเวลาเปี้ยนไปเป็น
วันศุกร์ที่ 13 ธันวาคม 1901 (พศ. 2444) เวลา 20:45:52 แทน … (อัยยะ)
สรุป
ไลบรารี่มาตรฐานเกี่ยวกับเวลาของภาษา C
จะเก็บค่าได้ถึง 19 มกราคม 2038 (พศ.2581) เวลา 03:14:07 เท่านั้น
ถ้าผ่านช่วงเวลานี้ไป มันจะแสดงเวลาเพี้ยนเป็น วันศุกร์ที่ 13 ธันวาคม 1901 (พศ. 2444) เวลา 20:45:52
และเมื่อถึงเวลานั้น วงการสื่ออาจเรียกมันว่า?บั๊กศุกร์ที่ 13 ก็เป็นได้
แต่จริง ๆ แล้ว ปัญหานี้แก้ง่ายกว่าคอมพิวเตอร์ปี 2000 เยอเลยนะคราบ
เพียงอัพเดตไลบรารี่ให้เป็น 64 bit หมด หรือระบบ 8 byte หมด ก็สิ้นเรื่อง
อีกทั้งเมื่อถึงวันนั้น โลกคอมพิวเตอร์คงกลายเป็น 64 bit เกือบหมด
อ้างอิง
- http://th.wikipedia.org/wiki/ปัญหาปี_ค.ศ._2000
- http://computer.howstuffworks.com/question75.htm
- http://2038bug.com/
เขียนโดย แอดมินโฮ โอน้อยออก