プログラミング言語の特徴 編集

プログラミング言語の特徴は、多くのプログラミング言語のブックの「特徴」の節で説明されていますが、表形式にまとめてみました。

プログラミング言語の特徴
プログラミング言語 登場時期 処理系 型付け 型推論 型アノテーション 例外 関数オーバーロード 演算子オーバーロード ラムダ式 匿名関数 キーワード引数 可変長引数 ガベージコレクション オブジェクト指向 ミックスイン 国際規格 日本産業規格 備考
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

ISO/IEC 10279:1991

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 コンパイラー クラス 単一

脚註 編集

  1. ^ ISO/IEC 1539-1: 2004, Information technology — Programming languages — Fortran —Part 1: Base language (IDT);IDT(identical;一致)国家規格は国際規格と一致する。
  2. ^ Common Lispの仕様段階でコンパイラーの実装が意識されている、ただし実行時にもインタープリターの機能が評価される可能性があるので、ランタイム環境にインタープリターがほぼまるまる含まれる。
  3. ^ コンパイル時に型推論により型を限定したコードを生成
  4. ^ コンパイラー実装も過去にはあった。
  5. ^ 5.0 5.1 5.2 5.3 5.4 5.5 JavaバイトコードをJava仮想マシンにより実行するので、ソースコードからバイトコードにコンパイルするコンパイル型とも、バイトコードをインタープリターが実行するインタープリター型とも言えます。
  6. ^ JSR 308の解説: Javaの型アノテーション
  7. ^ Java8のインタフェースのデフォルト実装などを駆使すれば可能ですが、言語機能といえるか疑問なので△
  8. ^ ECMAScript proposal: Type Annotations
  9. ^ HiPEというコンパイラー実装もある。
  10. ^ Common Lispの仕様段階でコンパイラーの実装が意識されている、ただし実行時にもインタープリターの機能が評価される可能性があるので、ランタイム環境にインタープリターがほぼまるまる含まれる。
  11. ^ ES5でクラス構文が追加されましたが、プロトタイプベースであることに変わりはありません。