Ссылки для изучающих C
Вчера была нетленка, поэтому сегодня расслаблюсь и просто дам несколько ссылок на бесплатные, но очень полезные ресурсы по языку C.
- C Elements of Style — сокращенный вариант старой доброй книжки лохматого года; слегка устарела, но все равно содержит массу полезного;
- Learning GNU C — туториал про одноименный диалект C;
- An Introduction to GCC — руководство по gcc и g++;
- C FAQ — огромный FAQ по языку;
- Writing Bug-free C Code — оригинальная методология программирования на C с элементами ООП, позволяющая вроде бы упростить обнаружение ошибок; почитать интересно, но применять стремно;
- The GNU C Library — мануал по стандартной библиотеке C в исполнении GNU;
- Top 10 Ways to be Screwed by C — топ 10 сишных граблей; будет особенно полезно начинающим;
- (UPD) Programming in C — курс лекций по С с упором на UNIX-среду;
- (UPD) C Traps and Pitfalls — статья про скользкие места C;
- (UPD) Notes on Writing Portable Programs in C — статья про написание переносимых программ на C; категорически рекомендую;
- (UPD) Indian Hill: Recommended C Style and Coding Standards — рекомендации по стилю C-программ от ребят из одной лаборатории AT&T.
Интересные ссылки из комментов переносятся в основной пост, так что пишите.


Вот именно поэтому я и перешел с написания драйверов на С и клиентов к ним на С++ на C# и WPF.
Это просто неправильно когда язык содержит целый сарай граблей, о котором нужно помнить при написании програм. Голова должна думать о задаче, а не о граблях.
PS Шурик, почему-то ответы на комменты не приходят на почту.
PPS Галочку «Уведомлять о новых комментариях по e-mail» ИМХО по дефолту нужно ставить.
Да лаадно, в C++ граблей этих на порядок больше. Как язык C очень простой, его грабли даже и не грабли вовсе, а просто моменты, в которых люди статистически больше делают ошибок. Лично я не думаю о граблях, когда пишу на C. Пишу себе и все =)
Настоящие грабли возникают тогда, когда программист не понимает, как работает то, что он пишет. Здесь уж C, как высокоуровневый ассемблер, вне конкуренции по прозрачности. Что написал, то и выполняется. Выходит, что чем более язык высокоуровневый, тем меньше понимание сути.
Проблемы появляются в библиотечных интерфейсах. Например, в POSIX легко можно выстрелить себе в ногу, если нет четкого понимания, как работают сигналы или планирование потоков. В винде API имеет еще более сложную семантику (поэтому я и не пишу под винду). Вот в API-то грабли и сидят.
Пожалуй, стоит написать об этом отдельный философский пост…
—
Комменты не приходят на почту после подписки?
Насчет автоматического уведомления по умолчанию не согласен, это называется навязчивый сервис. Я бы вообще считал бы это спамом, если бы мне каждый блог, где я оставлял комментарии, присылал мне уведомления.
Оказывается gmail комменты в спам сбрасывает.
Негодяй такой. постараюсь его научить.
Достаточно один раз сказать «Не спам», он сообразит.
Шурик, к тому же переход с C на C# — это как переход с газонокосилки на комбайн. Совершенно разные задачи.
«Top 10 Ways to be Screwed by C» — совсем не впечатлило =) Большинство примеров — код, так сказать, «не лучшего качества». И винить язык в том, что в таких ситуациях результат получается «неожиданным» для программиста, имхо, не правильно…
Как сказано выше, «что написал, то и выполняется» )
Всецело согласен.
[...] Такая вот подборка в дополнение к опубликованному ранее: [...]