A Low-Level programming language is a language that encourages the programmer to take control over memory structures and computational procedures.
These languages are typically characterized by having very little pre-build functionality and rely heavily on the programmer to re implement the features that he wants or use a external library.
This contrasts with low-level programming languages that discourage this behavior.