Le langage machine c'est le langage natif du processeur.
Chaque processeur (ou famille de processeur) a son langage de bas niveau. Il consiste en une sucession de bit qui permettent d'effectuer des opérations élémentaires. Cela ressemblerait à de très longues séquences de 0 et de 1. Souvent, afin de rendre l'écriture de programme plus aisé, on simplifie en utilisant des mnémoniques comme par exemple "call", "init". Une fois les séquences écrites, les mnémoniques sont transcrit en langage machine.
De ce fait, un programme écrit en Z80 est incompatible avec les processeurs de la famille M68000 par exemple. Mais il présente une rapidité d'exécution par rapport aux langages de plus haut niveau comme par exemple C++. Pourquoi ? Parce que lorsqu'un programme est compilé en C++, il est présent dans une forme de langage machine standart, qui est retranscrit à chaque fois dans le langage du processeur (à moins d'utiliser un cross-compilateur comme Hawk).
Si le langage est plus rapide, il n'est pas adapté toutefois pour écrire des programmes compliqué, car le langage machine nécessite vraiment de tout préciser. Par exemple, afficher un simple "Hello World" nécessite d'effectuer des opérations comme :
- initialiser l'écran
- effacer son contenu
- afficher le texte
- libérer l'écran
Alors qu'en C++, il suffirait de faire :
- afficher le texte
La langage machine est utilisé surtout pour les calculatrices, les cibles comme OS9, qui ont peu de ressources et pour lesquels les applications sont bien spécifiques.
Le roi est mort, vive le roi !