ホームページ システムチュートリアル Linux NASA のようなプログラミング コードを書くのに役立つトップ プログラマーになるための 10 のガイド!

NASA のようなプログラミング コードを書くのに役立つトップ プログラマーになるための 10 のガイド!

Jan 06, 2024 pm 07:02 PM
linux レッドハット

###導入### はじめに: NASA のトッププログラマーがミッションクリティカルなコードをどのように書いているかご存知ですか?コードをより明瞭、安全、理解しやすいものにするために、NASA のジェット推進研究所は 10 のコーディング ルールを開発しました。

十条准则帮助你像 NASA 顶级程序员一样编程!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. すべてのループには固定の上限が必要です。ループが事前に設定された反復上限に到達できないことを検出ツールによって静的に確認する必要があります。この上限が静的に証明できない場合は、この原則に違反していると見なすことができます。
  2. 初期化後に動的メモリ割り当てを使用しないでください。
  3. 1 行に 1 つのステートメントと 1 行に 1 つの宣言という標準形式を参照する場合、関数の長さは紙 1 枚を超えてはなりません。通常、これは関数あたりのコードが 60 行以下であることを意味します。
  4. コード内のアサーションの密度は、関数ごとに平均して 2 アサーションと低くなります。アサーションは、実際の実行では起こりそうもない状況を検出するために使用されます。アサーションには副作用があってはならず、ブール テストとして定義する必要があります。アサーションが失敗した場合は、アサーションに失敗した関数の呼び出し元にエラー状態を返すなど、明示的な回復アクションを実行する必要があります。静的ツールの場合、静的ツールによって決して失敗しない、または決して起動しないことが証明できるアサーションはすべて、このルールに違反します (たとえば、無駄なassert(true) ステートメントを追加してこのルールを満たすことは不可能です)。
  5. データ オブジェクトは最小のスコープで宣言する必要があります。
  6. void 以外の関数の戻り値は、関数が呼び出されるたびにチェックする必要があり、そのパラメーターの有効性は各関数内でチェックする必要があります。
  7. プリプロセッサの使用は、ヘッダー ファイルと単純なマクロ定義を含めることに限定されます。シンボルの結合、可変長引数リスト (省略記号)、および再帰マクロ呼び出しは許可されません。すべてのマクロは、完全な構文単位に拡張可能である必要があります。条件付きコンパイル ディレクティブの使用はわかりにくいことがよくありますが、常に回避できるわけではありません。これは、大規模なソフトウェア開発であっても、ヘッダー ファイルを複数回インクルードすることを避けるという標準的な慣例を超えて、1 つまたは 2 つ以上の条件付きコンパイル ディレクティブに正当な理由が必要であることを意味します。コード内でこれを行うたびに、ツールベースのチェッカーによってフラグが付けられる必要がありますが、それには十分な理由があります。
  8. ポインターの使用は制限されるべきです。特に、ポインターの逆参照は 1 レベルを超えてはなりません。ポインター逆参照操作をマクロ定義または型宣言で暗黙的に行うことはできません。また、関数ポインターは使用できません。
  9. 開発初日から、コンパイラによって有効になっている最高レベルの警告オプションを使用してコードをコンパイルする必要があります。この設定では、コードは警告なしでコンパイルする必要があります。コードは、少なくとも 1 日に 1 回以上、ソース コード静的解析ツールを使用してチェックされ、警告なしで合格する必要があります。
  10. これらのルールに関して、NASA は次のように述べています:

これらのルールは車のシートベルトのようなもので、最初は少し不快に感じるかもしれませんが、しばらくすると習慣になり、使用しないことは考えられません。

###著者について:###

Adarsh Verma は Fossbytes の共同創設者であり、オープンソース、技術の進歩、完全性に常に注目してきた尊敬される起業家です。電子メールで彼に連絡できます —
[email protected]

以上がNASA のようなプログラミング コードを書くのに役立つトップ プログラマーになるための 10 のガイド!の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

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

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

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

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

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

web.xmlを開く方法 web.xmlを開く方法 Apr 03, 2025 am 06:51 AM

web.xmlファイルを開くには、次の方法を使用できます。テキストエディター(メモ帳やテキストエディットなど)を使用して、統合開発環境(EclipseやNetBeansなど)を使用してコマンドを編集できます(Windows:Notepad web.xml; Mac/Linux:Open -A Textedit Web.xml)

マルチスレッドをC言語で実装する4つの方法 マルチスレッドをC言語で実装する4つの方法 Apr 03, 2025 pm 03:00 PM

