LINUX.ORG.RU

Литература, пример проекта обработки ошибок на С

 


0

3

Я делаю для себя небольшой проект на С, но мой код превратился в месиво проверок на ошибки и это очень усложняет его чтение. подскажите пожалуйста какую литературу можно почитать или пример какого проекта можно посмотреть, чтобы поучиться делать это правильно.

Ответ на: комментарий от tailgunner

Ты всегда можешь сравнить частоту ошибок в Webkit с любым современным браузером на Си. А, нет... не можешь.

Например, с midori? И сколько в мидори ошибок?

anonymous
()
Ответ на: комментарий от anonymous

в Webkit
Например, с midori

«A lightweight browser using the WebKit rendering engine». Морда к webkit это, конечно, браузер, но 99.99% кода в нем, причем самого сложного, это чужой код.

anonymous
()
Ответ на: комментарий от mersinvald

А какая разница на чем упадет релиз: на выходе за пределы или на последствиях?

Ну какбе если ты не выловишь вообще всё при тестировании, а ты не выловишь, то в последствия в релизе будут от падения, до того же heartbleed и прочего выполнения произвольного кода на целевой системе.

Такая-то безопсасность, ЛОЛ.

Тем более что если тебе не важна незначительная просадка на проверках — ты можешь ее не вырубать.

Ну офигеть теперь! Просадка у него незначительная! Особенно в работе с «большими числами», когда ОЧЕНЬ много обращений к массивам в куче вложенных циклов.

shkolnick-kun ★★★★★
()
Последнее исправление: shkolnick-kun (всего исправлений: 1)
Ответ на: комментарий от shkolnick-kun

Для работы с «большими» числами уже давно написаны и отлажены библиотеки.
Говорят, что если не изобретать велосипеды, программы становятся стабильнее

mersinvald ★★★★★
()
Ответ на: комментарий от mersinvald

Ну лол, уж перемножение матриц отладить проблема не такая большая

Интересно, чего вам не хватило, чтобы понять, что под «перемножением матриц» понимался большой комплекс вычислительных задач, где пренебрежение производительностью приводит к слишком большим накладных расходам. Мозгов или опыта?

eao197 ★★★★★
()
Ответ на: комментарий от eao197

Интересно, чего вам не хватило, чтобы понять, что под «отладить перемножение матриц» подразумевается что вычислительные задачи хорошо детерминируются и позволяют провести исчерпывающее тестирование. Мозгов или опыта?

mersinvald ★★★★★
()
Последнее исправление: mersinvald (всего исправлений: 1)
Ответ на: комментарий от SZT

Только вот они существуют.

восьмибитные МК уже не в моде, да и по цене не сильно дешевле 32-битных. зачем кусать кактус?

i36_zubov
()
Ответ на: комментарий от mersinvald

Как раз опыт-то говорит о том, что покрывать тестами вычислительный код не так-то уж и просто. Это как бы раз.

Как бы два в вычислительных задачах состоит в том, что рулят там математики, а хорошие математики крайне редко бывают хорошими разработчиками. Поэтому и отношение к качеству кода и к его покрытию тестами э... несколько специфическое, скажем так.

Ну и как бы три состоит в том, что тесты показывают наличие ошибок, а не их отсутствие. И чем сложнее задача, тем меньше шансов покрыть ее тестами полностью.

Но вы можете свято верить в единственно правильный подход языка Rust, который вам так нравится.

eao197 ★★★★★
()
Ответ на: комментарий от i36_zubov

Не в моде у кого? У аудитории швабры и реддита? ОК!

При партиях в десятки тыс. шт. это «не сильно дешевле» превращается в хорошие деньги.

shkolnick-kun ★★★★★
()
Ответ на: комментарий от slovazap

ща тут насоветуют.
я вот занимаюсь такой «глупостью», как написанием программ на С в 21-м веке. куча предложений работы и мне очень хорошо платят за это.
«разруха в головах, а не в клозетах» (С). так что «месиво» - это результат говнокодерства, а не свойство языка. кстати, устроить месиво в плюсах, например, гораздо проще, чем в plain C.

Iron_Bug ★★★★★
()
Ответ на: комментарий от slovazap

ну, я в банках не работала. ничего про них сказать не могу. так что ваши ассоциации - они исключительно ваши.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

ваши ассоциации - они исключительно ваши

