It is often the case that different hardware can run the same software, with some performance penalties. However, if a program is compiled for later model hardware, it is probably true that it will not run on early hardware. Thus, for programs which do not require the special features of more modern hardware, one can compile a single executable which will run on all. Additionally, programs compiled for one version of an operating system will usually not run on another. In order to permit the user the flexibility of specifying hardware specific or generic targets for the compiled executable, we have come up with the idea of platforms .
Platforms are combinations of specifications of hardware and operating system.
These combinations are enumerated as platform classifications according to how generic the hardware and operating system target is. The classification is then rendered into a hardware and machine specific platform specification . Platforms are classified by how explicit the hardware and operation system specifications are. The hardware and OS classes are combined to form a platform independent classification. The first element, hardware , is a token representing either a specific type of hardware, or a generic class.