「安全な C++ コードを書けないのは、C++ を書けないからだ」

取引システム用の高速で効率的なコードを作成することに関心のあるソフトウェア開発者であれば、おそらく C++ に出くわしたことがあるでしょう。 また、C++ に関心がある場合は、Microsoft Azure の CTO である Mark Russinovich による今週の挑発的なツイートに気付いているでしょう。

その後、Russinovich 氏は、C++ がレガシー アプリケーションから消えることはないことを認めて、発言のモデレートを行いました。 しかし、Rust は「新しいツール」として使用されるべきだと彼は言いました。

彼の主張は、多くが金融サービス業界で働いている C++ 信奉者の間で抗議の声を上げています。 “C++ は問題ありませんが、それ (および他の言語) を使用する多くの人が基本的にプログラミングの方法を知らないだけです」と 1 人は言いました。良い C++ コードを書くには良い開発者が必要であり、良い Rust コードを書く開発者を見つける方がはるかに簡単であることは率直に認めます。 しかし、非常に安定していて、高度に抽象化されており、メンテナンスが容易で、高速な C++ コードを書くことは可能です」と別の人は言いました。

ただ人が少ないだけ できる 良い C++ を書きます。

C++ の安全性の問題は十分に文書化されています。 2019 年の Microsoft の調査によると、それらのほとんどは、範囲外のヒープ、解放後の使用、型の混乱、および初期化されていない使用に関連するメモリ エラーの結果であることがわかりました。

ただし、C++ の使い方をよく知っていれば、これらのエラーの多くは修正できます。

C++ の作成者である Bjarne Stroustrup 氏は今週、Register に次のように語っています。 “つまり、すべてのオブジェクトは、定義された型に従って使用されます。 これは、ダングリング ポインターの使用を排除し、範囲エラーをキャッチし、データ競合を排除することを意味します。」

CPPCon での C++ に関する彼の最近のプレゼンテーションに続いて、Stroustrup の自身の作成に対する弁護が行われました。 C++ は「いくつかのファッショナブルなルール」ではなく、「一貫した哲学」に基づいている、と Stroustrup は宣言しました。 この言語は開発可能ですが、既存の「数十億行」のレガシー C++ コードとの互換性も必要である、と彼は付け加えました。 “を探す代わりに複雑さを排除し、C++ の現代的なバージョンを前任者と互換性を持たないようにする特効薬””、したがって、実用的である必要があります。”T彼の言語はツールボックスの一部にすぎません… 私はそれに苦しむことはありません すべての解決策が言語にあるという妄想、言語は言語に埋め込まれている 世界。”

この注意事項があり、従来の C++ コードと下位互換性に焦点を当てていても、Stroustrup 氏は、C++ は依然として安全であると述べています。 “私が話しているアプローチは、 最新のスタイルの静的分析とルールベースが提供できます 完全な安全性、リークなし、型違反なし…タイプセーフとは、すべてのオブジェクトが使用されることを意味します もっぱらその定義に従って…」

C++ に安全性の問題がある「エッジ ケース」があるかもしれませんが、それはまさにそれである、と Stroustrup 氏は付け加えました。 “Tこのシステムの強みは、段階的な進化を得ることができることです。 あなたは実際に徐々に得ることができます 最初に基本的なものを完全に安全にしてから、ゆっくりと移動します 残りに…」

Stroustrup 氏はまた、Rust は人々が考えるほど安全ではないと述べています。 「Rustを含むすべての「安全な」言語には、安全でないコードを許可する抜け穴があることに注意してください。」 Rustの批判者 この言語は新しすぎてテストされていないため、意味のある C++ の代替とはならないことを指摘してください。 また、C++ をサポートするために進化した膨大な数のオープン ソース ライブラリもありません。

単純に C++ を扱えるようになれば、安全なコードを書けると思われます。

しかし、誰もが同意するわけではありません。 “ソフトウェアの重大なセキュリティ脆弱性の約 70 ~ 80% は、メモリの安全性の欠如が原因です。」 Russinovich 氏のツイートに反応した 1 人の開発者は次のように述べています。 “これらの非常に深刻なバグは、基本的に C と C++ でのみ発生する可能性があり、数十年の経験と調査により、注意を払うだけではそれを減らすのに十分ではないことが示されています。」

eFinancialCareers でプロフィールを作成するには、ここをクリックしてください。 C++ や Rust にとらわれない企業を採用している採用担当者に自分の存在を知ってもらいましょう。

共有したい秘密の話、ヒント、またはコメントがありますか? 最初の連絡先: sbutcher@efancialcareers.com。 Whatsapp/Signal/Telegram も利用可能 (Telegram: @SarahButcher)

この記事の最後にコメントを残す場合はご容赦ください。すべてのコメントは人間によってモデレートされています。 時々、これらの人間は眠っているか、机から離れている可能性があるため、コメントが表示されるまでに時間がかかる場合があります. 攻撃的または中傷的でない限り、最終的にはそうなるでしょう (その場合はそうなりません)。

UnsplashのAndrea De Santisによる写真

Leave a Comment

Your email address will not be published. Required fields are marked *