Langage de programmation de haut niveau
En programmation informatique, un langage de programmation à haut niveau d'abstraction généralement appelé langage de haut niveau est un langage de programmation orienté autour du problème à résoudre, qui permet d'écrire des programmes en utilisant des mots usuels des langues naturelles (très souvent de l'anglais) et des symboles mathématiques familiers. Un langage de haut niveau fait abstraction des caractéristiques techniques du matériel utilisé pour exécuter le programme, tels que les registres et les drapeaux du processeur[1],[2].
Les langages de haut niveau sont plus proches des langues naturelles, ce qui facilite et vulgarise l'écriture des programmes. Ils sont généralement indépendants de la machine : le même programme pourra être utilisé tel quel sur plusieurs types d'ordinateurs — quoique les programmes puissent également être conçus pour un système d'exploitation en particulier[3].
Les langages de haut niveau sont apparus dans la seconde moitié des années 1950 (Fortran en 1954, Lisp et Algol en 1958, COBOL en 1959). Ils ont permis d'écrire des programmes d'une manière plus familière, proche de l'anglais, et qui ne dépend pas du processeur qui sera utilisé[4].
En 2010, il existe plus de 200 langages de programmation de haut niveau.
Caractéristiques
modifierLe langage de haut niveau a un plus haut niveau d'abstraction que les langages machines ou d'assemblages qui contiennent directement les instructions lues par le processeur et notamment la manière explicite dont le programme va gérer la mémoire de la machine. Plutôt que de s'occuper des registres, des accès mémoires et des piles, les langages de haut niveau s'occupent de concepts plus élaborés tels que les processus légers, verrous, objets, variables, tableaux, arithmétique complexe et expressions booléennes. De plus, ils n'ont en général pas la possibilité de s'occuper des détails liés à la machine tels que la gestion mémoire contrairement aux langages de bas niveau ou alors ces langages font appel à des fonctions préprogrammées (comme les opérateurs new et delete en C++). D'autres caractéristiques telles que des routines de manipulation de chaîne de caractères ou les concepts des langages objets peuvent être présentes.
Le langage C présente la particularité d'être à la fois un langage de haut niveau et de bas niveau[5]. Cependant cette notion a tendance à évoluer dans le temps : le langage C qui était généralement considéré comme de haut niveau s'est vu progressivement rapprocher du bas niveau[6].
Coût de cette abstraction
modifierDe façon stéréotypée, les langages de haut niveau simplifient le travail du programmeur là où les langages de bas niveau permettent de produire un code plus efficace. La limite d'utilisation des langages haut niveau correspond aux situations où les ressources matérielles sont limitées. Les concepts de programmation de haut niveau tels que les structures de données génériques, de l'interprétation à l'exécution, sont souvent lents à l'exécution et grands consommateurs mémoire. Pour cette raison, les codes qui ont besoin de s'exécuter rapidement et efficacement devraient être écrits en langage de bas niveau, même si la programmation en langage de haut niveau se ferait plus facilement.
Néanmoins, avec l'augmentation en complexité des architectures des microprocesseurs modernes et l'amélioration des compilateurs, on observe que fréquemment les langages de haut niveau produisent du code aussi efficace que ce qui peut être fait à la main par la plupart des programmeurs. De plus, une abstraction plus haute peut permettre des techniques plus puissantes produisant généralement de meilleurs résultats que leurs équivalents de bas niveau.[Comment ?]
Avantages
modifierLes avantages des langages de haut niveau (comme le Python) sont les suivants[7] :
- il est plus facile d'écrire un programme dans ce type de langage qu'avec un langage proche de la machine ;
- les programmes en langage de haut niveau sont plus rapides à écrire et à mettre au point ;
- les programmes en langage de haut niveau sont plus facilement portables d'une machine à une autre (niveau d'abstraction par rapport aux particularités des processeurs).
Notes et références
modifier- (en) Nirali Prakashan, Management Information Systems (ISBN 9788185790909).
- (en) Rajib Mall, Fundamentals of Software Engineering, PHI Learning Pvt. Ltd. - 2009 (ISBN 9788120338197).
- (en) Deborah Morley et Charles S. Parker, Understanding Computers: Today and Tomorrow, Comprehensive, Cengage Learning, 2009 (ISBN 9780324830132).
- (en) J. B. Dixit, Computer Programming, Firewall Media - 2007 (ISBN 9788131800683).
- Approches impérative et fonctionnelle de l'algorithmique: Applications en C, Sébastien Veigneau.
- Algorithmique Techniques fondamentales de programmation, Editions ENI, 2007.
- Apprendre à programmer avec Python 3, Gérard Swinnen, Éditions Eyrolles, 2012.