プログラミング言語/特徴
プログラミング言語の特徴
編集プログラミング言語の特徴は、多くのプログラミング言語のブックの「特徴」の節で説明されていますが、表形式にまとめてみました。
プログラミング言語 | 登場時期 | 処理系 | 型付け | 型推論 | 型アノテーション | 例外 | 関数オーバーロード | 演算子オーバーロード | ラムダ式 | 匿名関数 | キーワード引数 | 可変長引数 | ガベージコレクション | オブジェクト指向 | ミックスイン | 国際規格 | 日本産業規格 | 備考 |
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Fortran | 1954 | コンパイラー | 静的 | ✕ | 必須 | ✕ | ISO/IEC 1539-1:2018 | JIS X3001-1:2009[1] | ||||||||||
Lisp | 1960 | インタープリター[2] | 動的 | ○[3] | ○ | ○ | ||||||||||||
COBOL | 1960 | コンパイラー | 静的 | ✕ | 必須 | ○ | ISO/IEC 1989:2014 | JIS X3002:2011 | ||||||||||
APL | 1964 | インタプリター | ✕ | ISO 8485:1989 | ||||||||||||||
BASIC | 1964 | インタープリター[4] | 静的 | ✕ | ✕ | ECMA-116† | JIS X3003:1993 | |||||||||||
PL/I | 1966 | コンパイラー | 静的 | ✕ | 必須 | ✕ | ISO 6160:1979 | |||||||||||
Simula | 1967 | ✕ | ||||||||||||||||
Algol | 1958 | コンパイラー | 静的 | ✕ | 必須 | ○ | ||||||||||||
Forth | 1968 | ✕ | ISO/IEC 15145:1997 | |||||||||||||||
Pascal | 1969 | コンパイラー 中間コード |
静的 | ✕ | 必須 | ✕ | ISO 7185:1990 | JIS X3008:1994 | ||||||||||
C言語 | 1972 | コンパイラー | 静的 | ✕ | 必須 | ✕ | ✕ | ✕ | ✕ | ✕ | ✕ | ○ | ✕ | ✕ | ✕ | ISO/IEC 9899:2018 | JIS X3010:2003 | |
Smalltalk | 1972 | 中間コード | ○ | |||||||||||||||
Prolog | 1972 | ✕ | ISO/IEC 13211-1:1995/Cor 2:2012 | |||||||||||||||
ML | 1974 | ✕ | ||||||||||||||||
Ada | 1979 | ✕ | ISO/IEC 8652:2012 | |||||||||||||||
C++ | 1983 | コンパイラー | 静的 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ✕ | ○ | ○ | ISO/IEC 14882:2020 | JIS X3014:2003 | |||
Objective-C | 1983 | ✕ | ||||||||||||||||
Eiffel | 1985 | インタープリター | ✕ | ISO/IEC 25436:2006 | ||||||||||||||
Perl | 1987 | インタープリター | ✕ | |||||||||||||||
Python | 1990 | インタープリター | ✕ | |||||||||||||||
Tcl | 1990 | インタープリター | ✕ | |||||||||||||||
Haskell | 1990 | インタープリター | ✕ | |||||||||||||||
Perl | 1987 | インタープリター | ✕ | |||||||||||||||
Python | 1990 | インタープリター | ✕ | |||||||||||||||
Lua | 1993 | インタプリター | 動的 | ← | ✕ | ○ | ○ | ○ | ○ | ○ | ✕ | ○ | ○ | ○ | ? | |||
Java | 1995 | 中間コード[5] | 静的 | ○ | ○[6] | ○ | ○ | ○ | ○ | ○ | ○ | ○ | △[7] | |||||
Ruby | 1995 | インタプリター | 動的 | ← | ✕ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ISO/IEC 30170:2012 | JIS X3017:2013 | |||
JavaScript | 1997 | インタープリター | 動的 | ← | △[8] | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ECMA-262 | |||||
ErLang | 1998 | インタープリター[9] | ✕ | |||||||||||||||
C Sharp | 2000 | 中間コード | ✕ | ISO/IEC 23270:2018 | JIS X3015:2008 | |||||||||||||
D言語 | 2001 | コンパイラー | 静的 | ○ | ○ | ○ | ✕ | |||||||||||
Scala | 2003 | 中間コード[5] | 静的 | ○ | ○ | ✕ | ||||||||||||
Go | 2009 | コンパイラー | 静的 | ○ | ○ | ✕ | ||||||||||||
Rust | 2010 | コンパイラー | 静的 | ✕ | 必須 | ✕ | ||||||||||||
Kotlin | 2011 | 中間コード[5] | 静的 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |||
Swift | 2014 | コンパイラー | 静的 | ✕ | 必須 | ✕ | ||||||||||||
Crystal | 2014 | コンパイラー | 動的 | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | ○ | |||
Zig | 2015 | コンパイラー | 静的 | ○ | ○ | ✕ |
オブジェクト指向言語の特徴
編集プログラミング言語 | 登場時期 | 処理系 | オブジェクト指向 | 継承 | 抽象クラス | 抽象メソッド | 備考 |
---|---|---|---|---|---|---|---|
Lisp | 1960 | インタープリター[10] | CLOS | ||||
Algol | 1958 | コンパイラー | クラス | ||||
Smalltalk | 1972 | 中間コード | クラス | 多重 | ○ | ○ | |
C++ | 1983 | コンパイラー | クラス | 多重 | ○ | ○ | |
Objective-C | 1983 | ||||||
Lua | 1993 | インタプリター | プロトタイプ | 単一 | ✕ | ← | |
Java | 1995 | 中間コード[5] | クラス | 単一 | ○ | ○ | |
Ruby | 1995 | インタプリター | クラス | 単一 | ✕ | ← | |
JavaScript | 1997 | インタープリター | プロトタイプ[11] | 単一 | ✕ | ← | |
C# | 2000 | 中間コード | クラス | ||||
D | 2001 | コンパイラー | クラス | ||||
Scala | 2003 | 中間コード[5] | クラス | 単一 | |||
Kotlin | 2011 | 中間コード[5] | クラス | 単純 | ○ | ○ | |
Swift | 2014 | コンパイラー | クラス | 単一 | ○ | ○ | |
Crystal | 2014 | コンパイラー | クラス | 単一 | ○ | ○ |
脚註
編集- ^ ISO/IEC 1539-1: 2004, Information technology — Programming languages — Fortran —Part 1: Base language (IDT);IDT(identical;一致)国家規格は国際規格と一致する。
- ^ Common Lispの仕様段階でコンパイラーの実装が意識されている、ただし実行時にもインタープリターの機能が評価される可能性があるので、ランタイム環境にインタープリターがほぼまるまる含まれる。
- ^ コンパイル時に型推論により型を限定したコードを生成
- ^ コンパイラー実装も過去にはあった。
- ^ 5.0 5.1 5.2 5.3 5.4 5.5 JavaバイトコードをJava仮想マシンにより実行するので、ソースコードからバイトコードにコンパイルするコンパイル型とも、バイトコードをインタープリターが実行するインタープリター型とも言えます。
- ^ JSR 308の解説: Javaの型アノテーション
- ^ Java8のインタフェースのデフォルト実装などを駆使すれば可能ですが、言語機能といえるか疑問なので△
- ^ ECMAScript proposal: Type Annotations
- ^ HiPEというコンパイラー実装もある。
- ^ Common Lispの仕様段階でコンパイラーの実装が意識されている、ただし実行時にもインタープリターの機能が評価される可能性があるので、ランタイム環境にインタープリターがほぼまるまる含まれる。
- ^ ES5でクラス構文が追加されましたが、プロトタイプベースであることに変わりはありません。