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": [
      "型パラメータ",
      "テンプレート/ジェネリクス",
      "型安全性",
      "コードの再利用性"
    ]
  }
]