Bjarne Stroustrup は NSA の勧告に対応し、C++ の分類に矛盾します
C++言語の生みの親であるビャルネ・ストロヴストルップは、 NSAの報告書の内容に異議を唱えた。NSAの報告書は、メモリ管理を開発者に委ねるCやC++などのプログラミング言語の使用をやめ、自動メモリ管理機能を提供したり、コンパイル時にメモリの安全性チェックを実行したりするC#、Go、Java、Ruby、Rust、Swiftなどの言語に移行することを推奨していた。
ストロストルップ氏によれば、NSAの報告書で言及されているセキュリティの高い言語は、彼の見解では、重要なアプリケーションにおいては実際にはC++よりも優れているわけではないという。
NSA は、組織が使用するプログラミング言語を戦略的に変更することを検討するように組織にアドバイスしています。 C/C++ のような固有のメモリ保護をメモリセーフ言語にほとんど、またはまったく提供しない
可能な場合
特に、近年策定されたC++コアガイドラインでは、安全なプログラミング手法が規定されており、型やリソースを安全に扱うためのツールの使用が推奨されています。しかし、そのような高度な安全性の保証を必要としない開発者は、従来の開発手法を引き続き使用することも可能です。
ストロストルップ氏は、 C++コアガイドラインに準拠した優れた静的パーサーは、新しい安全なプログラミング言語に切り替えるよりもはるかに低いコストで、 C++コードに必要なセキュリティ保証を提供できると考えている。
たとえば、コア ガイドラインのほとんどは、Microsoft Visual Studio Static Analyzer とメモリ セーフ プロファイルに既に実装されています。 いくつかの推奨事項は、Clang tidy 静的アナライザーでも考慮されます。
NSAの報告書は、メモリの問題にのみ焦点を当て、セキュリティと信頼性に影響を与える他の多くのプログラミング言語の問題を放置している点でも批判された。
残念ながら、C++ の使用の多くは、セキュリティを大幅に改善する方法などの改善を無視して、遠い過去にとどまっています。 さて、私が興味を持っている用途の範囲で、これらの「安全な」言語のいずれかが C++ よりも優れていると考える場合、C/C++ の終焉を悪いこととは考えませんが、そうではありません。 .
Bjarne Stroustrup は、NSA の刊行物がソフトウェアの保護の概念をメモリの保護に限定していることに同意しません。 実際、この側面は、いくつかの大企業 (Microsoft、Amazon など) が認識しているソフトウェアのセキュリティ保証のために、C や C++ を捨てて Rust 言語を支持することを勧めるすべての出版物の共通点です。
「『セキュリティ』の定義は XNUMX つではありません。プログラミング スタイル、サポート ライブラリ、静的分析の活用を組み合わせることで、さまざまな種類のセキュリティを実現できます」と彼は言います。 したがって、Bjarne Stroustrup は、ソフトウェア セキュリティの観点から C++ から何が得られるかは、とりわけ開発者、特に言語が提供するツールの知識、コンパイラの熟達度などに依存することを示唆しています。
Stroustrup は、セキュリティをより広い概念と見なしており、そのさまざまな側面は、コーディング スタイル、ライブラリ、および静的アナライザーの組み合わせによって実現できます。 型とリソースの操作の安全性を確保するルールの組み込みを制御するには、コード注釈とコンパイラ オプションを使用することをお勧めします。
セキュリティよりもパフォーマンスが重要なアプリケーションでは、このアプローチにより、必要な場所でのみセキュリティを確保するツールを選択的に使用できます。 セキュリティ強化ツールを部分的に適用することもできます。たとえば、最初に範囲チェックと初期化規則を制限し、次にコードをより厳しい要件に徐々に適応させます。
最後に、C++の生みの親による出版物についてさらに詳しく知りたい場合は、以下のリンクから詳細をご覧いただけます。