Сторонники функциональных языков программирования утверждают, что функциональное программирование облегчает анализ кода. Сторонники статически типизированных языков говорят, что их компиляторы отлавливают достаточно ошибок, чтобы компенсировать дополнительную сложность систем типов. Но все, что я читаю на эти темы, основано на рациональных аргументах, а не на эмпирических данных.
Проводятся ли какие-либо эмпирические исследования влияния различных категорий языков программирования на уровень дефектов или другие показатели качества?
(Ответы на этот вопрос, похоже, указывают на то, что таких исследований нет, по крайней мере, для динамических и статических дебатов)
Ответы:
Есть некоторые исследования в академии на эту тему. Вот некоторые примеры, которые я знаю, хотя вы должны относиться к выводам с осторожностью:
Эксперимент о статических и динамических системах типов: сомнения в положительном влиянии систем статических типов на время разработки, Стефан Ханенберг. В Proc OOPSLA, 2010. ACM Link
Эмпирическое исследование статической типизации в Ruby, M. Daly, V. Sazawal, J. Foster. В Proc PLATEAU, 2010. PDF
Контролируемый эксперимент по оценке преимуществ процедуры проверки типа аргумента, Lutz Prechelt и Walter F. Tichy. IEEE TSE, 1998. IEEE Ссылка
Я уверен, что есть другие документы. Вообще говоря, однако, эта область чрезвычайно противоречива по очевидным причинам - действительно трудно дать объективную оценку !!
источник
Одно известное исследование - Лутц Пречелт. Эмпирическое сравнение семи языков программирования. IEEE Computer [33 (10): 23-29], октябрь 2000 г.
Prechelt обсуждает надежность программы, а также исследует время выполнения и потребление памяти.
источник
Хотя это исследование не связано с качеством кода как таковым, в этом исследовании рассматривается, как новички учатся на разных языках. В частности, они сравнивают, как живут новички в изучении Perl и Quorum, языка обучения, который хотят сравнить авторы. Что действительно здорово в этой статье, так это то, что они на самом деле придумали язык управления, где синтаксис генерируется случайным образом, как своего рода язык «плацебо». Этот подход может быть действительно интересным, если его применять к языкам и качеству кода, и он помогает контролировать некоторые из этих сложных факторов при сравнении языков.
источник