BT

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

作者: Abel Avram , 翻訳者 吉田 英人 投稿日 2013年4月2日 |

原文(投稿日: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の相関性を根拠として) 発生が予想される潜在的なバグのレベル" を扱うものなのだと主張し,別の記事 でその詳細を説明している。

 

この記事に星をつける

おすすめ度
スタイル

こんにちは

コメントするには InfoQアカウントの登録 または が必要です。InfoQ に登録するとさまざまなことができます。

アカウント登録をしてInfoQをお楽しみください。

あなたの意見をお聞かせください。

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする
コミュニティコメント

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

HTML: a,b,br,blockquote,i,li,pre,u,ul,p

このスレッドのメッセージについてEmailでリプライする

ディスカッション
サイト全般について
バグ
広告
記事
Marketing
InfoQ.com and all content copyright © 2006-2016 C4Media Inc. InfoQ.com and 株式会社豆蔵 InfoQ Japan hosted at Contegix, the best ISP we've ever worked with.
プライバシー
BT

We notice you’re using an ad blocker

We understand why you use ad blockers. However to keep InfoQ free we need your support. InfoQ will not provide your data to third parties without individual opt-in consent. We only work with advertisers relevant to our readers. Please consider whitelisting us.