概要

擬似コードは、アルゴリズムやプログラムの手順を示す、非公式で高水準な説明です。代入、ループ、条件分岐、手続き呼び出しなど、ソースコードに似た構造を持ちますが、言語固有の構文や低レベルの実装詳細は意図的に省かれます。目的は人間の読者にとっての明確さであり、特定のプログラミング言語を知らなくても解法の流れを理解できるようにすることです。補足として、関連資料も参照してください。

特徴

擬似コードには、さまざまな場面で役立つ共通の性質があります。

  • 読みやすい: 簡潔な記号よりも、説明的な名前や自然言語に近い表現を重視します。
  • 言語非依存: ひとつのプログラミング言語だけに属する構文は避けます。
  • 形式の柔軟性: かなりくだけたメモから、教科書で使われるほぼ形式的なアルゴリズム記述まで幅があります。
  • 実行不可: 通常は、実際のコードに変換しないかぎりコンピュータではそのまま実行できません。

歴史と発展

擬似コードは、数学者、技術者、計算機科学者が、プログラミング以前から、またプログラミングと並行してアルゴリズムを記録し共有するための便利な方法として発展しました。選んだ実装言語の付随的な細部から、アルゴリズムの論理構造を切り分けられるため、学術書や授業の場で広く用いられるようになりました。時間の経過とともに、教育や出版の分野では、ループや条件分岐をどのように表すかといった共通の言い回しがある程度標準化されましたが、すべての用法を統一する単一の厳密な標準はありません。

用途と例

擬似コードは、ソフトウェアの計画、論文や教科書でのアルゴリズム説明、試験問題や授業準備、コードレビューや面接でのアイデア共有に使われます。また、言語に依存しない記述が有用な技術文書や特許出願にも現れます。典型的な擬似コードの書き方を示す短い例は次のとおりです。

  • if n == 0 then return 1
  • for i from 1 to n do total ← total + a[i]
  • while not sorted do swap adjacent out-of-order elements

さらに例やひな形を知りたい場合は、入門的なアルゴリズムの教科書やオンラインガイドを参照してください。例とひな形を見る

指針と区別

擬似コードを書くときは、一貫した命名、単純な制御構造、意図を説明するコメントを心がけます。アルゴリズム上の手順と実装上の都合は明確に区別すべきであり、擬似コードではメモリ確保の詳細、特定のAPI呼び出し、正確なデータ型の構文などは避けるのが普通です。フローチャートや形式仕様言語とは異なり、擬似コードは平易なテキストで逐次的な流れと制御の流れを表すことに重点を置きます。また、実行可能な擬似コードやドメイン固有のモデリング言語とは異なり、文脈をまたいで厳密な意味論を保証するものではありません。こうした違いは、伝達のために擬似コードが適切か、それとも実行可能な試作や形式仕様が必要かを判断する助けになります。