Как и ваши пустые утверждения. Есть предложения как ту портянку на написать коротко и без возможности ошибиться на plain C - велкам, а брехню про «хорошо платят», разруху, говнокодерство и месиво оставьте собратьям по культу устаревших языков.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

сишечка не будет «устаревшей», пока жив кернел. так что узбагойтесь, молодой человек: вы-таки раньше помрёте, чем сишечка.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

Есть такое слово - легаси. Если считать весь груз накопившегося устаревшего дерьма, то и C жив, и SVN самая популярная VCS, и autocrap - супер система сборки. Только вот о качестве и пригодности инструментов в современном мире это ни разу не говорит, а на деле они непригодны ни разу, и в новых проектах от них вменяемые люди держатся как можно дальше, да и старые проекты сваливают ударными темпами (тот же gcc, несмотря на всю свою ретроградность и монструозность).

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

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

ну да, ну да. щаз ты весь мир тут научишь мудрости жизни. сам на себя посмотри: где сичешка и где ты. вот и даже говорить не о чем. просто есть люди, которые умеют в С, и SVN, и autotools, а есть неосиляторы, которые в своих проблемах начинают обвинять весь мир.
и я это пишу при том, что я во все поля юзала плюсы и знаю, как их юзать, и какие у них плюсы и минусы, и всё такое. и не страдаю кретинизмом «единственно верного подхода». просто факты остаются фактами: как бы далеко не развивались технологии наверху, внизу всегда останутся С и ассемблер.
и таки да, я работала во многих крупных проектах, где код писали на С. и люди нормально работали, и все проекты были более чем успешны. а ты «вменяемыми людьми» почему-то называешь себе подобных неосиляторов. ну не можешь - не пытайся. но вот только не надо говорить, что это не твои проблемы, а проблемы всего мира.
я вот сейчас по работе пишу софтинку на С. и в компании никто не считает, что сишечка устарела.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 2)
Ответ на: комментарий от anonymous

В perl книге с вербюдом так же советовали.

anonymous
()
Ответ на: комментарий от Iron_Bug

я вот сейчас по работе пишу софтинку на С. и в компании никто не считает, что сишечка устарела.

«Ваши ассоциации - они исключительно ваши» (ц)

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

ну, если люди готовы платить за софт на С - значит, это кому-то нужно. и это предложения с хорошей зарплатой. значит, компании готовы платить за разработку на С. и не только при работе в офисе. как выяснилось, на фрилансе довольно много предложений именно на С. я даже не ожидала, что там есть на него спрос. я каждый раз при смене работы наблюдаю большое количество предложений (и это я ещё не считаю предложений работы под венду). это говорит о том, что разработка на С под Линюкс очень актуальна и специалисты в этой области востребованы. это не моё мнение, это просто наблюдение рынка вакансий. я его мониторю даже если не ищу работу. просто ради любопытства. даже если просто залезть на любой сайт вакансий и порыть там на предмет С/C++ - вылезет более чем достаточно приличных предложений.
действительно, за последние годы спрос на С/C++ возрос. даже очень крупные компании переводят разработку на С. потому что поняли, что скорость и оптимизация играют роль. и чем больше данных - тем важнее эти параметры. так что за будущее сишечки я нисколько не беспокоюсь.
пока что все аргументы против были какие-то детские: мол, писать не удобно, не умею я в вашей сишечке проекты делать, меня в школе не научили думать головой и теперь у меня постоянно течёт память. но это не проблема языка, как я уже много раз говорила. кто умеет писать код - у того проблем нет.

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

ну, если люди готовы платить за софт на С - значит, это кому-то нужно

Это ничего не говорит о том, устарел Си или нет. Люди готовы платить за Жигули-классику.

даже очень крупные компании переводят разработку на С

У «очень крупных» компаний разработок столько, что слова «переводят разработку» практически бессмысленны.

так что за будущее сишечки я нисколько не беспокоюсь

За него никто не беспокоится - выше сказано про легаси. Но это никак не мешает Си быть устаревшим говном.

tailgunner ★★★★★
()
Последнее исправление: tailgunner (всего исправлений: 1)
Ответ на: комментарий от tailgunner

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

Iron_Bug ★★★★★
()
Ответ на: комментарий от Iron_Bug

при сравнении производительности выходит, то говном является многое другое, а не сишечка

При сравнении производительности выяснется, что сишечка (добровльно называть язык Си так могут только слабоумные и клинические инфантилы) давно уже всего лишь один из многих языков с эффективными компиляторами. И да, производительность - не единственный и часто не самый важный критерий.

