Возьмём пример из жизни, нужно написать инструкцию для человека по которой он сможет себе заварить пельмени, допустим я написал чёткий алгоритм, с подробными разъяснениями, но что делать если пойдет не так как ты думал? Например на стадии когда он будет ток открывать пачку пельменей, может произойти землетресение, или вообще может к нему ворвутся бандиты изобьют его и заберут у него его пельмени то как быть? Как могу предпринять какие действия мне придется предпринять в программе, какие условия придется писать, если я в принципе не знаю что будет потом. От куда мне знать что может случиться такой исход?
В программах обычно учитывают по-максимуму всё, до чего додумались. И всё равно при этом со временем возникают другие, непредусмотренные, случаи, исправления которых вносят с обновлениями
каждый раз, когда мы что-то кодим, мы делаем ряд каких-то предположений, считая, что они всегда выполняются, если мы не делаем ничего неординарного (а если делаем, то сами виноваты) например, можно предположить, что землетрясений не существует, и сказать пользователям, что на случаи, когда землетрясение случается, гарантия не распространяется если это неприемлемо, такой случай можно учесть отдельно)
зависит от среды исполнения. Например, на SQL запрос описывает, что нужно получить, но не описывает, как это получить. А сервер базы данных, зная, какие данные у него хранятся, составляет себе алгоритм, оптимизированный под текущее состояние базы данных, и выполняет его.
Да, чёткие, но реальные. В противном случае это паранойя. Если землетрясение, то тут должна включаться другая программа. н-р обесточить помещение, залезть под стол Никто, никогда не будет включать в код обход маловероятных событий. По той простой причине, что разраб не сможет в полной мере оценить вероятность совершения события. Отдельно, если заказчик на это укажет Никто не будет писать инструкцию по варке пельменей отдельно для опасных территорий. В этом и состоит программирование - выключить программу варки пельменей, если началось землетрясение. События подчиняются иерархии и модель софта должна ей соответствовать Жизнь (эксплуатация) вносит свои коррективы, поэтому кроме разработки важно сопровождение уже написанного В нём могут быть внесены изменения разного характера, если, конечно, сопровождение предусмотрено