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

Я ищу исследовательские статьи, сценарии событий и т.д., которые объясняют или показывают, почему меньше кода легче поддерживать, отлаживать и т.д. Возможно, как выбор языка программирования может повлиять на него и т.д. Я понятия не имею, как найти эту информацию. Googling что-то вроде "программирование исследований меньше кода" дает массу результатов, и первые несколько страниц, похоже, не имеют результатов/ссылок, которые я ищу.

Вы, ребята, знаете какие-либо документы, статьи или веб-сайты, которые могут иметь необходимую мне информацию? Все, что связано с исследованиями и экономией затрат на программирование (за исключением использования промежуточного ПО/с кем-то другим), было бы хорошо.

Ответ 1

Что касается "меньше кода", вам может быть лучше найти Принцип KISS.

И для "веб-сайта", который может иметь информацию, которую вы ищете, я должен порекомендовать просеивать работы Martin Fowler и обязательно просмотрите его список статей.

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

Ответ 2

Для чего это стоит, я написал книгу об этом, и обсудил ее на SO.

Основная идея - применить теорию информации к программному обеспечению. Примерами современных идей, которые соответствуют этому, являются DSL, так называемый "принцип KISS" и DRY, но он выходит далеко за рамки этого. В двух словах, чем меньше изменений в редактировании, необходимых для реализации средних функциональных требований, тем меньше шансов ввести ошибки, и можно утверждать, что избыточность (как код) источника, приводящая к возникновению ошибок, является первичным, если не только источник ошибок.

ADDED: Алгоритмическая (или Колмогоров) информационная теория выражает информационное содержание чего-то как длину самой короткой программы, которая может ее вычислить. У меня есть две проблемы.

  • Проделанная теоретическая работа с ним происходит абстрактное касательные, которые мало практичны приложение.

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

В принципе, идея состоит в том, что язык минимален по отношению к проблемной области, тогда программы на этом языке соответствуют 1-для-1 с заявлениями о проблемах, поэтому программа никогда не может сбой (т.е. не требует никаких требований). С другой стороны, если программы содержат более чем минимальный объем информации (имеют избыточность), тогда могут быть программы, которые не соответствуют никакому возможному требованию (т.е. Они просто неправильны независимо от требования). Чем они избыточны, тем больше пространство недействительных программ сравнивается с допустимыми. Любые человеческие ошибки при входе в эти программы, таким образом, гораздо более вероятны для создания недопустимой программы (которая приводит к сбоям или получает недействительные ответы).

Поэтому важно минимизировать избыточность языка w.r.t. проблемной области. То, что делают DSL, в идеале. На мой взгляд, хорошие программисты инстинктивно упорядочивают свой код, чтобы позволить новые или пересмотренные функциональные требования быть реализованы с наименьшим количеством изменений. (Что совсем не так, как кратчайшая длина, но имеет тенденцию коррелировать с длиной.)

ADDED: Это пример того, о чем я говорю.

Ответ 3

В "Руководство по надежности программного обеспечения" есть немного. Я думаю, что я вижу функцию строк кода и надежности.

Ответ 4

Я бы отменил процесс и просмотрел данные "bug/LOC". Из разных источников, которые я прочитал (я не могу вспомнить, и большинство неприменимых), ошибка /LOC слабо экспоненциальна, поскольку LOC растет.

Ответ 5

Я всегда находил эту статью довольно интересной. Там могут быть более свежие версии.

Ответ 6

В академической работе наблюдаемые частоты ошибок часто выражаются или нормализуются на "тысячу строк кода" или KLOC. Поиск Google Scholar для комбинаций программного обеспечения, ошибок, ошибок и kloc дает множество возможных источников.