"The grammar described here is intended to help you understand the language in more detail, rather than to allow you to directly implement a parser or compiler."
A language specification is for people who want to implement a parser/compiler/VM/etc. It's something you need if you want to standardize it (e.g. TC39 [ECMAScript] and TC52 [Dart]).
A language specification is also generally clearly labeled as such.
Yes, a language specification is just a prerequisite for standardization. However, it's also useful for people who want to write their own implementation or tools. It also makes issue handling a bit smoother, because you can always check what the spec says if two bits of the ecosystem disagree with each other.
https://developer.apple.com/library/prerelease/ios/documenta...