BT

最新技術を追い求めるデベロッパのための情報コミュニティ

寄稿

Topics

地域を選ぶ

InfoQ ホームページ ニュース 調査: もっとも表現力に富んだ汎用プログラム言語は Clojure,CoffeeScript,Haskell

調査: もっとも表現力に富んだ汎用プログラム言語は Clojure,CoffeeScript,Haskell

ブックマーク

原文(投稿日:2013/03/28)へのリンク

 

ある調査によると,表現力のもっとも高い汎用プログラム言語は Clojure と CoffeeScript,そして Haskell なのだという。その調査では LoC /コミットを表現力の測定単位として採用している。

RedMonk の常勤 PhD である Donnie Berkholz 氏は、さまざまなプログラム言語の 表現能力を定量化する調査をOhlol の提供するデータに基づいて実施している。Ohlol は、およそ 100 の言語で20年に渡って記述されてきた、500,000以上のオープンソースプロジェクトの記録を収めたリポジトリだ。

Berkholz 氏が表現力の計測単位として採用したのは LoC/コミットという値だ。その理由として氏は, "コミットは一般的に、ひとつのコンセプトを追加するために使用されるものだから" と付け加えている。調査の結果には保守性や生産性、あるいは作成されたコードの可読性や製作に要した時間の長さなどは反映されていない。

次図は50以上の言語の表現能力について、昨年始めに公表された RedMonks の言語ランク に基づいた色分けで示したものだ: 赤 - もっとも採用数の多い言語、青 - 2番目に多いもの、黒 - 3番目 (クリックで拡大)。

調査では多数のプロジェクト/言語を対象としているため、各言語の LoC/コミット値は分散している。したがって各言語の値としては、それらの平均値を採用する。言語はそれぞれの中央値でランク付けされている – ボックス内の黒い線が対応するプロジェクトのLoC/コミットの50%,ボックスの上下の線が25%と75%,ヒゲ線が10%と90%をそれぞれ示す。

Berkholz氏の結論は次のようなものだ。

3番目のグループに属する言語は全般的に表現力が非常に高い。

関数型言語には表現力の高い傾向がある。

ドメイン固有言語は全般的に表現力が非常に高い。

コンパイルと表現力の低さに相関関係はない。

CoffeeScript (#6) は JavaScript (#51) よりもはるかに高い表現力を示している。事実上,すべての言語の中での最高値である。

Lisp系言語では Clojure (#7) の値がもっとも高い。

Go (#24) は話題を集めている言語だが,表現性では目立ってはいない。... にも関わらず,第1グループのすべての言語に勝っているのは,それらの言語の経験しか持たない開発者がGoを使って,改善された部分を感じているのかも知れない。

"3番目のグループに属する言語の表現力が非常に高い" という結論には,それならばなぜもっと採用数が増えないのか,という点が疑問に思われる。言語の持つ簡潔さが,平均的なプログラマの理解や利用を難しいものにしている,ということなのだろうか?それとも他の理由だろうか?

Berkholz氏はまた,ボックスの高さから求めた表現力の一貫性をベースとしたランク付けも行っている。その結果が次のグラフだ (クリックで拡大)。

氏が出した結論は,

第1グループの言語はここでも強い位置にいる。

第1グループの言語は表現力の高低に関わらず,高い一貫性を持っている傾向がある。

このことは,第1グループに属する言語の主要な特性が,生産性よりも予見可能性であることを示唆している。

第3グループの言語は,ここでは見劣りしている。

今回はJavaが,"エンタープライズ"言語 (C,C++,Java) で最高のパフォーマンスを示している。

一貫性においても CoffeeScript が変わらず No.1 であるが,4番目の Clojure と比較した IQR (interquartile range,,四分位範囲) の差異はわずか23LOC/コミットに過ぎない。

表現力の一貫性の結果と RedMonk言語人気ランクの2つから Berkholz氏は,Clojure と CoffeeScript,そして Haskell がもっとも表現力の高い汎用言語である,と結論付けている。氏の調査の一部は,David R. Maclver氏が Hammer Principle を通じて2,576人のプログラマを対象に行った 別の調査 によっても裏付けられている。Maclver氏によると,もっとも表現力のある言語は Haskell,Clojure と Scala である。逆に表現力の乏しい言語が C,PHP,TCL であり,こちらの調査には CoffeeScript が含まれない。

Berkholz氏による 元の記事Hacker NewsTwitter への投稿には多数のコメントが寄せられた。LoC/コミットは言語の実際の表現力を表していない,可読性や保守性も考慮すべきだ,DSLは含めるべきではない,などといった意見が多い。

表現力の定量化にLoC/コミットを用いた理由について Berkholz氏は,この調査は言語の可読性や保守性に関するものではない,"レポジトリ上のコード状態に関する何らかの指標,使用されている開発プラクティス,(バグとLOCの相関性を根拠として) 発生が予想される潜在的なバグのレベル" を扱うものなのだと主張し,別の記事 でその詳細を説明している。

 

この記事に星をつける

おすすめ度
スタイル

BT