Why did programming languages start using = for assignment

historyprogramming-languages

In most early algorithms books, <- referred to assignment and = referred to comparison. But nowadays the only languages that don't use = for assignment are Pascal (:=) and toy languages like COOL. What caused modern programming languages to change = into meaning assignment instead of its mathematical meaning of equality?

Best Answer

According to Wikipedia, the use of equals for assignment dates back to Heinz Rutishauser's language Superplan, designed from 1949 to 1951, and was particularly popularized by Fortran:

A notorious example for a bad idea was the choice of the equal sign to denote assignment. It goes back to Fortran in 1957, and has blindly been copied by armies of language designers. Why is it a bad idea? Because it overthrows a century old tradition to let “=” denote a comparison for equality, a predicate which is either true or false. But Fortran made it to mean assignment, the enforcing of equality. In this case, the operands are on unequal footing: The left operand (a variable) is to be made equal to the right operand (an expression). x = y does not mean the same thing as y = x.

—Niklaus Wirth, Good Ideas, Through the Looking Glass

Konrad Zuse also used the equals sign for Plankalkul, which inspired Rutishauser's Superplan, although a compiler was never devised for it. Why did he choose the equals sign? I guess you'd have to ask him.