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