出典: フリー百科事典『ウィキペディア(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 |
ColdFusion |
JIT |
HTML |
手続き型, 関数型, オブジェクト指向 |
弱い動的型付け (ダック・タイピング) |
1995 |
Common Lisp |
ネイティブ |
LISP, Smalltalk |
前方参照, 関数型, オブジェクト指向 |
安全で強い動的型付け |
1984 |
D |
ネイティブ |
C , C++, Java, C# |
前方参照, オブジェクト指向, ジェネリック |
強い型付け |
2000 |
Eiffel |
ネイティブ |
Ada, Simula |
オブジェクト指向, ジェネリック |
宣言型の安全な強い静的型付け, 契約プログラミング |
1985 |
Erlang |
ネイティブ |
Prolog, Ericsson Pascal, CSP |
関数型, 並行性, 分散コンピューティング, マルチプラットフォーム |
弱い動的型付け |
late 1980s |
Forth |
インタリプタ / ネイティブ |
無し |
前方参照, スタック指向 |
型無し |
1977 |
Fortran |
ネイティブ |
無し |
前方参照, 手続き型, オブジェクト指向 |
宣言型の安全な強い静的型付け |
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 |
Objective Caml |
インタリプタ / ネイティブ |
ML, Lisp |
オブジェクト指向, 関数型, 前方参照, ジェネリック |
構造型の安全で静的型付け、型推論 |
1996 |
Object Pascal |
ネイティブ |
Pascal |
前方参照, オブジェクト指向 |
宣言型の安全で(ただし安全でないのも許可してる)強い静的型付け |
1985 |
Perl |
インタリプタ |
C, shell, awk, sed, Lisp |
関数型, オブジェクト指向, 手続き型 |
動的型付け |
1987 |
PHP |
インタリプタ |
Perl, C |
前方参照, オブジェクト指向 |
弱い動的型付け |
1995 |
Python |
インタリプタ |
ABC, Perl, Modula-3 |
前方参照, オブジェクト指向, 関数型 |
強い動的型付け(ダック・タイピング) |
1991 |
Ruby |
インタリプタ |
Perl, Python, Smalltalk |
前方参照, オブジェクト指向, 関数型 |
強い動的型付け(ダック・タイピング) |
1995 |
Scala |
インタリプタ / ネイティブ |
Java |
オブジェクト指向, 関数型, ジェネリック |
強い静的型付け、部分的な型推論 |
2003 |
Scheme |
インタリプタ / ネイティブ |
Lisp, Algol 60 |
関数型 |
動的型付け |
1975 |
Smalltalk |
JIT |
Sketchpad, Simula |
オブジェクト指向, 関数型, 並列コンピューティング, イベント駆動型, 前方参照, 宣言型 |
安全で強い動的型付け, ダック |
1971 |
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にあります。