Les langages d'assemblage et les langages machine sont des exemples de langages de bas niveau. Un langage de bas niveau est un langage de programmation qui gère les composants matériels et les contraintes d'un ordinateur. Les langages de bas niveau exploitent et gèrent directement l'ensemble du matériel et l'architecture du jeu d'instructions d'un ordinateur.
Ils sont souvent décrits comme des langages orientés machine ou proches du matériel. Les programmes et applications écrits dans un langage de bas niveau ne nécessitent aucune interprétation, et ils sont directement exécutés sur le matériel informatique.
Un langage assembleur est un groupe de langages qui implémente une représentation symbolique du code machine requis pour programmer certaines architectures CPU. C'est un langage de programmation pour les microprocesseurs et autres dispositifs de programmation, et c'est le langage de programmation le plus basique disponible pour n'importe quel processeur. Généralement, les assembleurs produisent des fichiers objets et la plupart fournissent des macros. Contrairement aux langages de haut niveau, les langages d'assemblage manquent de variables et de fonctions, mais ils ont la même structure et le même ensemble de commandes, un peu comme les langages machine. Ce langage de programmation est utile aux programmeurs lorsque la vitesse est requise et lorsqu'ils doivent effectuer une opération qui ne peut pas être effectuée dans des langages de haut niveau.
Le langage machine est un langage de programmation qui peut être directement compris par un ordinateur sans interprétation. Il est également appelé code machine ou code objet. Si un programme est écrit dans un langage de haut niveau tel que Java ou C, le programme est traduit en langage machine par un assembleur, un compilateur ou un interprète.