言語のマルチスレッドは、プログラムの効率を大幅に改善できます。 C言語でマルチスレッドを実装する4つの主な方法があります。独立したプロセスを作成します。独立して実行される複数のプロセスを作成します。各プロセスには独自のメモリスペースがあります。擬似マルチスレッド:同じメモリ空間を共有して交互に実行するプロセスで複数の実行ストリームを作成します。マルチスレッドライブラリ:pthreadsなどのマルチスレッドライブラリを使用して、スレッドを作成および管理し、リッチスレッド操作機能を提供します。 Coroutine:タスクを小さなサブタスクに分割し、順番に実行する軽量のマルチスレッド実装。

Linuxは何に最適なものですか? Linuxは何に最適なものですか? Apr 03, 2025 am 12:11 AM

Linuxは、サーバー管理、組み込みシステム、デスクトップ環境として最適です。 1)サーバー管理では、LinuxはWebサイト、データベース、アプリケーションをホストするために使用され、安定性と信頼性を提供します。 2)組み込みシステムでは、Linuxは柔軟性と安定性のため、スマートホームおよび自動車電子システムで広く使用されています。 3)デスクトップ環境では、Linuxは豊富なアプリケーションと効率的なパフォーマンスを提供します。

Debian Hadoopの互換性はどうですか Debian Hadoopの互換性はどうですか Apr 02, 2025 am 08:42 AM

DebianLinuxは、その安定性とセキュリティで知られており、サーバー、開発、デスクトップ環境で広く使用されています。現在、DebianとHadoopとの直接的な互換性に関する公式の指示が不足していますが、この記事では、DebianシステムにHadoopを展開する方法について説明します。 Debianシステムの要件:Hadoop構成を開始する前に、DebianシステムがHadoopの最小動作要件を満たしていることを確認してください。これには、必要なJavaランタイム環境(JRE)とHadoopパッケージのインストールが含まれます。 Hadoop展開手順:Hadoopをダウンロードして解凍:公式ApachehadoopのWebサイトから必要なHadoopバージョンをダウンロードして解決します

GOを使用してOracleデータベースに接続するときにOracleクライアントをインストールする必要がありますか? GOを使用してOracleデータベースに接続するときにOracleクライアントをインストールする必要がありますか? Apr 02, 2025 pm 03:48 PM

GOを使用してOracleデータベースに接続するときにOracleクライアントをインストールする必要がありますか? GOで開発するとき、Oracleデータベースに接続することは一般的な要件です...

Debian文字列は、複数のブラウザと互換性があります Debian文字列は、複数のブラウザと互換性があります Apr 02, 2025 am 08:30 AM

「DebianStrings」は標準的な用語ではなく、その特定の意味はまだ不明です。この記事は、ブラウザの互換性について直接コメントすることはできません。ただし、「DebianStrings」がDebianシステムで実行されているWebアプリケーションを指す場合、そのブラウザの互換性はアプリケーション自体の技術アーキテクチャに依存します。ほとんどの最新のWebアプリケーションは、クロスブラウザーの互換性に取り組んでいます。これは、次のWeb標準と、適切に互換性のあるフロントエンドテクノロジー(HTML、CSS、JavaScriptなど)およびバックエンドテクノロジー(PHP、Python、Node.jsなど)を使用することに依存しています。アプリケーションが複数のブラウザと互換性があることを確認するには、開発者がクロスブラウザーテストを実施し、応答性を使用する必要があることがよくあります

rootとしてmysqlにログインできません rootとしてmysqlにログインできません Apr 08, 2025 pm 04:54 PM

ルートとしてMySQLにログインできない主な理由は、許可の問題、構成ファイルエラー、一貫性のないパスワード、ソケットファイルの問題、またはファイアウォール傍受です。解決策には、構成ファイルのBind-Addressパラメーターが正しく構成されているかどうかを確認します。ルートユーザー許可が変更されているか削除されてリセットされているかを確認します。ケースや特殊文字を含むパスワードが正確であることを確認します。ソケットファイルの許可設定とパスを確認します。ファイアウォールがMySQLサーバーへの接続をブロックすることを確認します。

libvは2つです libvは2つです Apr 03, 2025 pm 08:03 PM

私はLua-Libuvというプロジェクトを開発しましたが、私の経験を喜んで共有しています。プロジェクトの当初の意図は、libuv(cで書かれた非同期I/Oライブラリ)を使用して、C言語を深く学習せずに簡単なHTTPサーバーを構築する方法を探ることです。 ChatGptの助けを借りて、http.cの基本コードを完了しました。永続的な接続を扱うとき、私は正しいタイミングでリソースを閉鎖し、解放することに成功しました。最初は、接続を閉じることでメインプログラムを終了するシンプルなサーバーを作成しようとしましたが、いくつかの問題がありました。ストリーミングを使用してデータのブロックを送信しようとしましたが、機能している間、これによりメインスレッドがブロックされます。最終的に、私の目標はC言語を深く学ぶことではなかったので、このアプローチをあきらめることにしました。最後に、i

See all articles