High-Level Programming Language
A high-level programming language is a programming language that is easier to program in, to some extent platform-independent, and abstract from low-level computer processor operations such as memory accesses.
The term "high-level language" does not imply that the language is always superior to low-level programming languages but rather refers to the higher level of abstraction from machine language. Rather than dealing with registers, memory addresses and call stacks, high-level languages deal with variables, arrays and complex arithmetic or boolean expressions. Other features such as string handling routines, object-oriented language features and file input/output may also be present.
In general, high-level languages make complex programming simpler, while low-level languages tend to produce more efficient code.
Originally, assembly language was considered low-level and programming languages like COBOL and C were considered high-level, as they allowed the abstractions of functions, variables and expression evaluation.
Most high-level languages currently output object or machine code directly for a target processor or operating system, but a few do not, instead outputing an intermediate language only (often C) to submit to a compiler for that intermediate language, which then outputs finished object or machine code. This is usually done to gain portability or optimization. Such intermediate languages fall in complexity between high-level languages and low(er)-level languages.