Мера скорости разработки


10

Я видел много тестов, измеряющих скорость выполнения языков программирования, но я никогда не встречал тестов, измеряющих скорость разработки.

Я слышал, что при работе с динамическими языками скорость разработки увеличивается, но есть ли доказательства этому? Я не пытаюсь сказать, что динамические языки не эффективны, но я бы хотел увидеть результаты научного исследования, если такая вещь существует.

Еще лучше будет информация об объекте обслуживания. Какие языки легче отлаживать, чем другие?

РЕДАКТИРОВАТЬ: Меня больше всего интересуют различия между двумя языками, которые близки по синтаксису. Например, я предполагаю, что программирование на C обычно медленнее, чем на Java; но программирование на Java быстрее, чем программирование на C #?


См. Programmers.stackexchange.com/questions/10032 (но учтите, что я не утверждаю, что это дубликат).
Фрэнк Ширар

Это действительно интересно, спасибо! Некоторые ссылки на самом деле именно то, что я искал.
DistantEcho

Посмотрите эту ветку: stackoverflow.com/questions/1894453/…
ChristopheD

Ответы:


6

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


2

Для меня это своего рода аналог того, какой тип кисти позволяет рисовать быстрее.

Если вы считаете, что рисуете товар, то чем больше кисть, тем быстрее вы будете рисовать.

Если вы видите хороший код как художественную форму, то он меньше прилегает к размеру кисти и больше к тому, что именно вы делаете со своими кистями.

Извините, это не ответ на вопрос.


На самом деле, меня больше интересует разница между двумя большими кистями. Например, как мы узнаем, будет ли Python иметь лучшую скорость разработки, чем Lua, или наоборот?
DistantEcho

1
@Niphra, ты не знаешь. В таком сравнении слишком много невесомых, чтобы их можно было использовать в качестве правильной метрики.
Адам Кроссленд

хороший ответ, но только если вы игнорируете мастерство художника
Стивен А. Лоу

1

Я не уверен, что это актуально, но это интересно

В «Мифическом месяце человека» Фред Брукс упоминает исследования, сравнивающие языки ассемблера и более высокого уровня. Они обнаружили, что программисты производили одинаковое количество инструкций в год для обоих, но инструкции для языка высокого уровня были равны множеству инструкций на языке ассемблера. Таким образом, переключившись на язык высокого уровня, программисты добились увеличения производительности независимо от среднего кратного количества ассемблерных инструкций до языковых.

То же самое должно быть верно для C против Java / C #, я не знаю реальной разницы между C # и Java. Но каждый раз, когда вы повышаете уровень абстракции, вы будете увеличивать производительность. Однако я также думаю, что это уменьшит контроль над тем, что на самом деле делает машина. Вы должны верить, что язык делает то, что вы хотите. Например, в высокопроизводительном программном обеспечении сборка мусора недопустима, кроме случаев, когда у вас есть полный контроль над тем, когда он запускается и как долго он работает.


Было бы интересно, если бы были какие-либо исследования сегодня, которые бы делали это снова при сравнении языков высокого уровня, таких как node.js и python.
SomeGuyOnAComputer

1

Что такое производительность? Что такое продукт , даже? Никто не знает, математически говоря.

KLOC?

Цикломатическая сложность?

Функциональные точки?

Я считаю, что вам придется взглянуть на бизнес-уровень и провести процентильные сравнения с другими программистами, выполняющими аналогичную работу, а затем измерить возможности, предоставляемые каждому программисту. Это очень сложные и тонкие моменты, позволяющие статистически измерить и сохранить значение.


0

Представьте себе, как это будет проверяться: вам нужно, чтобы какой-то реальный проект разрабатывался независимо, как многократно, на одном и том же языке (чтобы устранить изменчивость опыта и знаний программиста), так и на разных языках (чтобы получить некоторые данные для сравнения языков). Сдается мне, что эксперимент быстро вырастает до неуправляемого размера.

Я хотел бы услышать о способах «сжать» эксперимент или о попытках фактически выполнить эксперимент, как указано.


Опыт - это действительно проблема, поэтому я бы работал с новичком или, что еще лучше, с кем-то, кто знает совершенно другой язык программирования. Что касается размера проекта, я думаю, что очень маленького проекта будет достаточно, чтобы получить результаты, даже если они не идеальны.
DistantEcho

Хотя иногда, как говорится в истории, «победа» языка происходит только после определенного размера / сложности. Для задач меньше / проще, удивительность этого языка не очевидна. Так и сказано.
Фрэнк Шиарар

Я ожидал бы, что определенная «победа» только превышает определенный уровень сложности и опыта программиста. Измерение только с новичками по большей части упускает из виду. На самом деле использование языка требует определенного языкового опыта.
Кастерма
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.