👀

プログラミング言語の分類を調査してみた

2023/04/13に公開

はじめに

プログラミング言語の分類を調査してみました.個人的には文法による分類のイメージが大きかったのですが,調べてみると他にも様々な分類があったのでここに共有します

English
I have investigated the classification of programming languages. Personally, I was under the impression that programming languages were classified according to grammar, but I found that there are many other classifications, so I will share them here.

文法による分類(Syntax classification)

名称 言語 説明
手続き型言語 C, Pascal, Fortran 手続き型言語は,​手続き(サブルーチン,​関数)を中心にプログラムを構成するプログラミング言語である.​手続き型言語は,​命令型言語の一種であり,​手続きを順次実行することでプログラムを実行する.​
オブジェクト指向言語 Java, C++, Python オブジェクト指向言語は,​オブジェクトを中心にプログラムを構成するプログラミング言語である.​オブジェクト指向言語は,​手続き型言語とは異なり,​オブジェクトという単位でプログラムを構成する.​
関数型言語 Haskell, Lisp, Ocaml 関数型言語は,​関数を中心にプログラムを構成するプログラミング言語である.​関数型言語は,​手続き型言語とは異なり,​関数を第一級オブジェクトとして扱う.​
マルチパラダイム言語 Rust, Julia, Scala マルチパラダイム言語は,​複数のプログラミングパラダイムを組み合わせたプログラミング言語である.​マルチパラダイム言語は,​手続き型言語,​オブジェクト指向言語,​関数型言語,​宣言型言語など,​複数のプログラミングパラダイムを組み合わせた言語である.​

English

Name Language Description
Procedural language C, Pascal, Fortran A programming language that constructs programs around procedures (subroutines, functions). A procedural language is a type of imperative language, executing programs by sequentially running procedures.
Object-oriented language Java, C++, Python A programming language that constructs programs around objects. Unlike procedural languages, object-oriented languages construct programs around units called objects.
Functional language Haskell, Lisp, Ocaml A programming language that constructs programs around functions. Unlike procedural languages, functional languages treat functions as first-class objects.
Multiparadigm language Rust, Julia, Scala A programming language that combines multiple programming paradigms. A multiparadigm language is a language that combines multiple programming paradigms such as procedural languages, object-oriented languages, functional languages, and declarative languages.

ソースコード例

単に "Hello World!" を出力するプログラムなので,文法の特徴を説明するには不適切ですがご了承ください

手続き型言語:C

#include <stdio.h>

int main() {
    printf("Hello World!\n");
    return 0;
}

オブジェクト指向言語:Java

public class HelloWorld {
    public static void main(String[] args) {
        System.out.println("Hello World!");
    }
}

関数型言語:Haskell

main :: IO ()
main = putStrLn "Hello World!"

マルチパラダイム言語:Scala

object HelloWorld {
  def main(args: Array[String]): Unit = {
    println("Hello World!")
  }
}

プログラムの実行形式による分類(Classification by program execution type)

名称 言語 説明
コンパイラ言語 C, Fortran コンパイラ言語は,​​コンパイルという処理を行うことでプログラムを実行するプログラミング言語である.​​コンパイラ言語は,​​コンパイルによって実行ファイルを生成するため,​​実行速度が速い.​​
スクリプト言語 Python, JavaScript, R スクリプト言語は,​​スクリプトという形式でプログラムを実行するプログラミング言語である.​​スクリプト言語は,​​コンパイルによる実行ファイルの生成が不要であり,​​実行速度は遅いが,​​開発速度が速い.​​

English

Name Language Description
Compiled language C, Fortran A programming language that executes programs by performing the process of compilation. Since compiled language generates executable files through compilation, it has fast execution speed.
Scripting language Python, JavaScript, R A programming language that executes programs in the form of scripts. Scripting language does not require the generation of executable files through compilation, so its execution speed is slow but development speed is fast.

適用分野による分類(Classification by application field)

ここに挙げた分野はほんの一部です.他にも様々な適用分野が存在します.

名称 言語 説明
Web系 JavaScript, PHP, Ruby, Python Web系は,​​Webアプリケーション開発に適したプログラミング言語である.
組み込み系 C, Assembly 組み込み系は,​​組み込みシステム開発に適したプログラミング言語である.
アプリ系 Java, Swift, Kotlin アプリ系は,​​アプリケーション開発に適したプログラミング言語である.
ソフトウェア系 C++, Python, Ruby ソフトウェア系は,​​ソフトウェア開発に適したプログラミング言語である
マークアップ HTML, XML, Markdown マークアップは,​​文書の構造を記述するためのプログラミング言語である.
クエリ SQL クエリは,​​データベースからデータを取得するためのプログラミング言語である.
科学技術計算 MATLAB, R, Julia 科学技術計算は,​​科学技術計算に適したプログラミング言語である.

English
The fields listed here are just a small part. There are various other application fields.

Name Language Description
Web development JavaScript, PHP, Ruby, Python Programming languages suitable for web application development.
Embedded systems C, Assembly Programming languages suitable for embedded system development.
Application development Java, Swift, Kotlin Programming languages suitable for application development.
Software development C++, Python, Ruby Programming languages suitable for software development.
Markup HTML, XML, Markdown Programming languages for describing the structure of documents.
Query language SQL Programming language for retrieving data from databases.
Scientific computing MATLAB, R, Julia Programming languages suitable for scientific computing.

機械語寄り or 自然言語寄り(Machine language-oriented or natural language-oriented)

名称 言語 説明
低水準言語 Assembly, C 低水準言語は,​​機械語に近いプログラミング言語である
高水準言語 Python, Ruby, Java, Kotlin, R, MATLAB, Julia 高水準言語は,​​機械語から離れた,自然言語に近いプログラミング言語である.

English

Name Language Description
Low-level language Assembly, C A programming language that is close to machine language.
High-level language Python, Ruby, Java, Kotlin, R, MATLAB, Julia A programming language that is farther away from machine language and closer to natural language.

ソースコード例

"Hello World!" を出力するプログラムを記述しました

低水準言語:Assembly

section .data
    hello db "Hello, World!", 0

section .text
    global _start

_start:
    ; write "Hello, World!" to stdout
    mov eax, 4 ; system call for "write"
    mov ebx, 1 ; file descriptor for stdout
    mov ecx, hello ; message to write
    mov edx, 13 ; message length
    int 0x80 ; call kernel

    ; exit program with status code 0
    mov eax, 1 ; system call for "exit"
    xor ebx, ebx ; exit status code (0)
    int 0x80 ; call kernel

高水準言語:Python

print("Hello World!")

Discussion