(495) 925-0049, ITShop интернет-магазин 229-0436, Учебный Центр 925-0049
  Главная страница Карта сайта Контакты
Поиск
Вход
Регистрация
Рассылки сайта
 
 
 
 
 

Исследование отношения популярных языков программирования к случайным ошибкам

Источник: habrahabr
ilya42

Группа греческих учёных под руководством Диомидиса Спинеллиса провела интересное исследование чувствительности десяти популярных языков программирования к ошибкам и опечаткам при наборе текста программы. Ущерб от таких ошибок иногда может составлять многие миллионы, и способность языка обнаруживать их как можно раньше очень важна для разработки надёжных программ. Для тестирования использовались несколько примеров из проекта Rosetta Code - вики, на которой собраны реализации множества задач и алгоритмов на разных языках. На основании статистических данных о популярности языков, а так же некоторых практических соображений (наличие свободного компилятора и примеров на Rosetta Code) были выбраны следующие языки и компиляторы:

Язык  компилятор/среда 
C gcc 4.4.5
C++ g++ 4.4.5
C# mono 2.6.7, CLI v2.0
Haskell ghc 6.12.1
Java OpenJDK 1.6.0_18
JavaScript spidermonkey 1.8.0
PHP PHP 5.3.3-7
Perl perl 5.10.1
Python python 2.6.6
Ruby ruby 1.8.7
Скрипт на Perl вносил в исходный код тестовых задач ошибки, имитирующие естественные ошибки при наборе программ - случайную замену одних символов, ключевых слов и идентификаторов на другие, увеличение или уменьшение числовых литералов на единицу. Всего было протестировано 136 реализаций тестовых задач, на основе которых было сгенерировано 280 000 программ, содержащих ошибки. 32% из них прошли компиляцию или проверку синтаксиса без ошибок и предупреждений. 23% успешно завершились, при этом 6,5% выдали корректный результат, а 16% - некорректный. 

Таким образом, можно сказать, что каждая шестая бессмысленная ошибка или опечатка в коде программы может быть обнаружена только при должном покрытии тестами и инспекции кода - компилятор и среда исполнения не смогут её отловить. Естественно, разные языки проявили себя по-разному. 

Языки со статической и/или строгой типизацией, что вполне ожидаемо, проявили себя наилучшим образом - C#, Java, С и C++ показали очень похожие результаты - около 10% не замеченных компилятором, лучший результат (8%) у C++. Немного хуже проявил себя Haskell - около 15%. У динамических языков разброс гораздо больше. Абсолютным антилидером стал PHP - в 36% случаев интерпретатор без возражений запустил некорректную программу. За ним с заметным отрывом идёт Perl с 22%, а строже всех ведут себя Ruby (16%) и Python (15%).

Ссылки по теме


 Распечатать »
 Правила публикации »
  Написать редактору 
 Рекомендовать » Дата публикации: 11.12.2012 
 

Магазин программного обеспечения   WWW.ITSHOP.RU
Enterprise Connectors (1 Year term)
IBM DOMINO COLLABORATION EXPRESS AUTHORIZED USER ANNUAL SW SUBSCRIPTION & SUPPORT RENEWAL
FastReport.Mono Single License
IBM RATIONAL Clearcase Floating User License + Sw Subscription & Support 12 Months
Oracle Database Personal Edition Named User Plus License
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Компьютерные книги. Рецензии и отзывы
Один день системного администратора
Краткие описания программ и ссылки на них
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100