1. A method for translating a first implementation into another implementation, comprising the steps of: providing a first implementation, wherein the first implementation is represented by a source language; generating an intermediate representation from the first implementation, and generating a second implementation from the intermediate representation, wherein the second implementation is represented by a target language.