A low-level programming language is a language that provides little or no abstraction from a computer's instruction set architecture. The word "low" refers to the small or nonexistent amount of abstraction between the language and machine language. Machine code or machine language is a system of instructions and data executed directly by a computer's central processing unit. Machine code may be regarded as a primitive (and cumbersome) programming language or as the lowest-level representation of a compiled and/or assembled computer program. This is why, low-level languages are sometimes described as being "close to the hardware."
A low-level language does not need a compiler or interpreter to run; the processor for which the language was written is able to run the code without using either of these.
By comparison, a high-level programming language isolates the execution semantics of a computer architecture from the specification of the program, making the process of developing a program simpler and more understandable.
A high-level programming language is a programming language that is more user-friendly, to some extent platform-independent, and abstract from low-level computer processor operations such as memory accesses. The word "high" does not imply that the language is superior to low-level programming languages but rather refers to the higher level of abstraction from machine language.