人気のあるプログラミング言語とランダムエラーの関係の研究

Diomidis Spinellis率いるギリシャの科学者グループは、プログラムテキストを入力する際のエラーやタイプミスに対する10の一般的なプログラミング言語の感度に関する興味深い研究を実施しました。 このようなエラーによる損害は数百万に達することもあり、言語ができるだけ早くそれらを検出する能力は、信頼できるプログラムの開発にとって非常に重要です。 テストのために、 Rosetta Codeプロジェクトのいくつかの例を使用しました。これは、さまざまな言語で多くのタスクとアルゴリズムの実装を収集したWikiです。 言語の人気に関する統計、およびいくつかの実用的な考慮事項(無料のコンパイラの入手可能性とRosetta Codeの例)に基づいて、次の言語とコンパイラが選択されました。
言語 コンパイラ/環境
C gcc 4.4.5
C ++ g ++ 4.4.5
C# モノ2.6.7、CLI v2.0
ハスケル ghc 6.12.1
Java OpenJDK 1.6.0_18
Javascript スパイダーモンキー1.8.0
Php PHP 5.3.3-7
Perl perl 5.10.1
Python python 2.6.6
ルビー ルビー1.8.7
Perlスクリプトは、一連のプログラムの自然なエラーを模倣するテストタスクのソースコードにエラーを導入しました。誤って一部の文字、キーワード、および識別子を他のものに置き換え、数値リテラルを1つずつ増減します。 合計136のテストタスク実装がテストされ、それに基づいてエラーを含む280,000のプログラムが生成されました。 それらの32%は、エラーや警告なしでコンパイルまたは構文チェックに合格しました。 23%が正常に完了し、6.5%が正しい結果を示し、16%が正しくありませんでした。



したがって、プログラムコードの無意味な間違いやタイプミスは、テストとコード検査による適切なカバレッジでのみ検出できます。コンパイラとランタイムはそれをキャッチできません。 当然、異なる言語は異なる方法で現れました。



静的および/または強力な型付けを備えた言語は非常に期待されていますが、最高であることが証明されました-C#、Java、C、C ++は非常によく似た結果を示しました-コンパイラは約10%に気づかず、C ++が最高の結果(8%)でした Haskellのパフォーマンスは少し悪く、約15%です。 動的言語にはさらに多くのバリエーションがあります。 PHPは絶対的なアンチリーダーになりました。36%のケースで、インタープリターは異議なく不正なプログラムを起動しました。 Perlは22%の顕著なマージンでそれに続き、Ruby(16%)とPython(15%)が最も厳しく動作します。



出所




All Articles