ทำไม Bug ในคอมพิวเตอร์เพียงเล็กน้อยถึงสามารถทำลายโครงการระดับพันล้านและคร่าชีวิตมนุษย์ได้?

Software Bug คือข้อผิดพลาดในระบบคอมพิวเตอร์ที่อาจเกิดจากโค้ดเพียงไม่กี่บรรทัด การคำนวณผิดพลาด หรือความเข้าใจไม่ตรงกันระหว่างทีมพัฒนา แม้จะดูเป็นความผิดพลาดเล็กน้อย แต่เมื่อซอฟต์แวร์ถูกนำไปควบคุมระบบสำคัญ เช่น จรวด ยานอวกาศ หรือระบบป้องกันภัยทางทหาร ความผิดพลาดนั้นสามารถขยายผลกลายเป็นความเสียหายระดับพันล้านดอลลาร์และการสูญเสียชีวิตได้

เหตุการณ์สำคัญในประวัติศาสตร์ เช่น:

ทั้งหมดมีจุดร่วมเดียวกัน:

ปัญหาไม่ได้เกิดจากเทคโนโลยีไม่ก้าวหน้า แต่เกิดจากความผิดพลาดเล็ก ๆ ที่ไม่มีใครคาดคิด

จุดกำเนิดคำว่า Bug ในโลกคอมพิวเตอร์

เมื่อ Bug เคยเป็นแมลงจริง ๆ

วันที่:

9 กันยายน 1947

ณ:

Harvard University

คอมพิวเตอร์:

Harvard Mark II

เกิดปัญหา:

ระบบทำงานผิดปกติ

ทีมวิศวกรเข้าตรวจสอบเครื่อง

และพบสาเหตุ:

แมลง Moth

เข้าไปติดอยู่ใน:

รีเลย์หมายเลข 70

ทำให้เกิด:

หนึ่งในทีมวิศวกรคือ:

Grace Murray Hopper

เธอนำแมลงตัวนั้นไปติดไว้ในสมุดบันทึก

พร้อมเขียนว่า:

“First actual case of bug being found”

แม้ว่าคำว่า Bug จะเคยถูกใช้มาก่อน

แต่เหตุการณ์นี้ทำให้คำว่า:

Bug

กลายเป็นศัพท์มาตรฐานของวงการคอมพิวเตอร์

ทำไม Bug ถึงอันตราย?

เพราะคอมพิวเตอร์ทำตามคำสั่งอย่างแม่นยำ

มนุษย์มักคิดว่า:

คอมพิวเตอร์ผิดพลาดเพราะมันไม่ฉลาด

แต่ความจริงคือ:

คอมพิวเตอร์ทำตามคำสั่งที่ได้รับอย่างถูกต้อง

แม้ว่าคำสั่งนั้นจะผิด

ดังนั้น:

โค้ดผิด 1 บรรทัด

สามารถสร้างผลกระทบมหาศาลได้

มหันตภัยที่ 1 – Ariane 5 ระเบิดเพราะตัวเลขล้น

เมื่อ Integer Overflow ทำลายจรวดมูลค่า 370 ล้านดอลลาร์

วันที่:

4 มิถุนายน 1996

ยุโรปเปิดตัว:

Ariane 5

หนึ่งในจรวดที่มีความหวังสูงที่สุดของยุคนั้น

แต่หลังปล่อยขึ้นฟ้า:

เพียง 37 วินาที

จรวดเกิดความผิดพลาด

และระบบทำลายตัวเองทำงาน

สาเหตุของ Ariane 5

Reuse Code ผิดบริบท

Ariane 5 ใช้ Software บางส่วนจาก:

Ariane 4

ปัญหาคือ:

Ariane 5 มี:

ระบบเดิมไม่ได้ออกแบบมารองรับข้อมูลเหล่านี้

Integer Overflow คืออะไร?

เมื่อกล่องเก็บตัวเลขเล็กเกินไป

ระบบนำทางต้องเก็บค่าความเร็ว

แต่เกิดปัญหา:

ข้อมูลใหม่มีขนาดใหญ่เกินกว่าที่ตัวแปรรองรับ

เรียกว่า:

Integer Overflow

เปรียบเหมือน:

แก้วน้ำขนาดเล็ก

แต่พยายามเทน้ำจำนวนมหาศาลลงไป

ผล:

ข้อมูลล้น

ระบบทำงานผิดพลาด

ผลกระทบของ Ariane 5

สิบปีของการพัฒนาหายไปในไม่กี่วินาที

ความเสียหาย:

ประมาณ:

370 ล้านดอลลาร์สหรัฐ

ผลกระทบ:

บทเรียน:

Software ที่เคยทำงานได้ ไม่ได้หมายความว่าจะปลอดภัยเมื่อถูกนำไปใช้ในสถานการณ์ใหม่

มหันตภัยที่ 2 – Mars Climate Orbiter หายเพราะหน่วยวัดผิด

เมื่อ NASA และทีม Software ใช้คนละภาษา

ปี:

1998

NASA ส่ง:

Mars Climate Orbiter

เป้าหมาย:

ศึกษาสภาพอากาศดาวอังคาร

แต่หลังเดินทาง:

9 เดือนครึ่ง

ยานกลับสูญหาย

สาเหตุของ Mars Climate Orbiter

Metric vs Imperial System

ปัญหาไม่ได้อยู่ที่ Hardware

