http://www.testingstandards.co.uk/
То сути своей это один из основных "первоисточников"
Вообще, по-моему, это единственный способ написать более-менее читаемую программу на C. Иначе мы обречены либо после каждой мало-мальски содержательной операции, которая в принципе может завершиться с ошибкой, проверять коды возврата функции и городить код обработки ошибки (а сама обработка тоже может привести к ошибке, и получается сказка про белого бычка), либо анализировать глобальную переменную errno, что тоже не блещет красотой.ARV писал(а):по-моему, единственный способ хоть как-то контролировать переполнение результата в математических расчетах на Си.
Это нас так приучили нерадивые программисты, увы... Сообщение "Программа выполнила недопустимую операцию и будет закрыта", после которого следует длинный дамп содержимого регистров и стека, обычному пользователю не дает никакой полезной информации. Я хочу знать конкретную причину - закончилось место на диске, нет нужной DLL, пропало соединение с сетью и т.д., а вовсе не адрес команды, где эта беда случилась.ARV писал(а):как же обрабатывать исключения? ведь чаще всего они служат для информирования пользователя, реже - для автоматического сбора информации, отсылаемой затем разработчику, и уж совсем редко для корректировки поведения программы.
Если нет более разумных вариантов, то хотя бы прекратить дальнейшее выполнение части программы с бессмысленными данными может быть лучшим выходом. Особенно если программа циклическая и пропуск одного цикла не будет катастрофическим.ARV писал(а):все "исправление" поведения программы так или иначе сведется к игнорированию неправильных данных/результатов...
И тем самым попросту перекладывает эти проблемы на наши плечи. Собственно, потому я и задал свой вопрос - как в этих не самых благоприятных условиях создаются более-менее надежные устройства? Обрабатывать коды ошибок "в лоб" слишком трудоемко и чревато новыми ошибками, тестировать вручную - вообще неподъемно (если не считать тестированием единичный прогон программы под отладчиком, как часто бывает). Нужна действенная помощь инструментов, а кое в чем и другие подходы к написанию программ. Кое-что удалось раскопать самому, кое-чему надеюсь научиться у других, - делитесь, кто не жадный.ARV писал(а):ну так Си и без этого игнорирует практически все на свете проблемы.
Большая просьба: когда будете пробовать, если возникнут недоразумения и трудности - пишите сразу, это мой брак, буду исправляться. Писал статью с космической скоростью и без отрыва от работы, урывками, поэтому запросто мог упустить что-то важное или использовать какие-то термины без пояснения. Не было времени испробовать их на ком-нибудь перед публикацией.bolek писал(а):Спасибо за статьи!
Быстренько пролистал - вроде все понятно, надо практически попробовать.
Добросовестно пробовал - не помогло. Прячутся где-то. Или у них летняя спячка, или брачный период, или сезонные миграции, или уж даже и не знаю, что предположить.ARV писал(а):если вы перейдете на русский язык, число адекватных собеседников может увеличиться
Товарищ, это вы о чем сейчас? Тему пробовали читать?Слесарь писал(а):Я вообще о таких примитивах не думаю. Все просто, есть проблема - включаешь мозг и находишь решение. А ты в теме пытаешься формализировать работу мозга, хотя мозг и так работает.
Я уже понял ваше кредо. Меня больше интересует мнение людей, которые профессионально (а не от безделья) занимаются программированием с умом.Слесарь писал(а):Профессиональная деятельность, эта та деятельность которая делается на автомате (минимум работы ума).
Простите мое любопытство, лично вы образование где получили, и какое именно? Чрезвычайно неожиданный взгляд на профессионализм.Слесарь писал(а):Обычно люди живут и не думают. Делают и не думают. Для этого и существует образование - образовал человека в определенном русле, он так и продолжает жить в этих рамках, особо не заморачиваясь.