1. 宣言型プログラミングの基本概念 MOC
- 宣言型プログラミングの定義と核心
- 命令型プログラミングとの対比
- 宣言型プログラミングの基本原則
- 副作用の最小化または排除
- 不変性 (Immutability) の重視 (関数型プログラミングと共通)
- 参照透過性 (Referential Transparency) (関数型プログラミングと共通)
- 式指向 (Expression-Oriented) の傾向
- 冪等性 (Idempotence) の概念と宣言型システム
- 宣言型プログラミングの利点
- 宣言型プログラミングの課題と欠点
2. 宣言型プログラミングの主要なサブパラダイム MOC
- 関数型プログラミング (Functional Programming) - 宣言的側面 MOC (詳細は関数型プログラミング MOCを参照)
- 論理プログラミング (Logic Programming) MOC
- データベースクエリ言語 (Database Query Languages) - 宣言的側面 MOC
- 制約プログラミング (Constraint Programming) MOC
- Infrastructure as Code (IaC) - 宣言的側面 MOC
- リアクティブプログラミング (Reactive Programming) - 宣言的側面 MOC
- イベントストリームとデータフローの宣言的記述
- 関数型リアクティブプログラミング (FRP) (詳細は関数型プログラミング MOC内の該当箇所も参照)
- データフロープログラミング (Dataflow Programming) MOC
- 宣言的UI (Declarative UI) MOC
3. 論理プログラミング (Logic Programming) 詳細 MOC
- 論理プログラミングの基礎
- 命題論理 (Propositional Logic) と述語論理 (Predicate Logic) の概要
- ホーン節 (Horn Clause) (事実、規則、ゴールの表現)
- 事実 (Fact) (無条件に真である命題)
- 規則 (Rule) (条件付きで真となる命題)
- Goal) (証明すべき命題)
- Prolog言語
- Prologの基本構文 (項、原子論理式、節)
- Prologにおける事実、規則、問い合わせの記述
- 単一化 (Unification) (項を等しくするための変数束縛)
- 導出 (Resolution) (演繹的推論プロセス)
- バックトラッキング (Backtracking) (解探索のメカニズム)
- Prologの実行モデル (SLD導出)
- [[カット (
!) 演算子とその影響]] (バックトラッキングの制御、緑のカットと赤のカット) - 否定 (Negation as Failure - NAF)
- Prologにおけるリスト処理
- Prologの算術演算
- Prologの組み込み述語
- 論理プログラミングの応用分野
- エキスパートシステム
- 自然言語処理 (NLP)
- 人工知能 (AI) と知識表現
- 定理証明
- データベース (Datalog)
- Datalog
- 制約論理プログラミング (Constraint Logic Programming - CLP)
- 論理プログラミングの利点と限界
4. データベースクエリ言語 (Database Query Languages) の宣言的側面 MOC
- リレーショナルモデルと宣言的クエリ
- リレーショナル代数 (Relational Algebra) (選択、射影、結合など - クエリの数学的基礎)
- リレーショナル計算 (Relational Calculus) (タプルリレーショナル計算、ドメインリレーショナル計算)
- SQL (Structured Query Language)
- SQLの宣言的性質 (「何が欲しいか」を記述)
- [[
SELECT文の構成要素と宣言的解釈]][[FROM句 (データソースの宣言)]][[WHERE句 (フィルタリング条件の宣言)]][[GROUP BY句 (グルーピングの宣言)]][[HAVING句 (グループ化後のフィルタリング条件の宣言)]][[ORDER BY句 (ソート順の宣言)]]
- JOIN操作の宣言的性質 (テーブル間の関連性の宣言)
[[INNER JOIN,LEFT JOIN,RIGHT JOIN,FULL OUTER JOIN]]
- 副問い合わせ (Subquery) の宣言的利用
- [[集約関数 (Aggregate Functions) (
COUNT,SUM,AVG,MAX,MIN)]] - ビュー (View) の宣言的定義
- (オプション) 再帰的CTE (Common Table Expressions)
- NoSQLデータベースのクエリ言語
- その他の宣言的データアクセス技術
5. Infrastructure as Code (IaC) の宣言的側面 MOC
- Infrastructure as Code (IaC) とは
- 宣言的IaCツールの原則
- 冪等性 (Idempotence) (何度実行しても同じ状態になる)
- 状態管理 (State Management) (現在の状態と望ましい状態の差分管理)
- リソース抽象化
- 具体的なツールとその宣言的記述
- Ansible MOC
- Puppet MOC
- Chef MOC (Ruby DSLによる記述、より命令的な側面も含むが宣言的なリソース定義)
- Terraform MOC
- Kubernetes Manifests MOC
- Dockerfilesの宣言的要素 (FROM, ENV, COPYなど - 一部は命令的)
- 宣言的設定管理の利点 (バージョン管理、再現性、自動化、スケーラビリティ)
6. 宣言的UI (Declarative UI) MOC
- 宣言的UIプログラミングの概念
- 主要な宣言的UIフレームワーク/ライブラリ
- 宣言的UIにおける状態管理
- 宣言的UIの利点 (予測可能性、保守性、テスト容易性、開発効率)
7. その他の宣言型アプローチと関連技術 MOC
- リアクティブプログラミング (Reactive Programming) と宣言性 (再掲・深掘り)
- データフロープログラミング (Dataflow Programming) と宣言性 (再掲・深掘り)
- ビルドシステムと依存関係記述
- CSS (Cascading Style Sheets) (Webページのスタイルの宣言的記述)
- 正規表現 (Regular Expressions) (パターンの宣言的記述)
- テンプレートエンジン (Template Engines) (Jinja2, Handlebarsなど - データと表示の宣言的分離)
- ドメイン固有言語 (DSL - Domain-Specific Language) と宣言性
- 形式仕様記述 (Formal Specification) (システムの振る舞いの宣言的記述)
8. 宣言型プログラミングのツール、フレームワーク、言語のまとめ MOC
- 各サブパラダイムにおける代表的な言語とツールのリストと特徴
- マルチパラダイム言語における宣言的機能のサポート (Python, Scala, JavaScriptなど)