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