Mã nguồn cổ xưa đang vận hành những tên lửa tân tiến nhất của chúng ta
Tại sao các cơ quan vũ trụ hàng đầu thế giới lại tin tưởng vào phần mềm được viết từ hơn 50 năm trước để dẫn đường giữa các vì sao.
Có một điều mà hầu hết mọi người không biết: khi một chiếc tên lửa trị giá hàng tỷ đô la gầm vang rời bệ phóng ngày hôm nay, “bộ não” của nó đang chạy trên những dòng code còn già hơn cả những kỹ sư đã chế tạo ra nó.
Hãy tưởng tượng điều này. Đó là năm 1977, và các lập trình viên đang đục lỗ trên những tấm thẻ giấy để dạy máy tính cách bay. Bạn có lẽ sẽ nghĩ rằng chúng ta đã bỏ lại công nghệ đó cùng thời với nhạc disco và điện thoại quay số.
Nhưng bạn đã lầm. Chính những dòng mã được viết từ thời chính quyền Tổng thống Carter vẫn đang điều khiển tàu vũ trụ đến Sao Hỏa và xa hơn nữa ngay lúc này. Tại sao các cơ quan vũ trụ lại giao phó hàng tỷ đô la và cả tính mạng con người cho những phần mềm “cổ lỗ sĩ” như vậy?
Bí mật của những hệ thống di sản
Chúng ta đang sống trong một kỷ nguyên mà điện thoại thông minh yêu cầu cập nhật hai tuần một lần. Nếu bạn phớt lờ, ứng dụng sẽ bị treo. Nếu bạn cài đặt, một thứ khác lại hỏng hoàn toàn.
Nhưng khoan đã - nếu phần mềm hiện đại mạnh mẽ đến vậy, tại sao mọi sách giáo khoa hàng không vũ trụ vẫn ca ngợi những dòng code cổ xưa?
Câu trả lời nằm ở một khái niệm gọi là di sản (heritage). Trong môi trường khắc nghiệt của không gian, bức xạ làm đảo lộn các bit máy tính và cái lạnh cực độ có thể làm vỡ vụn kim loại.
Bạn chắc chắn sẽ không muốn một hệ điều hành mới toanh, chưa qua kiểm chứng điều hành hệ thống duy trì sự sống của mình. Bạn muốn một phần mềm đã tồn tại trong chân không vũ trụ suốt nhiều thập kỷ mà không gặp một lỗi nghiêm trọng nào.
Sự nguy hiểm của những bản cập nhật mới
Khi bạn viết code mới, bạn tạo ra lỗi (bug) mới. Đó là một định luật cơ bản của lập trình máy tính.
Chúng ta đã thấy chính xác điều gì xảy ra khi các kỹ sư cố gắng trở nên quá “thông thái” với các phép toán không gian. Hãy nhìn vào A $125M Math Error Hidden in Plain Sight, nơi một lỗi chuyển đổi đơn vị đo lường đơn giản đã khiến cả một tàu thăm dò Sao Hỏa bị phá hủy.
Phần mềm mới đòi hỏi hàng triệu giờ thử nghiệm để chứng minh nó sẽ không đột ngột “đơ” khi đang ở trên quỹ đạo. Thay vì phát minh lại bánh xe, các kỹ sư bao bọc mã nguồn cũ từ những năm 1970 bằng các lớp phần mềm mới. Họ gọi đó là wrapper code. Bộ máy cốt lõi bên trong vẫn giữ nguyên hoàn toàn.
Được xây dựng cho những điều bất khả thi
Các nhà phát triển của những năm 1970 phải đối mặt với những hạn chế ngặt nghèo. Họ chỉ có vài kilobyte bộ nhớ để làm việc, điều này buộc họ phải trở thành những người theo đuổi sự hoàn hảo tuyệt đối.
Chính vì vậy, mã nguồn của họ cực kỳ tinh gọn và hiệu quả. Không có những phần mềm rườm rà chiếm dụng bộ nhớ quý giá. Mỗi dòng code đều có một mục đích cụ thể và quan trọng.
Nếu một tàu vũ trụ gặp lỗi, mã nguồn đơn giản này dễ dàng gỡ lỗi (debug) hơn từ khoảng cách hàng triệu dặm. Phần mềm hiện đại phức tạp có thể bị khóa hoàn toàn, khiến tàu thăm dò xoay tròn vô định trong bóng tối.
Sự phụ thuộc vào công nghệ cũ đã được chứng minh này không chỉ có ở phần mềm. Những linh kiện nhỏ thường quyết định số phận của những sứ mệnh khổng lồ, giống như The 75-Cent Rubber Ring That Killed a Spaceship. Khi bạn tìm thấy thứ gì đó hoạt động hoàn hảo trong môi trường chết chóc nhất mà con người từng biết, bạn sẽ không thay đổi bất cứ điều gì.
Những bóng ma trong cỗ máy
Vậy ai là người thực sự bảo trì những dòng code cổ xưa này ngày nay? Đó đang trở thành một vấn đề nan giải đối với ngành công nghiệp vũ trụ.
Các lập trình viên nguyên bản đang dần nghỉ hưu hoặc qua đời. Sinh viên khoa học máy tính hiện nay học các ngôn ngữ mới, chứ không phải các mã assembly khó hiểu đang chạy sâu bên trong các tàu thăm dò không gian xa xôi của chúng ta.
Các cơ quan vũ trụ thực sự đang phải nài nỉ các lập trình viên đã nghỉ hưu quay trở lại làm tư vấn với mức lương cao ngất ngưởng. Họ cần họ để giải mã những ghi chú bí ẩn được viết bên lề những cuốn hướng dẫn đã phai màu từ năm 1974.
Đôi khi, một sứ mệnh “ngàn cân treo sợi tóc” chỉ vì không còn ai sống sót hiểu được một dòng code cụ thể. Chúng ta đã thấy những tình huống suýt soát tương tự với The Asteroid Mission That Died Twice, nơi việc hiểu rõ các hệ thống cốt lõi đã tạo nên sự khác biệt giữa thất bại hoàn toàn và sự phục hồi thần kỳ.
Liệu cuối cùng chúng ta có phải viết lại phần mềm hoàn toàn mới từ đầu không? Có lẽ là có.
But for now, humanity’s greatest leap into the future is securely tethered to the past. When our first crewed mission finally touches down on Mars, will the first words spoken be transmitted by a computer program written before the invention of the internet?
Nhưng hiện tại, bước tiến lớn nhất của nhân loại vào tương lai vẫn được gắn kết chặt chẽ với quá khứ. Khi sứ mệnh có người lái đầu tiên của chúng ta cuối cùng cũng đặt chân lên Sao Hỏa, liệu những lời đầu tiên được thốt lên có được truyền đi bởi một chương trình máy tính được viết từ trước khi Internet ra đời?
Bài viết liên quan
Quả cầu tình cờ đã "phá vỡ" các định luật vật lý
Một thí nghiệm hóa học năm 1964 đã tạo ra một vật thể nhỏ bé với tỷ lệ nảy 0,86 không tưởng, khiến chính những người tạo ra nó phải khiếp sợ.
Người đàn ông "vừa xui vừa hên" nhất lịch sử
Khám phá câu chuyện có thật đầy kinh ngạc về một người đàn ông đã trải qua hai vụ nổ hạt nhân chỉ trong ba ngày và vẫn sống sót để kể lại.
Chiếc vòng cao su 75 xu đã phá hủy cả một con tàu vũ trụ
Khám phá cách một linh kiện rẻ tiền và những lời cảnh báo bị phớt lờ đã gây ra một trong những thảm họa đau thương nhất lịch sử hàng không vũ trụ.