Объектно-ориентированные программисты, похоже, имеют все самое интересное. Мало того, что каждый раз они рассматриваются в основных версиях рамок каждые два года, а новые и улучшенные языки каждые пять лет, они также имеют дело с проектной практикой, адаптированной к их стилю программирования. От разработки, основанной на тестах, до шаблонов проектирования, объектно-ориентированные программисты должны многого не отставать.
В отличие от этого, мир программирования C кажется намного более спокойным. Последний серьезный пересмотр языка был в 1999 году, и следующий, вероятно, будет гораздо менее впечатляющим. Второе издание K & R по-прежнему считается хорошим вводным текстом для многих, несмотря на то, что ему исполнилось двадцать лет.
Если мы, как программисты C, разработали и улучшили наши навыки и методы (и, как я думаю, мы, вероятно, имеем), мы, похоже, не очень хорошо общаемся с ними. Мы не продаем книги о них, публикуем о них в блогах или организуем семинары вокруг них. Не так, как кажется, остальная часть мира разработки программного обеспечения.
Итак, пусть делится.
Каковы ваши предпочтительные "современные" методы программирования C?
Используете ли вы `template 'библиотеки длинных макросов препроцессора, чтобы выжать последний дюйм производительности из аппаратного обеспечения тем же способом С++ программисты могут? Используете ли вы библиотеку распределения, такую как halloc, чтобы минимизировать время, затрачиваемое на управление памятью, или вы используете полномасштабный автоматический сборщик мусора?
Конечно, если вы использовали эти вещи с 1987 года, не стесняйтесь звонить в него; суть этого вопроса состоит в том, чтобы поделиться практикой, которая не является обычной, но может принести пользу другим.
Каковы ваши предпочтительные "современные" разработки программного обеспечения C?
Разумеется, соображения дизайна важны как минимум. Вы адаптируете методы проектирования из объектно-ориентированного мира? Вы используете UML? Или вы отказываетесь от использования спецификаций в нейтральном для языка стиле (блок-схемы, Z, самое слабое предварительное исчисление, что угодно)?