Humans are able to recover the meaning of an ambiguous text.
On the other hand , a new version of a language can make a program not be able to compile. The compiler cannot understand the meaning of the program.
Ambiguity thus leads to antifragility. We need to able to recover from a certain number of errors.
@apostolis @david_chisnall These issues seem different to me. The issue here is not that of ambiguity (one program means multiple things) but of backwards incompatibility, something natural languages suffer of as well (older writing are archaic at best, if not unreadable to the lay person).
In theory, one can write a compiler that translates valid programs in an older version of the language to programs in newer versions. I have used such compilers in the past. In practice, it's too much work to do it as the language evolves, and instead we manually update each program, or try to make changes backward compatible.
@apostolis @david_chisnall These issues seem different to me. The issue here is not that of ambiguity (one program means multiple things) but of backwards incompatibility, something natural languages suffer of as well (older writing are archaic at best, if not unreadable to the lay person).
In theory, one can write a compiler that translates valid programs in an older version of the language to programs in newer versions. I have used such compilers in the past. In practice, it's too much work to...