การอธิบายเกี่ยวกับการใช้งานอัลกอริทึมการบีบอัดข้อมูลใน Ada เมื่อเร็วๆ นี้ได้จุดประกายการถกเถียงอย่างเข้มข้นในชุมชนเกี่ยวกับเหตุผลที่ภาษาโปรแกรมที่เคยมีแนวโน้มดีนี้ล้มเหลวในการเข้าถึงกลุ่มผู้ใช้หลัก แม้จะมีคุณสมบัติทางเทคนิคที่ดีและยังคงใช้งานในระบบที่สำคัญ
การสนทนาเริ่มต้นด้วยความคาดหวังในรายละเอียดการใช้งานทางเทคนิค แต่ได้พัฒนาไปสู่การตรวจสอบประวัติศาสตร์และความเกี่ยวข้องในปัจจุบันของ Ada อย่างกว้างขวาง สมาชิกชุมชนพบว่าตนเองแบ่งออกเป็นสองฝ่าย ระหว่างผู้ที่มอง Ada เป็นภาษาที่ล้มเหลว และผู้อื่นที่โต้แย้งว่ามันประสบความสำเร็จอย่างยอดเยี่ยมในโดเมนที่ตั้งใจไว้
การถกเถียงเรื่องความล้มเหลวครั้งใหญ่
ประเด็นที่ถกเถียงกันมากที่สุดคือ Ada ล้มเหลวจริงหรือไม่ ผู้วิพากษ์วิจารณ์ชี้ไปที่การยอมรับที่จำกัดนอกเหนือจากโดเมนเฉพาะทาง โดยสมาชิกชุมชนคนหนึ่งระบุว่าพวกเขาจะรู้สึกว่าการเขียนแอปพลิเคชัน Ada ในปี 2025 ค่อนข้างล้าสมัย อย่างไรก็ตาม ผู้สนับสนุนได้โต้แย้งเรื่องราวนี้อย่างรวดเร็ว โดยเน้นความสำเร็จอย่างต่อเนื่องของ Ada ในอากาศยาน การป้องกันประเทศ และระบบที่สำคัญต่อภารกิจ ซึ่งความน่าเชื่อถือมีความสำคัญมากกว่าความนิยม
ประวัติความสำเร็จของภาษานี้บ่งบอกถึงความสำเร็จเฉพาะทางอย่างมาก Ada ขับเคลื่อนระบบใน Airbus avionics, International Space Station และแอปพลิเคชันทางทหารต่างๆ รวมถึงระบบป้องกัน Phalanx และเครื่องบินขับไล่ F-15/F-16 นี่ไม่ใช่ประวัติของเทคโนโลยีที่ล้มเหลว แต่เป็นเทคโนโลยีที่พบช่องทางของตนเองในสภาพแวดล้อมที่มีความเสี่ยงสูง ซึ่งข้อผิดพลาดของซอฟต์แวร์อาจหมายถึงความแตกต่างระหว่างชีวิตและความตาย
แอปพลิเคชัน Ada ในปัจจุบัน:
- อวกาศ: ระบบอิเล็กทรอนิกส์การบิน Airbus , สถานีอวกาศนานาชาติ International Space Station
- การป้องกันประเทศ: ระบบป้องกัน Phalanx , เครื่องบินรบ F-15/F-16
- ยานยนต์: การพัฒนายานยนต์ขับขี่อัตโนมัติของ Nvidia
- การปฏิบัติตามมาตรฐาน: DO-178C (อวกาศ), ISO 26262 (ยานยนต์)
- การรับรอง: Rust มีคอมไพเลอร์ที่ผ่านมาตรฐาน ISO 26262 ในขณะที่ Ada มีระบบนิเวศการรับรองที่กว้างขวางกว่า
การบังคับใช้ของกระทรวงกลาโหมที่ส่งผลเสีย
ปัญหาหลักของ Ada ในกระแสหลักส่วนใหญ่สืบย้อนไปถึงการบังคับใช้ของรัฐบาลที่มีเจตนาดี แต่ในที่สุดกลับส่งผลเสีย ในช่วงทศวรรษ 1980 กระทรวงกลาโหมสหรัฐฯ กำหนดให้ใช้ Ada สำหรับโครงการซอฟต์แวร์ทางทหาร โดยหวังว่าจะทำให้การพัฒนาเป็นมาตรฐานเดียวกันทั่วทั้งผู้รับเหมาด้านการป้องกันประเทศ แต่แทนที่จะผลักดันการยอมรับ การบังคับใช้นี้กลับสร้างความไม่พอใจในหมู่โปรแกรมเมอร์ที่รู้สึกว่าภาษานี้ถูกบังคับให้ใช้
ความต่อต้านรุนแรงมากจนผู้รับเหมาขอยกเว้นเป็นประจำเพื่อใช้ภาษาอื่น ทำลายความพยายามในการทำให้เป็นมาตรฐานทั้งหมด ในปี 1997 กระทรวงกลาโหมยกเลิกการบังคับใช้ โดยตระหนักว่าการบังคับให้ยอมรับได้ส่งผลเสียอย่างมาก อย่างไรก็ตาม ความเสียหายต่อชื่อเสียงของ Ada กลับคงอยู่อย่างยาวนาน
ไทม์ไลน์ภาษา Ada และข้อมูลสำคัญ:
- 1980: ภาษา Ada ได้รับการแนะนำครั้งแรกโดย กระทรวงกลาโหม สหรัฐอมेริกา
- 1983: กลายเป็นมาตรฐานทั่วทั้งกองทัพพร้อมกับการบังคับใช้อย่างเป็นทางการ
- 1997: DoD ยกเลิกข้อบังคับเรื่อง Ada เนื่องจากการต่อต้านอย่างกว้างขวาง
- 2002: คอมไพเลอร์ GNU Ada ได้รับการรวมเข้ากับ GCC
- 2012: SPARK 2012 แนะนำการรวมระบบที่ดีขึ้นและการตรวจสอบอย่างเป็นทางการ
- 2014: SPARK 2014 เพิ่มความสามารถในการพิสูจน์ทางคณิตศาสตร์
ความเกี่ยวข้องในยุคปัจจุบันและแอปพลิเคชันที่สำคัญต่อความปลอดภัย
แม้จะมีปัญหาในอดีต Ada กำลังได้รับความสนใจใหม่ในแอปพลิเคชันที่สำคัญต่อความปลอดภัย บริษัทอย่าง Nvidia ใช้ Ada และ SPARK สำหรับการพัฒนายานยนต์ขับขี่อัตโนมัติ โดยตระหนักถึงความสามารถในการตรวจสอบอย่างเป็นทางการของภาษา ระบบการพิสูจน์ทางคณิตศาสตร์ของ SPARK 2014 สามารถตรวจสอบการไม่มีข้อผิดพลาดขณะรันไทม์ ทำให้มีคุณค่าอย่างมากสำหรับแอปพลิเคชันที่ความปลอดภัยของมนุษย์เป็นสิ่งสำคัญที่สุด
สำหรับซอฟต์แวร์อัตโนมัติที่สำคัญต่อความปลอดภัยของฉันสำหรับเครื่องจักรที่จะทำงานรอบๆ คนและเหนือศีรษะ ฉันเลือก Ada/SPARK2014 ประวัติความสำเร็จหลายทศวรรษในโดเมนที่มีความซื่อสัตย์สูงเช่นอากาศยาน การป้องกันประเทศ และระบบทางการแพทย์ รับประกันความน่าเชื่อถือสำหรับแอปพลิเคชันที่ความปลอดภัยของมนุษย์เป็นสิ่งสำคัญที่สุด
ไวยากรณ์ที่มีโครงสร้างและคุณสมบัติด้านความปลอดภัยในตัวของภาษาทำให้มีความน่าสนใจเป็นพิเศษสำหรับระบบฝังตัวและแอปพลิเคชันที่ต้องการการรับรองภายใต้มาตรฐานเช่น DO-178C และ ISO 26262
การเปรียบเทียบกับ Rust
เรื่องราวย่อยที่น่าสนใจเกิดขึ้นจากการเปรียบเทียบ Ada กับ Rust ภาษาโปรแกรมระบบของ Mozilla ที่เน้นความปลอดภัยของหน่วยความจำ แม้ว่าทั้งสองภาษาจะให้ความสำคัญกับความปลอดภัย แต่พวกเขาใช้แนวทางที่แตกต่างกัน Ada ทำการตรวจสอบขณะรันไทม์มากกว่าและมีอายุยาวนานกว่าพร้อมเครื่องมือที่เป็นผู้ใหญ่ ในขณะที่ Rust มุ่งเน้นการรับประกันเวลาคอมไพล์และได้รับแรงผลักดันอย่างมากในปีที่ผ่านมา
การอธิบายเผยให้เห็นว่าเครื่องมือการตรวจสอบอย่างเป็นทางการของ Ada มีความเป็นผู้ใหญ่และพร้อมสำหรับการผลิตมากกว่าระบบนิเวศการตรวจสอบอย่างเป็นทางการที่กำลังเกิดขึ้นของ Rust อย่างไรก็ตาม Rust ได้ประโยชน์จากการออกแบบภาษาสมัยใหม่และชุมชนนักพัฒนาที่เติบโตซึ่ง Ada ขาด
การเปรียบเทียบ Ada กับ Rust :
- ข้อได้เปรียบของ Ada: เครื่องมือตรวจสอบเชิงรูปแบบที่เป็นผู้ใหญ่ ประวัติการใช้งานในระบบที่ต้องการความปลอดภัยสูงมาหลายทศวรรษ กระบวนการรับรองมาตรฐานที่มีการยอมรับแล้ว
- ข้อได้เปรียบของ Rust: การออกแบบภาษาสมัยใหม่ ชุมชนนักพัฒนาที่เติบโตขึ้น การรับประกันความปลอดภัยของหน่วยความจำในขณะคอมไพล์
- แนวทางรันไทม์: Ada ทำการตรวจสอบรันไทม์มากกว่า Rust เน้นการรับประกันในขณะคอมไพล์
- ระบบนิเวศ: Ada มีเครื่องมือเฉพาะทางแต่จำกัด Rust มีระบบนิเวศการพัฒนาสมัยใหม่ที่กว้างขวางกว่า
บทสรุป
การถกเถียงเรื่อง Ada เผยให้เห็นความตึงเครียดพื้นฐานในการยอมรับภาษาโปรแกรมระหว่างคุณค่าทางเทคนิคและกองกำลังตลาด แม้ว่า Ada อาจไม่เคยบรรลุความนิยมของ C++ หรือ Python แต่วิวัฒนาการอย่างต่อเนื่องและแอปพลิเคชันเฉพาะทางบ่งบอกว่ารายงานการตายของมันถูกเกินจริงอย่างมาก ในโดเมนที่ความล้มเหลวของซอฟต์แวร์ไม่เพียงแต่สร้างความไม่สะดวกแต่อาจเป็นหายนะ การเน้นความถูกต้องและความปลอดภัยของ Ada ยังคงพบผู้ใช้ที่ทุ่มเทซึ่งให้ความสำคังกับความน่าเชื่อถือมากกว่าความทันสมัย
อ้างอิง: Writing a competitive blog post/article in 45min from keyword research to a finished draft