Programming Language description problems

Why do we need programming languages and can’t use natural languages to program our computers? Because natural languages are ambiguous and often unclear. However, when describing programming languages in specification we do use natural language.
Erik Meijer writes about problems that can occur with this. As an exapmle he takes a subtile difference in the description of assignments in Java and C#:

“In Java the result of an assignment expression x=y is the value of the ‘variable’ x after the assignment has occurred. In C#, the result of a simple assignment is the value assigned to the left operand, i.e. the value of y after conversion to the type of x.”

Read about the problem here.