บียาร์เน่ สตรูสทรัป ผู้สร้างภาษา C++ โพสต์คัดค้านการค้นพบรายงานของ NSA โดยแนะนำให้องค์กรต่างๆ เลิกใช้ภาษาโปรแกรมอย่าง C และ C++ ซึ่งเปลี่ยนการจัดการหน่วยความจำเป็นของนักพัฒนา หันไปใช้ภาษาอย่าง C#, Go, Java, Ruby, Rust และ Swift ที่ให้การจัดการหน่วยความจำโดยอัตโนมัติ หรือ ทำการตรวจสอบความปลอดภัยของหน่วยความจำในขณะคอมไพล์
ตามที่ Stroustrup, ภาษาที่ปลอดภัยที่กล่าวถึงในรายงานของ NSA ไม่ได้เหนือกว่า C++ จริงๆ ในแอปพลิเคชันที่สำคัญจากมุมมองของคุณ
NSA แนะนำให้องค์กรพิจารณาการเปลี่ยนแปลงเชิงกลยุทธ์กับภาษาโปรแกรมที่ใช้ ให้การป้องกันหน่วยความจำในตัวเพียงเล็กน้อยหรือไม่มีเลย เช่น C/C++ ให้กับภาษาที่ปลอดภัยต่อหน่วยความจำ
เมื่อเป็นไปได้
โดยเฉพาะอย่างยิ่งเขาแนวทาง C++ พื้นฐานซึ่งได้รับการพัฒนาในช่วงไม่กี่ปีที่ผ่านมา ครอบคลุมวิธีการสำหรับการเขียนโปรแกรมที่ปลอดภัย และกำหนดการใช้เครื่องมือที่ช่วยให้ทำงานอย่างปลอดภัยด้วยประเภทและทรัพยากร อย่างไรก็ตาม นักพัฒนาซอฟต์แวร์ที่ไม่ต้องการการรับประกันความปลอดภัยที่เข้มงวดดังกล่าวสามารถใช้วิธีการพัฒนาแบบเก่าต่อไปได้
Stroustrup เชื่อว่าเครื่องวิเคราะห์แบบคงที่ที่ดี ที่สอดคล้องกับแนวทางหลักของ C++ สามารถรับประกันความปลอดภัยที่จำเป็นสำหรับรหัส C ++ ด้วยต้นทุนที่ถูกกว่าการเปลี่ยนไปใช้ภาษาโปรแกรมที่ปลอดภัยใหม่มาก
ตัวอย่างเช่น แนวทางหลักส่วนใหญ่ถูกนำไปใช้งานแล้วใน Microsoft Visual Studio Static Analyzer และโปรไฟล์ Memory-Safe คำแนะนำบางส่วนยังนำมาพิจารณาในเครื่องวิเคราะห์แบบคงที่ของ Clang tidy
รายงานของ NSA ยังถูกวิจารณ์ว่าเน้นเฉพาะปัญหาด้านความจำเท่านั้นปล่อยให้ปัญหาภาษาโปรแกรมอื่น ๆ อีกมากมายที่ส่งผลต่อความปลอดภัยและความน่าเชื่อถือไม่ได้รับการแก้ไข
น่าเสียดายที่การใช้งาน C++ ส่วนใหญ่ยังติดอยู่ในอดีตอันไกลโพ้น เพิกเฉยต่อการปรับปรุง รวมถึงวิธีการปรับปรุงความปลอดภัยอย่างมาก ตอนนี้ ถ้าฉันต้องพิจารณาภาษาที่ "ปลอดภัย" เหล่านั้นที่เหนือกว่า C++ สำหรับช่วงการใช้งานที่ฉันสนใจ ฉันจะไม่ถือว่าการที่ C/C++ พังทลายลงเป็นเรื่องเลวร้าย แต่นั่นไม่ใช่กรณี .
Bjarne Stroustrup ไม่เห็นด้วยที่สื่อสิ่งพิมพ์ของ NSA จำกัดแนวคิดของการปกป้องซอฟต์แวร์ไว้เพียงการปกป้องหน่วยความจำ อันที่จริง ลักษณะนี้เป็นตัวหารร่วมของสิ่งพิมพ์ทั้งหมดที่แนะนำให้ทิ้ง C หรือ C++ แทนภาษา Rust เพื่อรับประกันความปลอดภัยของซอฟต์แวร์ที่บริษัทขนาดใหญ่หลายแห่ง (Microsoft, Amazon ฯลฯ) รู้จัก
“ไม่มีคำจำกัดความเดียวของคำว่า 'ความปลอดภัย' และเราสามารถประสบความสำเร็จในการรักษาความปลอดภัยประเภทต่างๆ ผ่านการผสมผสานรูปแบบการเขียนโปรแกรม ไลบรารีสนับสนุน และใช้ประโยชน์จากการวิเคราะห์แบบคงที่” เขากล่าว ดังนั้น Bjarne Stroustrup จึงแนะนำว่าสิ่งที่ได้จาก C++ ในแง่ของความปลอดภัยของซอฟต์แวร์นั้นขึ้นอยู่กับผู้พัฒนาและโดยเฉพาะอย่างยิ่ง ความรู้เรื่องเครื่องมือที่ภาษานั้นนำเสนอ ความเชี่ยวชาญของเขาเกี่ยวกับคอมไพเลอร์ ฯลฯ
Stroustrup มองว่าการรักษาความปลอดภัยเป็นแนวคิดที่กว้างขึ้น ซึ่งแง่มุมต่างๆ นั้นสามารถทำได้ผ่านการผสมผสานระหว่างรูปแบบการเข้ารหัส ไลบรารี และเครื่องมือวิเคราะห์แบบคงที่ เพื่อควบคุมการรวมกฎที่รับประกันความปลอดภัยในการทำงานกับประเภทและทรัพยากร ขอเสนอให้ใช้คำอธิบายประกอบโค้ดและตัวเลือกคอมไพเลอร์
ในแอปพลิเคชันที่ประสิทธิภาพมีความสำคัญมากกว่าความปลอดภัย วิธีการนี้ช่วยให้สามารถเลือกใช้เครื่องมือที่รับรองความปลอดภัยเฉพาะเมื่อจำเป็นเท่านั้น นอกจากนี้ยังสามารถใช้เครื่องมือเสริมความปลอดภัยบางส่วน เช่น ขั้นแรกให้จำกัดการตรวจสอบช่วงและกฎการเริ่มต้น แล้วจึงค่อยๆ ปรับรหัสให้เข้ากับข้อกำหนดที่เข้มงวดมากขึ้น
สุดท้าย หากคุณสนใจที่จะเรียนรู้เพิ่มเติมเกี่ยวกับการเผยแพร่ของผู้สร้าง C++ คุณสามารถดูรายละเอียดได้ใน ลิงค์ต่อไปนี้