Ngôn ngữ lập trình Ada gây tranh cãi gay gắt về những thất bại trong quá khứ và tiềm năng tương lai

Nhóm Cộng đồng BigGo
Ngôn ngữ lập trình Ada gây tranh cãi gay gắt về những thất bại trong quá khứ và tiềm năng tương lai

Một cuộc thảo luận gần đây về việc triển khai các thuật toán nén trong Ada đã châm ngòi cho một cuộc tranh luận sôi nổi trong cộng đồng về lý do tại sao ngôn ngữ lập trình từng đầy hứa hẹn này lại thất bại trong việc đạt được sự chấp nhận rộng rãi, bất chấp những ưu điểm kỹ thuật và việc tiếp tục được sử dụng trong các hệ thống quan trọng.

Cuộc trò chuyện bắt đầu với kỳ vọng về các chi tiết triển khai kỹ thuật nhưng nhanh chóng phát triển thành một cuộc xem xét rộng hơn về lịch sử và tính liên quan hiện tại của Ada. Các thành viên cộng đồng thấy mình bị chia rẽ giữa những người coi Ada là một ngôn ngữ thất bại và những người khác cho rằng nó đã thành công rực rỡ trong lĩnh vực mà nó nhắm đến.

Cuộc tranh luận lớn về thất bại

Điểm gây tranh cãi nhất tập trung vào việc liệu Ada có thực sự thất bại hay không. Những người chỉ trích chỉ ra việc áp dụng hạn chế của nó bên ngoài các lĩnh vực chuyên biệt, với một thành viên cộng đồng lưu ý rằng họ sẽ thấy việc viết một ứng dụng Ada vào năm 2025 hơi lỗi thời. Tuy nhiên, những người bảo vệ nhanh chóng phản bác lại câu chuyện này, nhấn mạnh sự thành công liên tục của Ada trong hàng không vũ trụ, quốc phòng và các hệ thống quan trọng nơi độ tin cậy quan trọng hơn độ phổ biến.

Thành tích của ngôn ngữ này nói lên rất nhiều về sự thành công chuyên biệt của nó. Ada cung cấp năng lượng cho các hệ thống trong hàng không điện tử Airbus, Trạm Vũ trụ Quốc tế, và các ứng dụng quân sự khác nhau bao gồm hệ thống phòng thủ Phalanx và máy bay chiến đấu F-15/F-16. Đây không phải là lý lịch của một công nghệ thất bại, mà là một công nghệ đã tìm thấy vị trí của mình trong những môi trường có cược cao nơi lỗi phần mềm có thể có nghĩa là sự khác biệt giữa sống và chết.

Các Ứng Dụng Ada Hiện Tại:

  • Hàng không vũ trụ: Hệ thống avionics của Airbus , Trạm Vũ trụ Quốc tế
  • Quốc phòng: Hệ thống phòng thủ Phalanx , máy bay chiến đấu F-15 / F-16
  • Ô tô: Phát triển xe tự lái của Nvidia
  • Tuân thủ tiêu chuẩn: DO-178C (hàng không vũ trụ), ISO 26262 (ô tô)
  • Chứng nhận: Rust có trình biên dịch đạt chuẩn ISO 26262 , Ada có hệ sinh thái chứng nhận rộng hơn

Lệnh của Bộ Quốc phòng phản tác dụng

Phần lớn cuộc đấu tranh chính thống của Ada bắt nguồn từ một lệnh của chính phủ có ý định tốt nhưng cuối cùng lại phản tác dụng. Trong những năm 1980, Bộ Quốc phòng Hoa Kỳ yêu cầu Ada cho các dự án phần mềm quân sự, hy vọng tiêu chuẩn hóa việc phát triển trên các nhà thầu quốc phòng. Thay vì thúc đẩy việc áp dụng, lệnh này đã tạo ra sự phẫn nộ trong số các lập trình viên cảm thấy ngôn ngữ đang bị ép buộc.

Sự kháng cự mạnh mẽ đến mức các nhà thầu thường xuyên tìm kiếm miễn trừ để sử dụng các ngôn ngữ khác, làm suy yếu toàn bộ nỗ lực tiêu chuẩn hóa. Đến năm 1997, DoD đã từ bỏ lệnh này, nhận ra rằng việc áp dụng cưỡng bức đã phản tác dụng một cách nspectacular. Tuy nhiên, thiệt hại đối với danh tiếng của Ada đã chứng minh là lâu dài.

