Que signifient bas-niveau et haut-niveau en programmation ?

Vous avez sûrement déjà entendu ces termes, alors voici leur signification détaillée !

Article publié le 15/09/2022, dernière mise à jour le 19/09/2023

Lorsque vous commencez à découvrir la programmation, les concepts et les différents langages qui existent, on se retrouve rapidement à parler de langages "bas-niveau" et de langages "haut-niveau".

Mais qu'est-ce que la signifie exactement ?

Contrairement à ce que l'on pourrait croire, le "niveau" ne se rapporte pas au niveau de compétence nécessaire, c'est même plutôt l'inverse...

Un langage bas-niveau signifie que c'est un langage qui est très près du niveau des composants électroniques, tandis qu'un langage haut-niveau est un langage plus facilement compris par les humains (les développeurs et développeuses), et qu'il devra être transformé pour être compris par la machine.

En anglais on parle de "low-level" et de "high-level".

Si l'on prend les exemples les plus extrêmes, le langage le plus bas-niveau possible est le binaire, tandis que l'un des langages les plus haut-niveau est le Javascript (mais il en existe des dizaines).

Le binaire sera interprété directement par les composants électroniques (0V ou 5v par exemple), tandis que pour être interprété par les composants, Javascript devra d'abord être interprété par le navigateur, puis par l'OS, puis par le BIOS, et enfin par les composants.

On voit que Javascript est tout en haut de la pile d'exécution/interprétation, voilà pourquoi on parle "haut-niveau" !

Pourquoi utiliser un langage haut-niveau ?

Comme un langage bas-niveau va directement être compris par la machine, il sera exécuté beaucoup plus efficacement, et à l'inverse, plus un langage est haut-niveau, plus il perdra potentiellement en efficacité...

Par exemple, le Javascript est environ exécuté 30 fois moins vite qu'un même code en langage C.

Alors on pourrait se demander : mais pourquoi ne pas tout coder en langage bas-niveau ?

Car être tout en haut de la pile n'est pas toujours une mauvaise chose. Loin de là ! Un code en langage haut-niveau est un code qui sera compilé vers un langage plus près de la machine, donc selon les méthodes de compilation (spécifique à chaque langage), on se retrouvera avec plus ou moins de performances.

Mais les langages haut-niveau, comme ils reposent sur d'autres systèmes et outils existants, peuvent être portés à peu près n'importe où, sur n'importe quelle machine, tandis qu'un langage très bas niveau devra être modifié si l'électronique change.

Exemple :

  • Un programme écrit en binaire (ou en assembleur) devra changer dès que le processeur change
  • Un programme écrit en C devra changer ou être recompilé si le système d'exploitation change
  • Un programme en JavaScript pourra tourner sous Linux, Windows ou MacOS

Comment choisir ?

Le choix d'un langage ou d'un autre ne devra se faire qu'en fonction du projet, selon les contraintes, l'utilisation, etc...

Si vous devez contrôler de l'électronique directement (comme avec Arduino par exemple), alors ce sera un langage bas-niveau (C/C++). Pareil si vous êtes au niveau du système d'exploitation et que vous avez besoin de grandes performances (C/C++/Rust) ou dans le jeu-vidéo, traitement de données, etc... alors même chose (avec du C# par exemple).

Si par contre votre application doit s'exécuter sur des centaines de machines différentes, sur différents OS, alors on utilisera un langage un peu plus haut niveau (Java, Python, Javascript,...).

Bien sûr ce ne sont que des exemples pour simplifier la compréhension, le choix est parfois soumis à des contraintes bien plus complexes que celles citées ici !


Vishnu Mohanan sur Unsplash

Vous avez terminé l'article ?

Commentaires (0)

pour laisser un commentaire

Aucun commentaire pour l'instant