1. A method for automatically translating a computer program to a computer executable form, the method comprising: providing an input computer program expressed in an input computer language, wherein said input computer language includes a first set of data types for language elements or constructs to be evaluated at run time, and a second set of data types for language elements or constructs to be evaluated at translation time; wherein said input computer program includes at least one element or construct having a type in said first set of data types and includes at least one element or construct having a type in said second set of data types; automatically translating said input computer program to a computer executable output representation, wherein said at least one element or construct having a type in said second set of data types is evaluated during said automatically translating; and providing said computer executable output representation as an output.