Dòng thời gian ngôn ngữ Ada và các sự kiện quan trọng:

  • 1980: Ada lần đầu được giới thiệu bởi Bộ Quốc phòng Hoa Kỳ
  • 1983: Trở thành tiêu chuẩn toàn quân với việc áp dụng bắt buộc
  • 1997: DoD từ bỏ yêu cầu bắt buộc Ada do sự phản kháng rộng rãi
  • 2002: Trình biên dịch GNU Ada được tích hợp vào GCC
  • 2012: SPARK 2012 được giới thiệu với khả năng tích hợp tốt hơn và xác minh chính thức
  • 2014: SPARK 2014 bổ sung khả năng chứng minh toán học

Tính liên quan hiện đại và các ứng dụng quan trọng về an toàn

Bất chấp những khó khăn trong quá khứ, Ada đang trải qua sự quan tâm mới trong các ứng dụng quan trọng về an toàn. Các công ty như Nvidia đang sử dụng Ada và SPARK cho việc phát triển xe tự lái, nhận ra khả năng xác minh chính thức của ngôn ngữ. Các hệ thống chứng minh toán học của SPARK 2014 có thể xác minh sự vắng mặt của các lỗi runtime, làm cho nó vô giá cho các ứng dụng nơi an toàn con người là tối quan trọng.

Đối với phần mềm tự động hóa quan trọng về an toàn của tôi cho một máy sẽ hoạt động xung quanh con người và trên cao, tôi đang chọn Ada/SPARK2014. Thành tích hàng thập kỷ của nó trong các lĩnh vực toàn vẹn cao như hàng không vũ trụ, quốc phòng và hệ thống y tế đảm bảo độ tin cậy cho các ứng dụng nơi an toàn con người là tối quan trọng.

Cú pháp có cấu trúc của ngôn ngữ và các tính năng an toàn tích hợp làm cho nó đặc biệt hấp dẫn cho các hệ thống nhúng và các ứng dụng yêu cầu chứng nhận theo các tiêu chuẩn như DO-178C và ISO 26262.

So sánh với Rust

Một cốt truyện thú vị xuất hiện so sánh Ada với Rust, ngôn ngữ lập trình hệ thống của Mozilla nhấn mạnh an toàn bộ nhớ. Trong khi cả hai ngôn ngữ đều ưu tiên an toàn, chúng có cách tiếp cận khác nhau. Ada thực hiện nhiều kiểm tra runtime hơn và đã có mặt lâu hơn với các công cụ trưởng thành, trong khi Rust tập trung vào các đảm bảo compile-time và đã đạt được động lực đáng kể trong những năm gần đây.

Cuộc thảo luận tiết lộ rằng các công cụ xác minh chính thức của Ada trưởng thành hơn và sẵn sàng sản xuất so với hệ sinh thái xác minh chính thức mới nổi của Rust. Tuy nhiên, Rust được hưởng lợi từ thiết kế ngôn ngữ hiện đại và một cộng đồng nhà phát triển đang phát triển mà Ada thiếu.

So sánh Ada và Rust:

  • Ưu điểm của Ada: Các công cụ xác minh chính thức trưởng thành, hồ sơ theo dõi hàng thập kỷ trong các ứng dụng quan trọng về an toàn, các quy trình chứng nhận đã được thiết lập
  • Ưu điểm của Rust: Thiết kế ngôn ngữ hiện đại, cộng đồng phát triển đang phát triển, đảm bảo an toàn bộ nhớ tại thời điểm biên dịch
  • Phương pháp Runtime: Ada thực hiện nhiều kiểm tra runtime hơn, Rust nhấn mạnh vào các đảm bảo tại thời điểm biên dịch
  • Hệ sinh thái: Ada có các công cụ chuyên biệt nhưng hạn chế, Rust có hệ sinh thái phát triển hiện đại rộng lớn hơn

Kết luận

Cuộc tranh luận Ada tiết lộ một căng thẳng cơ bản trong việc áp dụng ngôn ngữ lập trình giữa ưu điểm kỹ thuật và các lực lượng thị trường. Trong khi Ada có thể không bao giờ đạt được sự phổ biến của C++ hoặc Python, sự phát triển liên tục và các ứng dụng chuyên biệt của nó cho thấy các báo cáo về cái chết của nó đã được phóng đại rất nhiều. Trong các lĩnh vực nơi thất bại phần mềm không chỉ bất tiện mà có thể thảm khốc, sự nhấn mạnh của Ada về tính đúng đắn và an toàn tiếp tục tìm thấy những người dùng tận tâm coi trọng độ tin cậy hơn xu hướng.

Tham khảo: Writing a competitive blog post/article in 45min from keyword research to a finished draft