Добавить комментарий

Изображение пользователя Alexey_Donskoy.

Неполная типология

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

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

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

Это серьёзная проблема, между прочим, но Вы её не рассматриваете даже теоретически...