tailgunner ★★★★★
()
Ответ на: комментарий от Iron_Bug

просто есть люди, которые умеют в С, и SVN, и autotools

Нет, есть люди, которые умеют в машинные коды, RCS и сборку руками вводя командочки в консоль, а есть неосиляторы с C, SVN и autotools. Понятна аналогия?

которые в своих проблемах начинают обвинять весь мир

Проблемы? Господь с вами, я на C не пишу. Проблемы у того кто не может признать очевидное, обижается на факты и пытается спорить переходя на личности не приводя аргументов.

и таки да, я работала во многих крупных проектах

Да грош цена вашим словам, какие там проекты если вы простой код демонстрирующий $топик$ написать не можете, а после вашего ответа пышушего какой-то не совершенно детской обидой за любимую сишечку я вообще не поверю что вы где-то работаете, даже стажёром, потому что и те не зацикливаются на одном инструменте, осознают его ограничения и тот факт что инструменты устаревают. Ну и подтвердить свои слова кодом могут, естественно.

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Есть такое слово - легаси. Если считать весь груз накопившегося устаревшего дерьма, то и C жив

Вот не надо. C – это не legacy. На C регулярно начинают писать новые проекты, а что-то переписывают с других языков на C.

А legacy – это то, что существует, что, возможно, нужно сопровождать, но с использованием чего и мысли нет делать что-то новое. С моей точки зрения, яркие примеры legacy – это COBOL и Delphi 7. Код есть, код нужно поддерживать, но писать на этом новое? Не пишут.

uuwaan ★★
()
Ответ на: комментарий от uuwaan

На C регулярно начинают писать новые проекты, а что-то переписывают с других языков на C.

Можно примеры? Особенно второго.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Новое:

СУБД Tarantool. Там 90% С + 10% C++. Зачем им там бОльшая часть на Си?

Новый видео-кодек Daala от xiph.org. Такие-то умники и не умеют в C++?

Софт на suckless.org. Бодро строгают на чистом C. Немного секта, конечно, но софт-то пригодный очень даже.

Не говоря уже о Redis и nginx.

Перепись:

ZeroMQ, написанный на C++ реинкарнировался в виде nanomsg на чистом C. Считаю за перепись, поскольку обе вещи это библиотеки, так что переписать саму ZeroMQ на C — это поломать API.

Пакетный менеджер DNF перепиливают на C c Питона.

Bumblebee ЕМНИП сначала собрали на C++, а потом переделали на чистый C.

uuwaan ★★
()
Ответ на: комментарий от uuwaan

Софт на suckless.org.
Home of dwm, dmenu and other quality software with a focus on simplicity, clarity, and frugality.

Первый раз слышу.

Новый видео-кодек Daala от xiph.org.

Кодеки - это вообще отдельная песня. Там 90% кода - матан.

А вообще, список так себе. Человек знает С и пишет на нём код. Это не делает С лучше С++ (как и обратно).

RazrFalcon ★★★★★
()
Ответ на: комментарий от RazrFalcon

А вообще, список так себе. Человек знает С и пишет на нём код. Это не делает С лучше С++ (как и обратно).

Я тут не говорю, что лучше, а что хуже. Я опровергаю утверждение, что якобы C - это legacy.

uuwaan ★★
()
Ответ на: комментарий от i36_zubov

восьмибитные МК уже не в моде, да и по цене не сильно дешевле 32-битных. зачем кусать кактус?

Энергопотребление, Карл!

reprimand ★★★★★
()
Ответ на: комментарий от uuwaan

СУБД Tarantool. Там 90% С + 10% C++. Зачем им там бОльшая часть на Си?

То есть даже ты согласен, что это не чистый Си. Как так, что они не обошлись без Си++ (и Lua, ЕМНИП)?

Новый видео-кодек Daala от xiph.org. Такие-то умники и не умеют в C++?

Не подходит. Кодеки пишутся чуть ли не на C89, чтобы работать на забытых всеми встроенных системах.

Софт на suckless.org.

Ну это смешно. Секта есть секта.

Не говоря уже о Redis и nginx.

nginx вышел в 2004, если верить Вики. Слишком давно.

ZeroMQ

Он разве жив? Читал его postmortem.

Пакетный менеджер DNF перепиливают на C c Питона.

Это зачет, да. Но это Redhat - оплот Си-сектантов :) Еще можно systemd вспомнить.

