Подтвердить что ты не робот

Практика разработки программного обеспечения в C

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

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

4b9b3361

Ответ 1

Книга Дейва Хэнсона C Интерфейсы и реализации - прекрасный пример того, как делать крупномасштабное программирование на C: делением вашей системы на интерфейсов и реализаций. С одной стороны, книга дает хорошие примеры, а также полезные строительные блоки. Для людей, которые были вокруг, это очень напоминание о объектно-ориентированном дизайне, как это практикует Барбара Лисков (которая недавно выиграла премию Тьюринга за нее). Подумайте об этом как о программировании OO, но без наследования.

Отличная книга для всех, кто должен писать C.

Ответ 2

G'day,

В то время как сильно сосредоточена на С++, замечательная книга Джона Лакоса " крупномасштабная разработка программного обеспечения на С++" содержит много информации, которая очень актуальна к разработке программного обеспечения, написанного на C.

Изменить: Oooh. Увидев предложение @Jackson за отличную "Практику программирования", я также очень рекомендую отличную книгу Эрика Раймонда " Искусство программирования UNIX.". Спасибо за напоминание @Jackson.

НТН

веселит,

Ответ 3

Если вам нужна более подробная книга C, вы можете посмотреть Практику программирования Кернигана и Пайка.

NB: Я всегда думал о ООП как о способе взглянуть на дизайн; тот факт, что некоторые языки предоставляют явную поддержку, это хорошо, но не важно.

Ответ 6

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

Я знаю, что это выражение, которое приводит к откликам от поклонников, но для всех остальных, включая собственных авторов, это очевидный факт. Например, здесь выдержка из истории DoD поиск языка для поддержки пути назад в конце 70 (Рабочая группа высокого порядка для языков):

Другие языки рассматривались для официальной оценки, но не были включены, поскольку предварительная экспертиза привела к тому, что они считали, что они не отвечают требованиям, поэтому не были жизнеспособными кандидатами для целей Министерства обороны. Одним из таких языков было C. В то время DARPA работала с Лабораториями Western Electric/Bell в UNIX, поддерживая контракт с подрядчиками DARPA и другими государственными учреждениями, использующими UNIX. Политика оценки заключалась в том, чтобы владельцы предоставляли оценки своих языков в дополнение к контрактным оценкам, поэтому HOLWG воспользовалась этой связью между DARPA и Bell Labs, чтобы запросить их сотрудничество. Когда Bell Labs были приглашены для оценки C в отношении требований DoD, они сказали, что не было возможности для C соответствовать требованиям читаемости, безопасности и т.д., для которых мы стремились, и что он не должен быть включен список оцененных языков. Мы узнали правду в их наблюдении и выполнили их просьбу.

Ответ 7

Те же принципы для ООП применяются к C, за исключением того, что у вас нет классов. Однако идея, применимая к C, о которой ООП представляет собой реализацию, представляет собой концепцию абстрактных структур данных - ADT.

Книга "Структуры данных и алгоритмы" является классикой и ее следует читать.

http://www.amazon.ca/Data-Structures-Algorithms-Alfred-Aho/dp/0201000237

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

Ответ 11

Код завершен 1-й Ed Стив МакКонелл более ориентирован на C, что может стоить взгляда Что ж. Во всяком случае, его книги отлично читают для любого профессионального программиста.