LoginSignup
64
50

More than 5 years have passed since last update.

規格書で比較するプログラミング言語の複雑さ

Last updated at Posted at 2018-04-22

言語仕様が一番複雑なプログラミング言語は何だろうか?主観的な意見として、○○の機能があるとか、ないとか、そういう話になるだろう。しかし、客観的に判断するとしたら、どうするべきだろうか?

一つはBNFを用いた比較だろう。しかし、BNFは文法の複雑さの指標になっても、それらが意味するところの解釈の複雑さについては指標にならない。そこで、解釈を含めたその言語仕様を全てカバーしたもの、つまり、規格書を比較すればいいのではないかと考えた。

プログラミング言語によっては国際的な規格書が存在しないものもある。特にオープンソースで開発されている言語では、コミュニティーの合意によって作成された複数の文献によって仕様が形作られているというのもある。なかには、実装がそのまま仕様であり、明文化されていないものもあるだろう。また、仕様自体がHTMLである場合、それがどれぐらいの量であるかを把握するには難しい(各ページの文字数カウント等が必要であろう)。そこで、今回はPDF化・書籍化されたものに限定し、ページ数を数えることにした。規格書についてはWikipediaの下記ページを参考にした。

Comparison of programming languages - Wikipedia

以下、主な言語についてまとめた表である。内容やページ構成の違いによって大きくページ数が異なることがあるため、絶対的な指標とはならないことに注意して欲しい1

言語 規格書 ページ数
Fortran ISO/IEC 1539-1:2010 + ISO/IEC 1539-2:2000 603 + 20
COBOL ISO/IEC 1989:2014 927
C11 ISO/IEC 9899:2011 683
C++17 ISO/IEC 14882:2017 1605
C#2.0 ISO/IEC 23270:2006 531
Ruby1.8 ISO/IEC 30170:2012 313
ECMAScript8 Standard ECMA-262 885
C#5.0 Standard ECMA-334 516
Java10 Java SE Specifications 772
SQL:2016 ISO/IEC 9075-1:2016 1,2,3,4,9,10,11,13,14 78+1707+391+188+471+376+327+151+444 = 4133

※ C#、Rubyについては国際規格の方が後付けであるため、最新のバージョンよりも低い。そのため、その後のバージョンでで追加された機能は記載されていない。
※ 規格化に当たり、全ての言語仕様が記載されていない場合がある。Rubyは1.9以降を考慮したサブセットでの記述になっているし、ECMAScriptにはブラウザのJavaScriptで標準搭載されているDOM周りのAPIは含まれていない。

C++はRubyの5倍以上である。他言語と比較してもほとんどの言語に対してダブルスコアをたたき出している。よくC++は言語仕様が複雑という話があるが、客観的な指標のひとつとしてこの表をみれば納得できるか面もあるかと思う。


  1. 詳しくは@take_cheezeさんのコメントを参照。 

64
50
8

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
64
50