YAML

Programming Language Paradigms - YAML

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