Гибкость языка Си может снижать надёжность программного обеспечения из-за слабости ограничений, накладываемых системой типов и семантикой языка. www.ispras.ru Это приводит к высокой вероятности внесения в код ошибок, связанных с неспецифицированным поведением программ (ошибки управления памятью, ошибки синхронизации). www.ispras.ru
Однако есть и способы повысить надёжность программ на Си:
- Применение управляемого стека. s.esrae.ru Он облегчает написание надёжного и корректного программного кода и позволяет использовать язык Си более высокоуровневым и эффективным способом. s.esrae.ru Благодаря управляемому стеку программы на Си становятся устойчивыми к раннему выходу из процедур и фреймов, в том числе по причине исключительных ситуаций. s.esrae.ru
- Использование процедурно-параметрического полиморфизма. publications.hse.ru Он обеспечивает безболезненное расширение как данных, так функций, используя при этом статическую типизацию вместо разыменования типов. publications.hse.ru