JSON
Programming Language Paradigms - JSON
Programming language paradigms are fundamental styles or approaches that define the structure and execution of programs. Major paradigms include imperative, declarative, object-oriented, and functional, each offering different approaches to problem-solving. Many modern languages are designed as multi-paradigm languages, combining multiple paradigms to allow developers to choose the most suitable approach for their problems.
programming
paradigm
imperative
declarative
object-oriented
functional
software engineering
[
{
"code": "IMP",
"slug": "imperative",
"name": "Imperative Programming",
"description": "A paradigm consisting of step-by-step instructions that change program state.",
"category": "Imperative",
"exampleLanguages": [
"C",
"Fortran",
"BASIC",
"Pascal",
"COBOL"
],
"keyCharacteristics": [
"ステートメントの逐次実行",
"変数と代入",
"制御フロー(ループ、条件分岐)",
"メモリ状態の変更"
]
},
{
"code": "PROC",
"slug": "procedural",
"name": "Procedural Programming",
"description": "A derivative of imperative paradigm that emphasizes reusable procedures (functions).",
"category": "Imperative",
"exampleLanguages": [
"C",
"C++",
"Java",
"Pascal",
"Go"
],
"keyCharacteristics": [
"関数・手続きの定義",
"コードの再利用性",
"構造化された制御フロー",
"スコープとモジュール性"
]
},
{
"code": "OOP",
"slug": "object-oriented",
"name": "Object-Oriented Programming",
"description": "A paradigm centered around objects that encapsulate data and behavior.",
"category": "Imperative",
"exampleLanguages": [
"Java",
"C++",
"Python",
"Ruby",
"C#",
"Smalltalk",
"Simula"
],
"keyCharacteristics": [
"カプセル化",
"継承",
"多態性(ポリモーフィズム)",
"抽象化",
"クラスとオブジェクト"
]
},
{
"code": "DEC",
"slug": "declarative",
"name": "Declarative Programming",
"description": "A paradigm that describes 'what' to achieve, abstracting away the control flow of 'how' to achieve it.",
"category": "Declarative",
"exampleLanguages": [
"SQL",
"HTML",
"CSS",
"Prolog",
"Haskell"
],
"keyCharacteristics": [
"結果の記述",
"制御フローの抽象化",
"副作用の排除",
"高い可読性"
]
},
{
"code": "FUNC",
"slug": "functional",
"name": "Functional Programming",
"description": "A paradigm that treats computation as the evaluation of mathematical functions, emphasizing immutability and avoiding side effects.",
"category": "Declarative",
"exampleLanguages": [
"Haskell",
"Scala",
"Clojure",
"Erlang",
"F#",
"Lisp",
"ML"
],
"keyCharacteristics": [
"純粋関数",
"不変性(イミュータビリティ)",
"高階関数",
"関数合成",
"再帰",
"副作用の回避"
]
},
{
"code": "LOGIC",
"slug": "logic",
"name": "Logic Programming",
"description": "A declarative paradigm where facts and rules are described, letting the system infer solutions.",
"category": "Declarative",
"exampleLanguages": [
"Prolog",
"Datalog",
"Answer Set Programming (ASP)"
],
"keyCharacteristics": [
"事実とルールの記述",
"論理推論",
"パターンマッチング",
"バックトラッキング"
]
},
{
"code": "REACT",
"slug": "reactive",
"name": "Reactive Programming",
"description": "A paradigm focused on asynchronous data streams and the propagation of change.",
"category": "Other",
"exampleLanguages": [
"RxJava",
"RxJS",
"Reactor",
"Akka",
"Elm"
],
"keyCharacteristics": [
"データストリーム",
"非同期処理",
"イベント駆動",
"バックプレッシャー制御",
"変更の伝播"
]
},
{
"code": "PARA",
"slug": "parallel",
"name": "Parallel Programming",
"description": "A paradigm that distributes processing across multiple processors for simultaneous execution.",
"category": "Other",
"exampleLanguages": [
"CUDA",
"OpenMP",
"MPI",
"C++ (with libraries)",
"Go"
],
"keyCharacteristics": [
"マルチスレッド/マルチプロセス",
"タスク分割",
"同期と通信",
"負荷分散"
]
},
{
"code": "EVENT",
"slug": "event-driven",
"name": "Event-Driven Programming",
"description": "A paradigm structured around event occurrences and the execution of their handlers.",
"category": "Other",
"exampleLanguages": [
"JavaScript",
"C#",
"Visual Basic",
"ActionScript"
],
"keyCharacteristics": [
"イベントループ",
"コールバック/ハンドラ",
"非同期処理",
"発行・購読モデル"
]
},
{
"code": "GENERIC",
"slug": "generic",
"name": "Generic Programming",
"description": "A paradigm that abstracts data types to write reusable code independent of specific types.",
"category": "Other",
"exampleLanguages": [
"C++ (Templates)",
"Java (Generics)",
"C#",
"Rust",
"Ada"
],
"keyCharacteristics": [
"型パラメータ",
"テンプレート/ジェネリクス",
"型安全性",
"コードの再利用性"
]
}
]