Многие интересующиеся программированием люди не могут понять разницы между знаком равенства и присваиванием. Путаницу в эти определения вносит заимствованный из Си стиль обозначения присваивания значком «=», который вроде бы и схож по смыслу с присваиванием, однако имеет серьёзное отличие.

Квантор «=» в математике и других науках имеет значение «равно». То есть это не операция, а высказывание, констатация факта. «A = B » означает именно что «A равно B», а не «А теперь имеет значение B». «f(x)=x^2+2x+1 » означает, что f — тоже самое, что x^2+2x+1 , как макрос. Аналогом математического равенства в программировании (в Си-подобных языках) является логическое выражение «==».

Опасность смешения этих понятий при чтении алгоритмов заключается в том, что в таком случае выражение «A = B » толкуется как «на этом шаге А и В равны», что не дает понимания, как именно они должны стать равны — то ли А должно стать В, то ли наоборот.

Именно поэтому в некоторых языках программирования решили выпендриться и заменить оператор присваивания с удобного для набора знака «=» на, например, «:=» в Паскале, что, вообще говоря, раздражает. Однако, по негласной международной норме при описании алгоритмов на псевдоязыке для присваивания используется однозначный символ «←»: «A \gets B » — теперь всем всё понятно.

comments powered by HyperComments