はじめに: NASA のトッププログラマーがミッションクリティカルなコードをどのように書いているかご存知ですか?コードをより明瞭、安全、理解しやすいものにするために、NASA のジェット推進研究所は 10 のコーディング ルールを開発しました。 |
NASA での開発者の仕事は、プログラミングの世界で最も困難なものの 1 つです。彼らの主な焦点は、コードを記述し、安全でミッションクリティカルなアプリケーションを開発することです。このため、厳密なコーディング ルールに従うことが重要になります。これらのルールは、コーディング スタイル、言語機能の使用など、ソフトウェア開発の多くの側面をカバーしています。適切なコーディング標準について合意することは困難ですが、NASA のジェット推進研究所 (JPL) は、Powers of Ten: Rules for Developing Secure Critical Code と呼ばれる一連のコーディング ルールに従っています。
JPL は長い間 C を使用しているため、これらのルールは主に C で書かれたプログラムを対象としています。ただし、これらのルールは他のプログラミング言語にも簡単に適用できます。これらのコーディング ルールは、主にセキュリティを確保するために、JPL の主任科学者である Gerard J. Holzmann によって開発されました。
NASA のミッションクリティカルなコード作成に関する 10 のルール:
すべてのコードを非常に単純な制御フロー構造に制限します。goto ステートメント、setjmp または longjmp 構造、間接的または直接的な再帰呼び出しは禁止します。
- すべてのループには固定の上限が必要です。ループが事前に設定された反復上限に到達できないことを検出ツールによって静的に確認する必要があります。この上限が静的に証明できない場合は、この原則に違反していると見なすことができます。
- 初期化後に動的メモリ割り当てを使用しないでください。
- 1 行に 1 つのステートメントと 1 行に 1 つの宣言という標準形式を参照する場合、関数の長さは紙 1 枚を超えてはなりません。通常、これは関数あたりのコードが 60 行以下であることを意味します。
- コード内のアサーションの密度は、関数ごとに平均して 2 アサーションと低くなります。アサーションは、実際の実行では起こりそうもない状況を検出するために使用されます。アサーションには副作用があってはならず、ブール テストとして定義する必要があります。アサーションが失敗した場合は、アサーションに失敗した関数の呼び出し元にエラー状態を返すなど、明示的な回復アクションを実行する必要があります。静的ツールの場合、静的ツールによって決して失敗しない、または決して起動しないことが証明できるアサーションはすべて、このルールに違反します (たとえば、無駄なassert(true) ステートメントを追加してこのルールを満たすことは不可能です)。
- データ オブジェクトは最小のスコープで宣言する必要があります。
- void 以外の関数の戻り値は、関数が呼び出されるたびにチェックする必要があり、そのパラメーターの有効性は各関数内でチェックする必要があります。
- プリプロセッサの使用は、ヘッダー ファイルと単純なマクロ定義を含めることに限定されます。シンボルの結合、可変長引数リスト (省略記号)、および再帰マクロ呼び出しは許可されません。すべてのマクロは、完全な構文単位に拡張可能である必要があります。条件付きコンパイル ディレクティブの使用はわかりにくいことがよくありますが、常に回避できるわけではありません。これは、大規模なソフトウェア開発であっても、ヘッダー ファイルを複数回インクルードすることを避けるという標準的な慣例を超えて、1 つまたは 2 つ以上の条件付きコンパイル ディレクティブに正当な理由が必要であることを意味します。コード内でこれを行うたびに、ツールベースのチェッカーによってフラグが付けられる必要がありますが、それには十分な理由があります。
- ポインターの使用は制限されるべきです。特に、ポインターの逆参照は 1 レベルを超えてはなりません。ポインター逆参照操作をマクロ定義または型宣言で暗黙的に行うことはできません。また、関数ポインターは使用できません。
- 開発初日から、コンパイラによって有効になっている最高レベルの警告オプションを使用してコードをコンパイルする必要があります。この設定では、コードは警告なしでコンパイルする必要があります。コードは、少なくとも 1 日に 1 回以上、ソース コード静的解析ツールを使用してチェックされ、警告なしで合格する必要があります。
- これらのルールに関して、NASA は次のように述べています:
これらのルールは車のシートベルトのようなもので、最初は少し不快に感じるかもしれませんが、しばらくすると習慣になり、使用しないことは考えられません。
###著者について:###
Adarsh Verma は Fossbytes の共同創設者であり、オープンソース、技術の進歩、完全性に常に注目してきた尊敬される起業家です。電子メールで彼に連絡できます —[email protected]
以上がNASA のようなプログラミング コードを書くのに役立つトップ プログラマーになるための 10 のガイド!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

