1. A computer-implemented method comprising: programmatically determining, using at least one binary contract that includes machine-level definitions, one or more abstract types associated with one or more available software interfaces, each software interface being described using an abstract type system associated with the one or more abstract types, the abstract type system configured to enable interface descriptions that are independent from specific programming languages, and wherein at least one description of a software interface includes calling parameter type descriptions, wherein programmatically determining the one or more abstract types comprises determining behavior associated with the one or more abstract types; and translating individual determined abstract types to individual respective types associated with at least one specific programming language.