Bumblebee ЕМНИП сначала собрали на C++

Но он маленький.

В общем, проекты есть, признаю. Но зачетный только DNF - и начат относительно недавно, и, наверное, манипулирует относительно сложными данными.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

То есть даже ты согласен, что это не чистый Си. Как так, что они не обошлись без Си++ (и Lua, ЕМНИП)?

Мой поинт в обратном: как так, что они без Си не обошлись? Могли же всё на C++ настрогать. А у них там структурки да процедурки. Lua там для хранимых процедур.

Кодеки пишутся чуть ли не на C89, чтобы работать на забытых всеми встроенных системах.

Ну неправда. Знаю один звуковой кодек, который изначально был реализован на MATLAB, оттестирован, оттюнен, а потом уже переписан на C. Так что C89 и работа на встроенных системах - это вообще необязательно.

Но Bumblebee маленький.

Мы не о размере говорим, а о том, что они его с современного-стильного C++ на древний заскорузлый C перетащили. Зачем?

Так что не такое уж и легаси.

uuwaan ★★
()
Последнее исправление: uuwaan (всего исправлений: 1)
Ответ на: комментарий от RazrFalcon

стремительно падает

Не падает оно никуда. Плато у него. Сидит себе с системном программировании, в эмбеде, в производительном матане и не-матане местами.

uuwaan ★★
()
Ответ на: комментарий от uuwaan

даже ты согласен, что это не чистый Си. Как так, что они не обошлись без Си++ (и Lua, ЕМНИП)?

Мой поинт в обратном: как так, что они без Си не обошлись?

Это как раз неинтересно. C89 - подмножество Си++, «не обошлись без Си» можно сказать о 100% Си++-программ.

Кодеки пишутся чуть ли не на C89, чтобы работать на забытых всеми встроенных системах.

Ну неправда.

Так говорят их разработчики.

Знаю один звуковой кодек, который изначально был реализован на MATLAB, оттестирован, оттюнен, а потом уже переписан на C

Ну то есть ты и сам всё понимаешь.

Но Bumblebee маленький.

Мы не о размере говори

Мы? Я говорю о том, что есть проекты, для которых более-менее безразлично, что использовать.

они его с современного-стильного C++ на древний заскорузлый C перетащили.

Отличный вопрос. У тебя есть ответ? Здесь изначально Си (с 2011). Откуда данные, что это было когда-то написано на Си++, не говоря уже о современном Си++?

tailgunner ★★★★★
()
Ответ на: комментарий от uuwaan

Сидит себе с системном программировании, в эмбеде, в производительном матане и не-матане местами.

В каком производительном матане? Big data вообще на JVM делают.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

C89 - подмножество Си++, «не обошлись без Си» можно сказать о 100% Си++-программ

Речь о том, что могли сделать классы, а у них там процедурки, принимающие указатели на структурки.

Вот это на C++:

class Foo {
  int x;
public:
   void do();
};

даст такой же код, как Сишное:

struct Foo {
 int x;
};

void do_foo(struct Foo *this);

Так почему не воспользовались?

Откуда данные, что это было когда-то написано на Си++

Я сказал, ЕМНИП. Я могу ошибаться. Но на всё ещё живом их сайте написано следующее:

The project has been fully rewritten in the C programming language, providing increased performance and reliability

То есть переписан на C с чего-то другого. Для моего тезиса, что на C переписывают с других языков, этого достаточно.

В каком производительном матане?

В таком.

uuwaan ★★
()
Ответ на: комментарий от slovazap

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

uuwaan ★★
()
Ответ на: комментарий от uuwaan

Я кагбэ не ваш персональный веб-краулер, чтобы доставлять вам их больше

Погодите, вы же мне что-то доказываете, вам и приводить аргументы, а вы пока только сотрясли воздух. Но, так и быть, давайте я вам помогу:

https://www.openhub.net/languages/compare?language_name[]=c&language_name...

Ещё вопросы есть?

slovazap ★★★★★
()
Ответ на: комментарий от slovazap

Ещё вопросы есть?

Ты себе не представляешь сколько кода на C находится НЕ в открытом доступе и в него вносят правки ежедневно.

Ну и

slovazap ★★★★★ (09.09.2016 0:11:18) «Писать прикладное ПО на plain C - сразу кол.»: /forum/development/12349169?cid=12349751

сразу говорит о твоей осведомленности в теме

reprimand ★★★★★
()
Последнее исправление: reprimand (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.