インターネットは単一のオペレーティングシステムに依存していませんが、Linuxはその上で重要な役割を果たしています。 Linuxは、サーバーやネットワークデバイスで広く使用されており、安定性、セキュリティ、スケーラビリティに人気があります。

Linuxオペレーティングシステムのコアは、コマンドラインインターフェイスで、コマンドラインを介してさまざまな操作を実行できます。 1.ファイルおよびディレクトリ操作は、ファイルとディレクトリを管理するために、LS、CD、MKDIR、RM、その他のコマンドを使用します。 2。ユーザーおよび許可管理は、useradd、passwd、chmod、その他のコマンドを介してシステムのセキュリティとリソースの割り当てを保証します。 3。プロセス管理は、PS、Kill、およびその他のコマンドを使用して、システムプロセスを監視および制御します。 4。ネットワーク操作には、Ping、Ifconfig、SSH、およびネットワーク接続を構成および管理するためのその他のコマンドが含まれます。 5.システムの監視とメンテナンスは、TOP、DF、DUなどのコマンドを使用して、システムの動作ステータスとリソースの使用を理解します。

導入 Linuxは、柔軟性と効率性により、開発者、システム管理者、およびパワーユーザーが好む強力なオペレーティングシステムです。しかし、頻繁に長く複雑なコマンドを使用することは退屈でERです

Linuxは、サーバー、開発環境、埋め込みシステムに適しています。 1.サーバーオペレーティングシステムとして、Linuxは安定して効率的であり、多くの場合、高電流アプリケーションの展開に使用されます。 2。開発環境として、Linuxは効率的なコマンドラインツールとパッケージ管理システムを提供して、開発効率を向上させます。 3.埋め込まれたシステムでは、Linuxは軽量でカスタマイズ可能で、リソースが限られている環境に適しています。

はじめに:Linuxベースの倫理的ハッキングでデジタルフロンティアを保護します ますます相互に接続されている世界では、サイバーセキュリティが最重要です。 倫理的なハッキングと浸透テストは、脆弱性を積極的に特定し、緩和するために不可欠です

基本的なLinux学習の方法は次のとおりです。1。ファイルシステムとコマンドラインインターフェイス、2。LS、CD、MKDIR、3。ファイルの作成と編集などのファイル操作を学習するマスター基本コマンド、4。

Linuxは、サーバー、組み込みシステム、デスクトップ環境で広く使用されています。 1)サーバーフィールドでは、Linuxは、その安定性とセキュリティにより、Webサイト、データベース、アプリケーションをホストするための理想的な選択肢となっています。 2)埋め込みシステムでは、Linuxは高いカスタマイズと効率で人気があります。 3)デスクトップ環境では、Linuxはさまざまなユーザーのニーズを満たすために、さまざまなデスクトップ環境を提供します。

Linuxの欠点には、ユーザーエクスペリエンス、ソフトウェア互換性、ハードウェアサポート、学習曲線が含まれます。 1.ユーザーエクスペリエンスは、WindowsやMacOほどフレンドリーではなく、コマンドラインインターフェイスに依存しています。 2。ソフトウェアの互換性は他のシステムほど良くなく、多くの商用ソフトウェアのネイティブバージョンがありません。 3.ハードウェアサポートはWindowsほど包括的ではなく、ドライバーは手動でコンパイルされる場合があります。 4.学習曲線は急で、コマンドラインの操作をマスターするには時間と忍耐が必要です。


ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

SublimeText3 中国語版
中国語版、とても使いやすい

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

SecLists
SecLists は、セキュリティ テスターの究極の相棒です。これは、セキュリティ評価中に頻繁に使用されるさまざまな種類のリストを 1 か所にまとめたものです。 SecLists は、セキュリティ テスターが必要とする可能性のあるすべてのリストを便利に提供することで、セキュリティ テストをより効率的かつ生産的にするのに役立ちます。リストの種類には、ユーザー名、パスワード、URL、ファジング ペイロード、機密データ パターン、Web シェルなどが含まれます。テスターはこのリポジトリを新しいテスト マシンにプルするだけで、必要なあらゆる種類のリストにアクセスできるようになります。

Dreamweaver Mac版
ビジュアル Web 開発ツール

PhpStorm Mac バージョン
最新(2018.2.1)のプロフェッショナル向けPHP統合開発ツール
