The translational approach entails two major disadvantages as a formal specification tool:
The source language is defined only as well as the target language of the translator.
The correctness and completeness of the specification relies on a complete understanding of the target language.
A translator can carefully describe the relation between a source program and its translation in the target language, but it may at the same time provide little insight into the essential nature of the source language.
On the other hand, defining the meaning of a programming language in terms of a real interpreter also has shortcomings as a specification mechanism:
For complex languages, correct interpreters (as well as compilers) are difficult to write.
Moreover, these definitions are too machine dependent to serve as formal specifications for a programming language.
Interpreters are to provide practical program development tools, and they do not provide the mathematical precision needed in a formal definition.
Denotational semantics take a different approach from the approach of translational and operational semantics.
The figure shows the difference between the denotational and operational semantics.