Low-level programming language
A low-level programming language is a programming language that provides little or no
abstraction from a computer's instruction set architecture—commands or functions in the
language map that are structurally similar to processor's instructions. Generally, this
refers to either machine code or assembly language. Because of the low (hence the word)
abstraction between the language and machine language, low-level languages are
sometimes described as being "close to the hardware". Programs written in low-level
languages tend to be relatively non-portable, due to being optimized for a certain type of
system architecture.
Low-level languages can convert to machine code without a compiler or interpreter –
second-generation programming languages use a simpler processor called an assembler
– and the resulting code runs directly on the processor. A program written in a low-level
language can be made to run very quickly, with a small memory footprint. An equivalent
program in a high-level language can be less efficient and use more memory. Low-level
languages are simple, but considered difficult to use, due to numerous technical details
that the programmer must remember. By comparison, a high-level programming language
isolates execution semantics of a computer architecture from the specification of the
program, which simplifies development.