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