web-dev-qa-db-fra.com

Langage bas, moyen et élevé, quelle est la différence?

J'ai déjà entendu ces termes décrire des langages, commeCn'est pas un langage de bas niveau, C++ est un niveau intermédiaire et Python est un langage de haut niveau. Je comprends que cela doit faire quelque chose avec la façon dont le code est compilé et comment il est écrit. Mais ce que je veux savoir, c’est ce qui définit une langue dans l’une de ces 3 catégories. S'agit-il de catégories absolues ou simplement d'une idée générale que les programmeurs utilisent pour se décrire les langages?

32
Narcolapser

Oui, ce ne sont que des termes généraux. Cela concerne l'abstraction et la proximité de ce que l'ordinateur fait réellement.

Voici une liste de langages de programmation allant du très bas au très haut niveau:

  • Code machine pourrait probablement être considéré comme le langage de programmation le plus bas.

  • Le langage d'assemblage indique au processeur ce qu'il doit faire. Il y a toujours une étape de conversion vers le code machine.

  • C est une avancée de l'assembleur, car vous devez spécifier ce que vous voulez faire en termes un peu plus abstraits, mais vous êtes quand même assez proche du métal.

  • C++ fait tout ce que C peut faire mais ajoute la possibilité d’abstraire des choses en classes.

  • Java / C # fait des choses similaires au C++ d'une certaine manière, mais sans la possibilité de faire tout ce que vous pouvez faire en C (comme la manipulation de pointeur dans le cas de Java [merci Joe!]). Ils ont cependant une récupération de place, que vous devez faire manuellement en C++.

  • Python / Ruby sont encore plus avancés et vous permettent d'oublier beaucoup de détails que vous auriez besoin de spécifier dans quelque chose comme Java ou C #.

  • SQL est encore plus haut (c'est déclaratif). Dites simplement "Donnez-moi tous les articles du tableau triés par âge" et le moyen le plus efficace de le réaliser pour vous.

65
Skilldrick

niveau bas = long temps de développement + fichier exécutable très rapide

niveau élevé = temps de développement plus court + fichier exécutable plus lent

le niveau moyen est entre les deux

18
EKanadily

Très bas niveau: code machine

Niveau bas: Assembleur, Forth

Niveau moyen: C, C++, la plupart des langages de programmation système

Niveau moyen/élevé: D, Go, langages de programmation système collectés avec ordures

Niveau élevé: Java, C #, langages les plus interprétés

Même niveau supérieur: dialectes LISP

Niveau le plus élevé: SQL, langages de programmation déclaratifs

S'il y a autre chose à ajouter, dites-le moi. 

13
Joe D

En informatique, un langage de programmation de bas niveau est un langage de programmation qui fournit peu ou pas d’abstraction à partir de l’architecture d’un jeu d’instructions . Le mot "faible" se réfère à la quantité d'abstraction faible ou inexistante entre le langage et le langage de la machine; pour cette raison, les langages de bas niveau sont parfois décrits comme étant "proches du matériel". Un langage de bas niveau n'a pas besoin de compilateur ni d'interpréteur pour s'exécuter; le processeur pour lequel la langue a été écrite est capable d'exécuter le code sans utiliser l'une de ces options .

Par comparaison, un langage de programmation de haut niveau isole la sémantique d'exécution d'une architecture informatique de la spécification du programme, ce qui rend le processus de développement d'un programme plus simple et plus compréhensible.

Les langues de niveau moyen se situent entre les deux

9
Ankur Mukherjee

Ils ne sont pas absolus. Ils sont tous relatifs aux autres langues utilisées dans l’industrie à l’époque. Par exemple, il fut un temps où l'Assemblée était considérée à mi-niveau.

Le "niveau" est essentiellement une mesure de l'abstraction du programmeur par rapport aux opérations matérielles. Dans une langue de bas niveau, vous devrez peut-être vous soucier des emplacements de mémoire réels, alors que dans un niveau élevé, vous créez simplement des variables et laissez le système d'exploitation gérer la mémoire.

Un processeur normal traite des instructions 32 ou 64 bits. Dans sa forme la plus simple, considérez cela comme un 32 1 et un 0 - c’est ce que le processeur interprète et exécute. L'écrire directement (code machine) serait le "niveau le plus bas".

4
Adam S

De bas en haut, vous pouvez classer les langues comme suit.

Code machine -> Langage d'assemblage -> Langage compilé -> Langage interprété

N'oubliez pas que ce ne sont pas des définitions absolues en noir et blanc, mais plutôt des nuances de gris. C'est plus une ligne directrice qu'une règle. 

Pensez au code machine comme à une longue chaîne de 1 et de 0 comprise par la plate-forme native. Considérez ceci comme votre référence ... le "niveau" le plus bas que vous puissiez avoir.

Le langage d'assemblée pourrait être considéré comme une représentation symbolique de cela. Je crois qu’il existe une correspondance 1 pour 1 entre les instructions de code d’assemblage et les instructions de code machine. Ceci est votre langage de bas niveau. 

Java et C++, par exemple, sont tous deux des langages compilés, mais beaucoup considéreraient que C++ est un langage de niveau inférieur à Java car il expose un accès système de niveau inférieur, alors que Java s'exécute dans un environnement protégé (la machine virtuelle). Rappelez-vous qu'un langage compilé est compilé (converti, si vous voulez) en code machine avant exécution. C est aussi un langage compilé, mais serait considéré comme étant de niveau inférieur à Java et C++. 

Dans notre intérêt, nous dirons que C et C++ sont des langages de bas niveau car ils offrent (relativement) peu d'abstraction du matériel et une gestion directe de la mémoire. En réalité, ils se situent quelque part entre le bas et le milieu, comme vous le verrez assez tôt.

Nous appellerons les langages de niveau intermédiaire Java et C # (.NET) car ils ont une gestion automatique de la mémoire (garbage collection), de nombreuses abstractions de haut niveau (objets IE ... et pourtant le C++ supporte les objets. Vous voyez pourquoi être vaguement défini?)

Avec un langage interprété, l'interprète réside en mémoire et lit directement le code source. Ce sont des langages de haut niveau. Python, Perl, Javascript et PHP sont tous des exemples de langages de haut niveau.

1
ravibhagw

Niveau bas signifie plus près de la machine, et donc plus difficile et plus puissant. Plus le niveau est élevé, plus la machine est éloignée de la machine et ressemble à celle de l'anglais, mais vous perdez beaucoup de puissance et de fonctionnalités associées au contrôle minutieux des détails de la machine. Les langues de niveau supérieur ont également tendance à vous protéger davantage et ont beaucoup plus de précautions et de contrôles en place, tandis que les langues de niveau inférieur vous font confiance, pour ainsi dire, et vous permettent de jouer à vos risques et périls.

1
froadie

Le terme langue de niveau moyen est celui que je n'ai jamais entendu parler.

"Bas" et "Elevé" font référence à la "proximité" de la machine dans la programmation. Le niveau le plus bas serait le code machine (binaire). Suivant (et toujours considéré comme faible) est l'assembleur. Les langages de niveau supérieur impliquent davantage de symbolisme et de constructions censées être plus proches de la façon dont les humains pensent normalement. C (et un peu C++) a la réputation d'être un peu hybride bas/haut parce qu'il a beaucoup de constructions qui sont dans des langages de haut niveau, mais aussi des instructions (par exemple, des décalages) qui sont des langages de bas niveau mais souvent pas dans des langages de haut niveau .

1
GreenMatt

C est la langue de niveau intermédiaire BECOZ nous pouvons utiliser le code dans le langage d'assemblage que légère différence pointeur le rendre puissant (si le pointeur supprime dans c alors il sera considéré en bas niveau) C'est une fonctionnalité portable qui fait le niveau moyen on peut donc dire que c'est un langage de niveau moyen.

0
user3339945

Les langages de bas niveau sont très proches du langage machine qui peut être binaire ou RTL. Difficile à écrire et très rapide à exécuter. Il peut interagir avec le matériel et le langage de programmation de haut niveau est très facile à écrire mais peut être exécuté après la compilation.

0
satya pati

tout est relatif ... le "niveau" reflète la quantité d'abstraction.

0
user3362761

Une fois que vous ajoutez un éventail de niveaux d'un langage de programmation, vous ajoutez des nuances à la définition. Clairement, le code machine et l'assemblage dépendent de la machine. C et C++ sont en théorie indépendants de la machine, mais en réalité, ils ne sont pas universels. En C, des éléments comme l'alignement doivent être pris en compte et vous pouvez toujours gérer la pile en C et dans le sous-ensemble C de C++) via un pointeur et une seule variable initialisée - si vous êtes assez fou - pour que (x86) le n'est jamais utilisé. Donc C, oui c'est le niveau moyen. Tout le reste est à un niveau très élevé.

0
cdcdcd