Computer architecture
Programmer Visible Macroarchitecture: Higher level language tools such as compilers may define a definite interface to programmers using them, abstracting differences between underlying ISA, UISA, and microarchitectures; for example the C, C++, or Java standards define three different definite programming interfaces.