Abstraction LevelA term, informally denoting an ordering between different possible abstract representations of a common domain.
A program is said to be low-level, or more exactly to be of a low level of abstraction relatively to the problem it tackles, if it handles not the ideal objects that appear in the problem, but representations of them in some space external to the problem, with lot of contingent restrictions, impertinent subproblems, representation redundancies, information locality problems, context and renaming, translation between various representations, and other inconsistencies.
Actually, "abstraction level" is rather a (partial) ordering over programs than an absolute qualifier for programs; abstraction is also a somewhat fuzzy concept, that can be formalized in many different ways, yielding different criteria; but the general idea is the same.
An abstraction criterion can be extended to sets of programs: a set of program is more high-level than another one if for each problem solved by the second set of programs, there exist a higher-level program that solves the same problem in the first set. This extension naturally applies to all the programs possible in given languages for given classes of problems. It can be seen that abstraction level criteria are refinements of the expressiveness criterion to compare programming languages, which itself corresponds to a trivial abstraction level criterion for programs.