プログラミング言語の比較

出典: フリー百科事典『ウィキペディア(Wikipedia)』
移動: 案内検索

プログラミング言語の比較(プログラミングげんごのひかく)では、プログラミング言語の比較をする。

プログラミング言語は機械(またはコンピュータ)を制御するために使用される。プログラミング言語も自然言語のように意味を定義するために構文的、意味的な規則を使用する。

現在何千ものプログラミング言語があり、多くの職業プログラマが生涯の間に何十もの異なった言語を使用している。毎年新しいものが作られているものの、ほとんどの言語は一般的にはなっていない。

全体の比較[編集]

以下の表は主要なプログラミング言語の全体的および技術的な情報を比較している。詳細は個々の言語のページを参照のこと。

言語 一般的な実行モデル 影響を受けた言語 プログラムパラダイム 型付け 登場時期
Ada ネイティブ Algol, Pascal, C++ (Ada 95), Smalltalk (Ada 95) 並行性, 分散コンピューティング, ジェネリック, 命令型, オブジェクト指向 宣言型の安全な強い静的型付け 1983
C ネイティブ Algol, B 命令型 安全でない弱い静的型付け 1973
C++ ネイティブ C, Simula, Algol 68 命令型, オブジェクト指向, ジェネリック 宣言型の安全でない強い静的型付け 1980
C# JIT Delphi, Java, C++, Ruby 命令型, オブジェクト指向, ジェネリック, マルチプラットフォーム 強い安全である/ない静的型付け 2000
COBOL ネイティブ FLOW-MATIC, COMTRAN 命令型, オブジェクト指向 弱い/強い型付け 1959
Common Lisp ネイティブ LISP, Smalltalk 命令型, 関数型, オブジェクト指向 安全で強い動的型付け 1984
D ネイティブ C , C++, Java, C#, Eiffel, Python, Ruby 命令型, オブジェクト指向, ジェネリック, 契約プログラミング, 関数型 強い型付け 1999
Eiffel ネイティブ Ada, Simula オブジェクト指向, ジェネリック 宣言型の安全な強い静的型付け, 契約プログラミング 1985
Erlang ネイティブ Prolog, Ericsson Pascal, CSP 関数型, 並行性, 分散コンピューティング, マルチプラットフォーム 強い動的型付け late 1980s
Forth インタプリタ / ネイティブ 無し 命令型, スタック指向 型無し 1977
Fortran ネイティブ 無し, Algol(FORTRAN 77以降) 命令型, 手続き型, オブジェクト指向 宣言型の安全な強い静的型付け 1957
Java インタプリタ / JIT C++, Objective-C, C#[1] 命令型, オブジェクト指向, マルチプラットフォーム, ジェネリック 強い静的型付け 1994
JavaScript インタプリタ C, Self, awk, Perl 命令型, オブジェクト指向, 関数型 強い動的型付け 1995
Haskell インタプリタ / ネイティブ Miranda, ML 関数型ジェネリック 強い静的型付け言語、型推論 1998
Mathematica インタプリタ LISP 関数型, 手続き型 強い動的型付け 1986
Objective-C ネイティブ C, Smalltalk 命令型, オブジェクト指向 強い動的/静的型付け 1986
Object Pascal ネイティブ Pascal 命令型, オブジェクト指向 宣言型の安全で(ただし安全でないのも許可してる)強い静的型付け 1985
OCaml インタプリタ / ネイティブ ML, LISP オブジェクト指向, 関数型, 命令型, ジェネリック 構造型の安全で静的型付け、型推論 1996
Perl JIT C, shell, AWK, sed, LISP 関数型, オブジェクト指向, 手続き型 強い動的型付け 1987
PHP インタプリタ Perl, C 命令型, オブジェクト指向 強い動的型付け 1995
Prolog インタプリタ PLANNER, LISP 論理型 安全で強い動的型付け(単一化) 1972
Python インタプリタ ABC, Perl, Modula-3 命令型, オブジェクト指向, 関数型 強い動的型付け(ダック・タイピング) 1991
Ruby インタプリタ Perl, Smalltalk, LISP,CLU 命令型, オブジェクト指向, 関数型 強い動的型付け(ダック・タイピング) 1995
Scala インタプリタ / ネイティブ Java オブジェクト指向, 関数型, ジェネリック 強い静的型付け、部分的な型推論 2003
Scheme インタプリタ / ネイティブ LISP, Algol 60 関数型 動的型付け 1975
Smalltalk JIT Sketchpad, Simula オブジェクト指向, 関数型, 並列コンピューティング, イベント駆動型, 命令型, 宣言型 安全で強い動的型付け, ダック 1971
Swift ネイティブ Objective-C, Rust, Haskell, Ruby, Python, C#, CLU 命令型, オブジェクト指向, 関数型ジェネリック 強い静的型付け、型推論 2014
Visual Basic ネイティブ QuickBASIC コンポーネント指向, イベント駆動型 宣言型の安全で強い静的/動的型付け 1991
Visual Basic .NET JIT Visual Basic オブジェクト指向, イベント駆動型 強い静的型付け 2001

構文の表現[編集]

言語 文の種類の比[2] 行の比[3]
C 1 1
C++ 2.5 1
Fortran 2.5 .8
Java 2.5 1.5
Perl 6 6
Python 6 6.5
Smalltalk 6 .625
MS Visual Basic 4.5  ?

プログラミング言語に関する文献はそれらの相対的な表現力に関して多くのくだけた主張を含んでいるものの、文やおもしろい結果を引き出すための一定の形の枠組みがない。[4] この図は2つの異なったソースからの表現力測定を提供する。表現力測定に追加でGzip bytesで比較するツールがComputer Languages Shootoutにある。

脚注[編集]

[ヘルプ]
  1. ^ Java 5.0 では、いくつかの機能(Foreach文オートボクシング可変長引数アノテーション列挙型)が C# のようなライバル言語で有効性が証明されてから追加された。[1][2][3]
  2. ^ コードコンプリートのデータから。 文の種類の比は column "shows typical ratios of source statements in several high-level languages to the equivalent code in C. A higher ratio means that each line of code in the language listed accomplishes more than does each line of code in C.
  3. ^ The ratio of line count tests won by each language to the number won by C when using the Compare to feature at http://shootout.alioth.debian.org/debian/c.php. Last updated May, 2006. C gcc was used for C, C++ g++ was used for C++, Fortran G95 was used for Fortran, Java JDK Server was used for Java, and Smalltalk GST was used for Smalltalk.
  4. ^ On the Expressive Power of Programming Languages、Matthias Felleisen、ESOP '90 3rd European Symposium on Programmingより。