3 votes

Pourquoi le C++ est-il un langage de niveau intermédiaire ?

Pourquoi le C++ est-il un langage de niveau intermédiaire ? Il peut presque tout faire et le système d'exploitation le plus utilisé au monde est écrit avec ce langage.

[Note : SO C++ Info citations de pages Wikipedia citant C++ The Complete Reference Third Edition par Herbert Schildt,

Il est considéré comme un langage de "niveau intermédiaire", car il comprend une combinaison de caractéristiques de langage de haut niveau et de bas niveau.

- Potatoswatter]

10voto

Alex Martelli Points 330805

La "langue moyenne" n'est pas l'anglais, donc il faut deviner ce que vous voulez dire. moyenne . Si vous voulez dire "un langage de niveau intermédiaire d'abstraction", c'est une évaluation juste, bien que vous ayez raison de dire que, par rapport à la plupart des autres langages, il s'étend pour couvrir un domaine inconfortable. grand site une gamme de niveaux d'abstraction.

Les langages qui fournissent (d'abord et avant tout) un ramassage automatique et intrinsèque des déchets travaillent clairement à un niveau d'abstraction plus élevé -- probablement trop éloigné de la machine pour être pleinement utilisable pour les parties de plus bas niveau des noyaux, des pilotes de périphériques, etc., mais beaucoup plus pratique et exempt de bogues de gestion de la mémoire que les langages qui n'offrent pas une telle possibilité (ou qui ne l'offrent qu'à travers des pointeurs "prétendument intelligents" qui font typiquement une GC extrêmement rudimentaire -- souvent aussi rudimentaire que le comptage de références ( !), à mille lieues des architectures GC modernes). Presque tous les langages répandus déployés après C++ ont inclus le garbage collection dans leurs caractéristiques intrinsèques.

À l'autre extrémité du spectre, les langages d'assemblage spécifiques aux machines travaillent clairement à un niveau d'abstraction inférieur à celui du C++ (il est d'ailleurs courant que les compilateurs C++ fournissent, en tant qu'extensions non standard, la possibilité d'intégrer le langage d'assemblage afin de permettre aux programmeurs avancés d'utiliser ses fonctionnalités lorsque cela est justifié).

En ce qui concerne "le système d'exploitation ( ?) le plus répandu dans le monde", la question devient difficile à trancher -- de plus en plus de gadgets de toutes sortes, par exemple, sont basés sur un noyau Linux, des téléphones (pensez à Android) aux téléviseurs &c (j'ai trouvé amusant il y a quelques mois, en déballant et en installant mon téléviseur à écran plat, mon lecteur DVD Blu-Ray et mon enregistreur numérique récemment achetés, de découvrir que chacun d'entre eux était livré avec un DVD contenant certaines des sources de ses logiciels. . il le fallait, voyez-vous, puisque ces logiciels sont basés sur Linux, bien sûr!-). ).

Au moins dans le cas de Linux, il est facile de vérifier que le langage de base n'est pas le C++, mais le C (qui est en réalité un langage très différent, bien sûr - par exemple, il n'offre même pas les "pointeurs intelligents" sur la base desquels certains soutiennent que le C++ ). fait ont GC;-). Essayez simplement de confondre C et C++ à proximité de Pike ou Thompson... et si vous le faites, soyez prêt à vous défiler. rapide juste au cas où ils pourraient trouver quelque chose de lourd à vous jeter dessus !-) ((Je soupçonne que d'autres de leurs ex-collègues des Bell Labs, comme Ritchie, pourraient réagir de la même manière, mais je ne le sais pas de première main, comme je le fais avec ceux qui sont mon collègues aujourd'hui ;-)).

Il en va de même pour les systèmes d'exploitation qui équipent les produits extrêmement populaires d'Apple (Macs, iPhones, iPads, ...) : Objective C pour la programmation des applications, mais C lui-même pour le noyau &c, c'est-à-dire au cœur même du système (si les OS d'Apple, en tant que tels, ne sont pas open-source, les traces de BSD et de Mach y sont encore très claires et visibles). Je crois que la plupart des autres téléphones (les Blackberries, les produits de Nokia, qu'il s'agisse de Symbian ou de Maemo, les offres actuelles de Windows Mobile) reposent également sur le C au cœur du système, et non sur le C++ (on peut facilement le vérifier pour les systèmes à code source ouvert, mais pas aussi facilement pour les systèmes à code source fermé, mais, encore une fois, tous les indices vont dans ce sens).

Si vous pensez à Windows, je suis à peu près sûr (jusqu'à l'époque de Win 2000 inclus, du moins, d'après les tentatives de recrutement que Microsoft m'a adressées à cette époque) que le noyau était également basé sur C, et non sur C++ (je ne sais pas s'il a été entièrement réécrit pour XP, Vista, Windows 7 -- ce serait étonnant, mais, bien sûr, cela n'en fait pas pour autant un système de gestion de la qualité). impossible ;-).

Globalement, il me semble que le langage dominant pour les cœurs de tous les systèmes d'exploitation répandus sera très probablement le C, et non le C++. Aucune raison intrinsèque, du moins une raison raisonnable sous-ensemble de C++ ne pourrait pas être utilisé à la place (je peux programmer en C aussi bien qu'en C++, mais bon sang que cela me manque ! modèles quand je le fais!-), mais il ne semble pas y avoir assez de "demande effective" pour que cela soit possible. se produire !-)

2voto

Potatoswatter Points 70305

Compte tenu du contexte que j'ai ajouté à la question, qui, je suppose, est la raison pour laquelle vous avez posé cette question particulière, ici, Herbert Scheidt a dit qu'il est de niveau moyen en raison d'une sorte de concept bizarre de prendre la moyenne de "haut" et "bas".

Les langages informatiques ont tendance à être compliqués, et il est inutile de les classer sur un continuum particulier. (Une exception est cours de grammaire dans ce cas, le C++ se classe vers l'extrémité poilue, étant sensible au contexte).

Le C++ (avec un compilateur récent) est l'un des rares langages qui vous permet d'intégrer du code en langage assembleur dans une fonction "lambda" de première classe, fortement typée. Cela conforte sa position dans les catégories de bas niveau et de haut niveau.

Je ne pense pas que beaucoup de gens concluraient que le fait d'être les deux le place au milieu, cependant.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X