Как изменились ваши представления о практике программирования на C за последние десять лет? - PullRequest
10 голосов
/ 16 июля 2009

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

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

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

Итак, давайте поделимся.

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

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

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

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

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

Ответы [ 4 ]

7 голосов
/ 16 июля 2009

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

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

5 голосов
/ 16 июля 2009

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

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

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

5 голосов
/ 16 июля 2009

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

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

Хотелось бы, чтобы в моей компании было больше программистов на С, чтобы учить младших, что есть жизнь за пределами объектной ориентации.

2 голосов
/ 16 июля 2009

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...