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, including: determining, at translation-time, whether a data type of a specific element or construct in the input computer program is among the first set of data types or the second set of data types; in the event that the data type of the specific element or construct is among the second set of data types, at translation-time, executing code pertaining to the specific element or construct and performing translation; in the event that the data type of the specific element or construct is among the first set of data types, at translation-time, performing translation without executing the code pertaining to the specific element or construct; determining argument types provided to said operators, wherein at least one of said argument types is evaluated to a type value during said automatically translating; providing versions of said operators having input argument types consistent with said determined argument types; and providing said computer executable output representation as an output.