แต่อยู่ที่:

“หน่วยวัด”

ทีมหนึ่งใช้:

Imperial Unit

เช่น:

ปอนด์-วินาที

อีกทีมใช้:

Metric Unit

เช่น:

นิวตัน-วินาที

ข้อมูลที่ส่งให้กัน:

จึงผิดมาตรฐาน

ความผิดพลาดสะสมทีละน้อย

Error เล็ก ๆ กลายเป็นหายนะระดับอวกาศ

ตลอดการเดินทาง:

ข้อมูลแรงขับมีความคลาดเคลื่อนสะสม

เมื่อถึงดาวอังคาร:

ยานควรเข้าสู่วงโคจร:

ประมาณ 226 กิโลเมตร

แต่กลับเข้าใกล้เพียง:

57 กิโลเมตร

ผล:

มูลค่าความเสียหาย:

ประมาณ 1,000 ล้านดอลลาร์

มหันตภัยที่ 3 – Patriot Missile กับเวลา 0.34 วินาที

จุดทศนิยมเล็ก ๆ ที่เปลี่ยนชะตาชีวิต

ปี:

1991

ระหว่างสงครามอ่าวเปอร์เซีย

ระบบ:

Patriot Missile

ถูกใช้เพื่อสกัด:

ขีปนาวุธ Scud

แต่เกิดเหตุการณ์:

ระบบไม่สามารถติดตามเป้าหมายได้

สาเหตุของ Patriot System

ปัญหาจากเลขฐานสอง

ระบบคำนวณเวลา:

หน่วย 1/10 วินาที

แต่ในคอมพิวเตอร์:

เลขบางค่าจะแปลงเป็น Binary ไม่ได้อย่างสมบูรณ์

เกิด:

ทศนิยมซ้ำ

ระบบจึงต้อง:

ตัดค่าทศนิยมบางส่วนทิ้ง

ทำไมความผิดพลาดเล็กน้อยถึงกลายเป็น 0.34 วินาที?

เพราะ Error สะสม

ระบบเปิดทำงาน:

มากกว่า 100 ชั่วโมง

ความคลาดเคลื่อนเล็ก ๆ

สะสมเพิ่มขึ้นเรื่อย ๆ

จนเกิด:

เวลาเพี้ยน:

0.34 วินาที

ในโลกของขีปนาวุธ:

0.34 วินาที

มีความหมายมหาศาล

ตำแหน่งเป้าหมายผิด:

ประมาณ 600 เมตร

ผลกระทบ Patriot Missile

ความผิดพลาดที่แลกด้วยชีวิตมนุษย์

ขีปนาวุธ Scud ตก:

เมืองดาราน

ประเทศซาอุดีอาระเบีย

ผล:

เสียชีวิต:

28 นาย

บาดเจ็บ:

กว่า 110 นาย

Butterfly Effect ในโลก Software

ความผิดพลาดเล็ก ๆ สามารถขยายผลได้

แนวคิด:

Butterfly Effect

หมายถึง:

เหตุการณ์เล็ก ๆ

สามารถสร้างผลกระทบมหาศาลในอนาคต

ใน Software:

ตัวอย่าง:

สามารถกลายเป็น:

บทเรียนสำคัญสำหรับวิศวกร Software

1. Testing สำคัญกว่าความเร็ว

ระบบสำคัญต้องผ่าน:

2. อย่าเชื่อว่า Code เก่าจะปลอดภัย

Code ที่เคยทำงาน

อาจไม่เหมาะกับ:

สถานการณ์ใหม่

3. มาตรฐานสำคัญกว่าความสามารถส่วนบุคคล

ปัญหา Mars Climate Orbiter ไม่ใช่เพราะใครเขียน Code ไม่เก่ง

แต่เพราะ:

ไม่มีมาตรฐานร่วมกัน

บทเรียนสำหรับยุค AI

เมื่อ AI ถูกสร้างจาก Code มนุษย์

ปัจจุบัน:

AI มีบทบาทใน:

แต่ AI ก็ยังสร้างจาก:

Software

ดังนั้น:

ความผิดพลาดเล็ก ๆ

ยังคงเป็นความเสี่ยงสำคัญ

FAQ

Q1: Bug ในคอมพิวเตอร์คืออะไร?

A: Bug คือข้อผิดพลาดในระบบ Software ที่ทำให้โปรแกรมทำงานไม่ถูกต้อง

Q2: คำว่า Bug มาจากไหน?

A: คำว่า Bug มีชื่อเสียงจากเหตุการณ์ Harvard Mark II ปี 1947 ที่พบแมลงจริงติดอยู่ในเครื่องคอมพิวเตอร์

Q3: Ariane 5 ระเบิดเพราะอะไร?

A: เกิดจาก Integer Overflow เมื่อ Software เดิมไม่สามารถรองรับค่าข้อมูลจากจรวดรุ่นใหม่ได้

Q4: Mars Climate Orbiter หายเพราะอะไร?

A: เพราะทีมงานใช้ระบบหน่วยวัดต่างกันระหว่าง Imperial และ Metric ทำให้ข้อมูลผิดพลาด

Q5: ทำไม Bug จึงอันตรายมาก?

A: เพราะ Software ควบคุมระบบสำคัญจำนวนมาก ความผิดพลาดเล็กน้อยสามารถขยายผลเป็นความเสียหายมหาศาล