プログラミング言語の比較
プログラミング言語の比較(プログラミングげんごのひかく)の記事では、コンピュータ・プログラミング言語の比較について説明する。
(コンピュータ・)プログラミング言語は、コンピュータのプログラム(コンピュータ・プログラム)を記述する(プログラミングする)ための形式言語である。形式言語であるので、一般に、自然言語とは異なり形式的で曖昧さが避けられ人工的に定義された構文(統語・syntax。統語論の記事を参照)を持ち、自然言語とは異なり計算理論のための意味論(semantics)を持つ。
現在何千ものプログラミング言語があり、多くの職業プログラマや多くの非職業プログラマが生涯の間に何十もの異なった言語を使用している。一方で、多くの職業プログラマや多くの非職業プログラマが、好みを理由として、あるいは、異なった言語を学習できないためか、一種類ないし僅かな類似した言語のみを使用している。毎年新しいものが作られているものの、ほとんどの言語は一般的にはなっていない。
全体の比較
編集以下の表は主要なプログラミング言語の全体的および技術的な情報を比較している。詳細は個々の言語のページを参照のこと。
構文の表現力
編集プログラミング言語に関する文献には、それらの相対的な表現力に関する非公的な主張は多くみられるものの、各言語の構文を互いに比較して意味ある結果を出すことができる公認された枠組みは無い。[5]
言語 | 文の数の比[6] | 行数の比[7] |
---|---|---|
C | 1 | 1 |
C++ | 2.5 | 1 |
Fortran | 2.5 | 0.8 |
Java | 2.5 | 1.5 |
Perl | 6 | 6 |
Python | 6 | 6.5 |
Smalltalk | 6 | 6.25 |
MS Visual Basic | 4.5 | ? |
次の表は、二つ異なる文献からの表現力の二つの尺度を示す。
この表は同等のプログラムを書いた時のソースコードの「行数」あるいは「文の数」を C語のソース÷他言語のソース で示している。例えば Perlと Cを比べると Cの方が 6倍多くの行数を必要としている。
ただしこれは公的な値ではなく、また生成されたプログラムの実行速度やメモリ要求量を示しているものではない。多くの場合、実行速度やメモリ要求量で見た性能は全く異なっている。
これら表現力あるいは他の性能について、さらなる計測値は、GZip byte の「コンピュータ言語のベンチマークゲーム(the Computer Language Benchmarks Game)」にある。
脚注
編集- ^ https://msdn.microsoft.com/ja-jp/magazine/mt614271.aspx?f=255&MSPPError=-2147217396
- ^ “Native AOT deployment overview - .NET”. 2024年6月23日閲覧。
- ^ “Frequently Asked Questions (FAQ) - The Go Programming Language”. golang.org. 2019年6月21日閲覧。
- ^ Java 5.0 では、いくつかの機能(Foreach文、オートボクシング、可変長引数、アノテーション、列挙型)が C# のようなライバル言語で有効性が証明されてから追加された。[1][2][3]
- ^ On the Expressive Power of Programming Languages、Matthias Felleisen、ESOP '90 3rd European Symposium on Programmingより。
- ^ コードコンプリートのデータから。 文の数の比は 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.
- ^ 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.