Pourquoi C est-il toujours dans la catégorie du langage de haut niveau? [fermé]

12

De nombreux manuels sur le langage de programmation C indiquent que C est un langage de programmation de haut niveau, mais de nombreux tuteurs en ligne disent que C est également un langage de programmation de niveau intermédiaire. Pourquoi est-ce comme ça?

CodeIt
la source
3
lecture recommandée: Discutez de ce $ {blog}
gnat
6
Je compatis à votre confusion. C'est le genre de classification qui m'agacerait de voir un examen car même une «mauvaise» réponse est correcte. Je vous prie de ne jamais avoir cela comme une question d'examen vrai / faux ou à choix multiple. Si vous le faites, répondez en fonction de ce que dit le manuel, et non de ce que vous pensez être correct (je me sens mal de recommander d'aller à l'encontre de vos tripes).
Brandon
1
Historiquement, les «langages de haut [er] niveau» étaient ceux qui, contrairement au langage d'assemblage, permettaient au programmeur d'abstraire de la machine spécifique et d'écrire du code d'une manière plus problématique. Fortran et Cobol étaient «de haut niveau» à cause de cela au début. C n'est qu'un mince voile au-dessus des éléments spécifiques à la machine, mais son but même est d'être portable, non spécifique à la machine. Donc, dans les années 1960, les normes C étaient de haut niveau. Comparé à C ++ 14 ou Haskell ou OCaml ou Rust, C n'est pas si élevé, bien sûr.
9000
La plupart de ces "langages modernes de haut niveau" "ne sont en réalité que des langages de script. La différence est qu'elle est compilée ou interprétée.
MarcusJ
Asm est de haut niveau. L'abstraction fournie par asm sur le matériel est énorme.
curiousguy

Réponses:

34

Historiquement, tout ce qui résume le code assembleur était appelé de haut niveau. C le fait certainement. Cette définition est également relativement claire, contrairement à ce qui suit.

Au fil du temps, nous avons créé de plus en plus de langages de programmation et inventé de plus en plus d'abstractions et d'outils. Comparé, disons, à Python, le langage C est positivement primitif en termes de richesse sémantique et de niveau d'abstraction par rapport au matériel. Dans cet esprit, beaucoup de gens trouvent trompeur d'appeler C de haut niveau, alors qu'il existe une multitude de langages qui sont bien plus élevés que le matériel.

Alors maintenant, "de haut niveau" signifie généralement "beaucoup d'abrégés sur du matériel" et "bas niveau" signifie "peu d'abrégés". C'est la définition que vos tuteurs utilisent. Tout le monde n'est pas d'accord cependant, et les anciens textes n'adoptent pas comme par magie la nouvelle terminologie, donc vous voyez toujours l'ancienne utilisation de "haut niveau" (sous laquelle C est de haut niveau) flottant autour. Gardez à l'esprit que de nombreux bons livres C sont essentiellement de nouvelles éditions de livres publiés il y a vingt ans.


la source
Pour que quelque chose soit considéré comme un langage de programmation de bas niveau approprié, il doit permettre à un programmeur de fonctionner facilement au même niveau d'abstraction que le matériel sous-jacent. Alors que la norme C permettrait aux implémentations de se comporter de cette manière, il n'y a pas de distinction formellement reconnue entre les implémentations qui opèrent à ce niveau d'abstraction et celles qui ne le font pas.
supercat
12

Il s'agit d'un langage de niveau supérieur au code machine (assemblage), ce qui est le point de vue d'où proviennent les livres de programmation C et les didacticiels.

À cet égard, il s'agit d'un langage de programmation de haut niveau.

Cependant, il est toujours très proche du matériel - beaucoup plus que d'autres langages plus modernes (Java, C # et autres) - vu de ce point de vue, c'est un langage de programmation de niveau intermédiaire.

Oded
la source
1
Alors pourquoi ne pouvons-nous pas dire clairement que C est un langage de programmation de niveau intermédiaire, ce que nous ne trouvons pas dans les manuels.
CodeIt
5
@manutd - c'est une question pour les auteurs de livres;) - mais c'est la chose. De leur point de vue, C est un langage de haut niveau. C'est de cela qu'ils traitent. Le concept de «langage de haut niveau» est flou - il n'y a pas de définition unique acceptée par tous.
Odé
Malheureusement, s'accorder sur des opinions dans une communauté n'est pas la manière de définir. Ses créateurs et ses concepts sont de niveau supérieur au langage d'assemblage du processeur - c'est la ligne de définition. C'est ce qui le définit comme de haut niveau. Tout livre que vous prenez sur l'informatique le définira toujours de cette façon. Les tuteurs ne le peuvent pas et les opinions des gens ne le peuvent pas, mais la science réelle du fonctionnement des ordinateurs et de sa définition dans la science des ordinateurs et des processeurs est très claire.
Ryan Rentfro
C # permet aux programmeurs d'accéder à une plage de mémoire sous la forme d'une séquence de valeurs 64 bits, 32 bits, 16 bits ou 8 bits selon les besoins; si la mémoire contient des pixels 16 bits, par exemple, le code peut traiter les pixels individuellement ou par groupes de 2 ou 4, selon ce qui convient le mieux à l'algorithme. C tel que défini par la norme ne définit pas de moyen pratique par lequel les programmeurs peuvent demander une sémantique similaire. De nombreux dialectes C sont de niveau inférieur à C #, bien sûr, mais le langage défini par la norme ne l'est pas.
supercat