It is weirdly easy to create a language that expresses specifications that is more complex and difficult to understand than the code which implements it. E.g. Z notation.
This is deeply incorrect. Code is not and never will be a requirements specification.