Phát hiện lỗi trong trò chơi Lunar Lander đầu tiên tồn tại suốt 55 năm
Lịch sử của trò chơi
- Năm 1969, một học sinh trung học tên Jim Storer đã phát triển trò chơi Lunar Landing đầu tiên.
- Đến năm 1973, trò chơi này đã trở thành trò chơi máy tính phổ biến nhất.
- Đây là một trò chơi dạng văn bản đơn giản, trong đó người chơi điều khiển tàu đổ bộ Mặt Trăng, tiêu thụ nhiên liệu để cố gắng hạ cánh.
Chiến lược tiêu hao nhiên liệu tối ưu
- Để hạ cánh với lượng nhiên liệu tối thiểu, cần phải hạ cánh trong thời gian ngắn nhất có thể.
- Ban đầu, tắt động cơ và lao xuống ở tốc độ tối đa, rồi vào khoảnh khắc cuối cùng đốt hết công suất để giảm tốc độ về 0.
- Chiến lược này được gọi là "suicide burn", và rất khó canh thời điểm chính xác.
Mô phỏng vật lý
- Dù mới là học sinh trung học, Jim Storer đã sử dụng một mô phỏng vật lý rất tinh vi.
- Ông sử dụng phương trình tên lửa Tsiolkovsky và tận dụng chuỗi Taylor của hàm log để tăng độ chính xác.
- Cha của ông là một nhà vật lý học và đã giúp suy ra phương trình.
Vấn đề khi hạ cánh
- Phương trình tên lửa hoạt động tốt cho đến ngay trước khi chạm đất.
- Việc tính chính xác va chạm tại khoảnh khắc tàu đổ bộ chạm mặt đất là điều khó khăn.
- Trong mã của Jim có một phương trình sai với căn bậc hai nằm ở mẫu số.
Phát hiện lỗi
- Trong mã của Jim, số 2 đáng lẽ phải có ở mẫu số đã bị thiếu.
- Vì vậy, thời điểm hạ cánh bị tính sai, khiến hệ thống nhận định rằng tàu đổ bộ chưa chạm đất.
- Khi sửa lỗi này, tốc độ hạ cánh được cải thiện đáng kể.
Kết luận
- Với một trò chơi do học sinh trung học tạo ra vào năm 1969, đây là một thành tựu rất ấn tượng.
- Lỗi này gần như không bị phát hiện trong suốt 55 năm.
- Trò chơi vẫn rất thú vị và đã được nhiều người yêu thích.
Ý kiến của GN⁺
- Giá trị lịch sử: Trò chơi này mang giá trị lịch sử của các trò chơi máy tính thời kỳ đầu và cho thấy những giới hạn kỹ thuật của thời đó.
- Giá trị giáo dục: Dù là trò chơi do học sinh trung học tạo ra, nó chứa các khái niệm vật lý và toán học phức tạp nên có giá trị giáo dục cao.
- Tầm quan trọng của lỗi: Nó nhấn mạnh tầm quan trọng của phát triển phần mềm khi một lỗi mã nhỏ cũng có thể tạo ra tác động lớn.
- So sánh với trò chơi hiện đại: So với các trò chơi hiện đại, câu chuyện này giúp hiểu rõ hơn về giới hạn kỹ thuật và tính sáng tạo của thời kỳ đó.
- Tiến bộ công nghệ: Thông qua trò chơi này, có thể so sánh sự phát triển công nghệ giữa quá khứ và hiện tại, đồng thời khám phá những khả năng trong tương lai.
1 bình luận
Ý kiến Hacker News