(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
Stimulsoft Reports.Ultimate Single License Includes one year subscription
VMware Workstation 14 Pro for Linux and Windows, ESD
SAP CRYSTAL Reports 2013 WIN INTL NUL
Stimulsoft Reports.Ultimate Single License Includes one year subscription, source code
EMS Data Comparer for Oracle (Business) + 1 Year Maintenance
 
Другие предложения...
 
Курсы обучения   WWW.ITSHOP.RU
 
Другие предложения...
 
Магазин сертификационных экзаменов   WWW.ITSHOP.RU
 
Другие предложения...
 
3D Принтеры | 3D Печать   WWW.ITSHOP.RU
 
Другие предложения...
 
Новости по теме
 
Рассылки Subscribe.ru
Информационные технологии: CASE, RAD, ERP, OLAP
Безопасность компьютерных сетей и защита информации
Новости ITShop.ru - ПО, книги, документация, курсы обучения
OS Linux для начинающих. Новости + статьи + обзоры + ссылки
Один день системного администратора
Delphi - проблемы и решения
Новые программы для Windows
 
Статьи по теме
 
Новинки каталога Download
 
Исходники
 
Документация
 
 



    
rambler's top100 Rambler's Top100