Житейский смысл алгоритмов и их фрагментов
Можно сказать, что одну и ту же вещь человек видит по-разному в зависимости от того, проникает он в суть явления или скользит по поверхности. В последнем случае он видит только то, что есть, сумму отдельных элементов, а не качественное поведение предмета в целом. В первом случае человек знает цель всего происходящего, поэтому и воспринимает явление в совокупности. Иначе говоря, прошлый опыт раскрашивает восприятие той или иной вещи совершенно другими красками. Сказанное имеет непосредственное отношение к программированию. Любая конструкция языка имеет для программиста смысл больший, нежели просто перечень имеющихся в ней операций или операторов. Смысл ее заключается в результате производимых действий. С этой точки зрения результат любой программы является теоремой, а ее доказательством - процесс ее написания. Доказать, что данная конструкция языка делает то, что она действительно делает, можно разными способами. Можно убедиться на конкретном примере (что не всегда доказательно), можно использовать житейскую или более-менее формальную логику умозаключений (что наиболее естественно и просто), можно применять формальные методы (что, на самом деле, ценно только с теоретической точки зрения), можно пользоваться аналогиями из других сфер деятельности. Последнее на самом деле - самое убедительное, поскольку логика программирования отражает логику формально-логических отношений в окружающем мире.
Возьмем простой пример. Определим, что делает программа со значениями переменных a,b .
a=5; b=6;
c=a;
a=b;
b=c;
-на примере конкретных значений видно, что переменные меняются своими значениями, но практика показывает, что не все это замечают ;
-формально-логическое объяснение : если переменная а переписывается сначала в c , а потом в b , а перед этим b переписывается в a - то они " меняются местами" ;
-житейская аналогия - поменять содержимое двух стаканов, не смешивая, можно только с использованием третьего (в данном случае - c ) .
Как бы там ни было, результат работы этого фрагмента - обмен значениями двух переменных с использованием третьей, является " медицинским фактом" , как сказал бы О.Бендер.