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

Как изменились ваши представления о практике программирования C за последние десять лет?

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

В отличие от этого, мир программирования C кажется намного более спокойным. Последний серьезный пересмотр языка был в 1999 году, и следующий, вероятно, будет гораздо менее впечатляющим. Второе издание K & R по-прежнему считается хорошим вводным текстом для многих, несмотря на то, что ему исполнилось двадцать лет.

Если мы, как программисты C, разработали и улучшили наши навыки и методы (и, как я думаю, мы, вероятно, имеем), мы, похоже, не очень хорошо общаемся с ними. Мы не продаем книги о них, публикуем о них в блогах или организуем семинары вокруг них. Не так, как кажется, остальная часть мира разработки программного обеспечения.

Итак, пусть делится.

Каковы ваши предпочтительные "современные" методы программирования C?

Используете ли вы `template 'библиотеки длинных макросов препроцессора, чтобы выжать последний дюйм производительности из аппаратного обеспечения тем же способом С++ программисты могут? Используете ли вы библиотеку распределения, такую ​​как halloc, чтобы минимизировать время, затрачиваемое на управление памятью, или вы используете полномасштабный автоматический сборщик мусора?

Конечно, если вы использовали эти вещи с 1987 года, не стесняйтесь звонить в него; суть этого вопроса состоит в том, чтобы поделиться практикой, которая не является обычной, но может принести пользу другим.

Каковы ваши предпочтительные "современные" разработки программного обеспечения C?

Разумеется, соображения дизайна важны как минимум. Вы адаптируете методы проектирования из объектно-ориентированного мира? Вы используете UML? Или вы отказываетесь от использования спецификаций в нейтральном для языка стиле (блок-схемы, Z, самое слабое предварительное исчисление, что угодно)?

4b9b3361

Ответ 1

Я пытаюсь использовать готовые библиотеки для базовой функциональности, когда это возможно. Я нахожу glib (часть GTK + GUI framework) абсолютно блестящий, когда дело доходит до общих структур данных и т.д. Больше не писать собственную хеш-таблицу, связанный список, динамический массив или что-то еще.

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

Ответ 2

Не действительно практика программирования на С, потому что я один из тех новомодных объектно-ориентированных программистов, работающих на С++, но это:

Объектно-ориентированное программирование - это не серебряная пуля

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

Ответ 3

Честно говоря, я бы ответил, что я, наконец, сдался на С++ после долгого боя. Я действительно наслаждался его преимуществами.

Мне нравится позволять компилятору заботиться о сантехнике OO, быть в состоянии использовать исключения и RAII вместо засорения кодов возврата и выпусков ресурсов по всему миру, а не переопределять связанный список или автоматически расширяющийся вектор или более умную строку библиотеки в разы, перегрузка оператора вместо vector_add() везде и т.д. Конечно, в C есть библиотеки для большей части этого, но похоже, что такие вещи довольно фрагментированы между конкурирующими решениями. Приятно иметь такие удобства, стандартизированные на С++.

Самое приятное, что я все еще свободен, чтобы спуститься и сделать все, что мог бы сделать на C, если бы я чувствовал себя так, как лучше всего подходит программе. Там нет прямой прятки, как на Java.

Ответ 4

1999: используйте C, это быстрый, низкоуровневый, эффективный

2009: используйте Python, он достаточно быстр, продуктивен, многоплатформенен, популярен и увлекателен.