Similarly, one builds a single translation engine for a computing environment that is reused to translate all application OOA's in that environment. This is driven by the notion of constantly changing hardware so that one can divorce the details of the changing computing environment from the fundamental logic of the problems being solved. This allows a familiar solution to be easily ported. It is also driven by the need to verify the problem solution in a less painful debugging environment than the final system. If an OOA represents a full, albeit abstract, description of the solution that is not dependent upon the specific implementation, then it should be possible to verify that solution away from the implementation.
Performance is another reason that drives translation.
An OOA that is independent of the computing environment is also independent of the implementation language and the optimization techniques. However, translation allows the OOA to be implemented in inherently faster languages than OOPL's. Translation also allows the source code to be tuned for a particular computing environment in the way it is written. While an expert can fine-tune an OOPL to provide reasonable performance, this restricts the pool of talent available for performance sensitive applications. By focusing the efforts of such talent on a single, reusable translation engine, economies of scale are achieved across all such applications in that computing environment.