A comparative term for software which has a higher abstraction level with respect to the underlying hardware.

While any software may be implemented on top of any other software, the degree to which direct interpretation is required is a rough measure of how dependent upon a particular hardware architecture the software is.

Ideally, there should be a clear delineation between abstraction levels, so that some is totally independent of the hardware and relates almost directly to mathematics and logic or the person's conceptual model, while other software is concerned with various levels of translation and optimization. The intent is to create varying degrees of portability, and possibly meta-programmability.