NOC online · 24/7Longview, TX · +1 323 412 0665
KinetikatechServers · Security · Websites
JA

プログラミング言語の比較

C: その他すべてが実行される言語

C は、カーネル、ドライバー、Python サーバーが実行するインタープリター、Web サイトの背後にあるデータベース エンジンなど、他のすべての基盤となる言語です。運用チームにとって、C は毎日書くものというよりも、流暢に読まなければならないものです。CVE の記述、スタック トレース、コア ダンプは C の語彙で業務を遂行するためです。これは、C と C++ の比較に特化した記事です。

要点

  1. モデルは正直です。malloc/free による手動メモリ、ポインタの演算、バグ カテゴリではなく仕様レベルの真実としての未定義の動作です。 C を高速にする規律は、不注意な C を高価にする規律と同じです。
  2. 未定義の動作は循環する危険です。境界外のインデックス作成、署名付きオーバーフロー、メモリ セーフティ CVE ファミリに直接対応する解放後の使用クラス (数十年にわたる CVE データにほぼ 1 つずつ埋め込まれています)。ファザー (AFL-libFuzzer クラスのツール) とサニタイザーは、推測を再現条件に変換します。
  3. デバッグ ツールは世界クラスであり、知っておく価値があります。gdb、valgrind/memcheck、AddressSanitizer とその類 (UBSan、TSan) は、本番スタック トレースが示唆するだけのバグのクラスをテスト時にキャッチします。この組み合わせが、私たちが協力する C を多用するすべてのチームで「CI でサニタイザーを使用してビルドする」という社内ルールになっている理由です。
  4. C を読むことは運用スキルです。CVE アナウンスメントは関数と型を参照し、サービス セグメンテーション違反は gdb ボキャブラリでバックトレースを生成し、ポートツリークラスのソースからのパッケージ ビルドは品質とジャンクを区別するコンパイラ警告を表示します。読者の利点は何年にもわたって静かに増大します。
  5. ABI は結合組織です。C がライブラリ境界の共通語になったため、すべての「外部関数インターフェイス」(Python の ctypes、Rust の FFI、Go の cgo) は C 型です。この役割により、開発者の流行に関係なく C の関連性が保たれます。
  6. C が依然として、カーネル、ドライバー、組み込みファームウェア、キャッシュ動作が支配的な最も内側のループを記述する適切なツールである場合。他の場所では、言語の比較 (安全でない C コンポーネントを安全に書き換えるための Rust、ops ツールの Go) は、正直で現代的な選択肢をカバーしています。

現場ノート

私たちにサニタイザーを制度化させた C のバグは、スタック トレースの民間伝承によって発見するのに 3 週間かかり、AddressSanitizer では 3 分かかりました。コンパイラーのエコシステムは、人間が午前 2 時にスキャンすべきではないものをすでに知っています。

よくある質問

新しいインフラストラクチャを C で作成する必要がありますか?

ほとんど完全にということはありません。最大限の制御が重要な場合、カーネルとドライバーは C のままです。サービスとツールは Python/Go/Rust を今すぐデプロイします。セーフエッジ付きの C コアは、実用的な現代的な形状です。

なぜこれほど多くの CVE の原因として C が非難されているのでしょうか?

メモリ安全性のバグは UB が存在する場所とまったく同じ場所に存在し、世界の重要なコードの非常に大きなシェアが C であるためです。管理者は、より安全なメモリ ツール、ファジング、および「プロアクティブな開発」の実践に従って対象を絞った書き換えによって軽減します。

管理者はどうすれば C の読み方を効果的に学ぶことができますか?

実際のサービス ソース、つまり小さなコードベースのパッケージ (curl が良いスタートです) を分離し、修正に対する CVE レポートを読み、テスト ボックスで gdb を練習します。流暢になれるには、数週間の週末と実際の成果物が必要です。

現代の C (C17/C23) は、話が変わるほど異なっていますか?

インクリメンタル: 標準は慎重に進化していますが、メモリ モデルと UB の状況は長年にわたる現実のままです。標準的なチャーンではなく、ツーリングにおいて安全性の進歩が起こりました。

プログラミング言語の比較 に対するKinetikatechの支援

シンプルな提案です:システム作業、スクリプト、およびサービスの言語を、本番環境で実際に重要なこと、つまり安全性の保証、実際の速度、誰を雇用できるか、結果として得られるサービスの展開とパッチの適用がどれほど面倒であるかについて比較しました。 サーバー管理とWebサイト保守サービスにお任せください。徹底的に評価され、クリーンに実装され、24時間監視されます。

エンジニアに相談する

サーバーの障害?サイトの改ざん?表示が遅い?

重大な障害には30分以内に対応 — 24時間365日体制です。

緊急サポートを依頼する support@kinetikatech.com