C++の作成者は安全なプログラミング言語の押し付けを批判した

C++言語の開発者であるビャルネ・ストロイストラップ氏は、組織がメモリ管理を開発者に任せるCやC++などのプログラミング言語から離れ、言語を優先するよう勧告したNSA報告書の結論に対して異議を発表した。 C#、Go、Java、Ruby、Rust、Swift など、自動メモリ管理を提供したり、コンパイル時のメモリ安全性チェックを実行したりするもの。

Stroustrup 氏によると、NSA の報告書で言及されている安全な言語は、彼の観点から重要なアプリケーションでは実際には C++ よりも優れているわけではありません。 特に、近年開発された C++ を使用するための基本的な推奨事項 (C++ コア ガイドライン) では、安全なプログラミング方法が取り上げられ、型とリソースの安全な作業を保証するツールの使用が規定されています。 これにより、そのような厳格なセキュリティ保証を必要としない開発者には、古い開発方法を使い続けるという選択肢が残されます。

Stroustrup 氏は、C++ コア ガイドラインに準拠した優れた静的アナライザーを使用すれば、新しい安全なプログラミング言語に移行するよりも大幅に低いコストで C++ コードの安全性に必要な保証を提供できると考えています。 たとえば、コア ガイドラインのほとんどは、Microsoft Visual Studio に含まれる静的アナライザーとメモリ安全プロファイルにすでに実装されています。 いくつかの推奨事項は、Clang Tidy 静的アナライザーでも考慮されます。

NSA の報告書は、メモリの問題のみに焦点を当て、セキュリティと信頼性に影響を与える他の多くのプログラミング言語の問題を無視していることでも批判されました。 Stroustrup 氏は、セキュリティをより広い概念として捉えており、そのさまざまな側面は​​コーディング スタイル、ライブラリ、静的アナライザーの組み合わせによって実現できます。 型とリソースの操作の安全性を確保するルールの組み込みを制御するには、コードとコンパイラ オプションでアノテーションを使用することが提案されています。

セキュリティよりもパフォーマンスが重要なアプリケーションでは、このアプローチにより、必要な場合にのみセキュリティを保証する機能を選択的に適用できます。 セキュリティ ツールは、範囲チェックと初期化ルールから始めて、徐々にコードをより厳しい要件に適応させるなど、部分的に適用することもできます。

出所: オープンネット.ru

コメントを追加します