Pourquoi la plupart des programmes Linux sont-ils écrits en C?

Pourquoi la plupart des programmes Linux sont-ils écrits en C? Pourquoi ne sont-ils pas écrits en C ++, ce qui est plus récent?

Il y a eu beaucoup de discussions à ce sujet. Principalement, la raison est philosophique. C a été inventé comme un langage simple pour le développement du système (pas tellement le développement d'applications). Il y a beaucoup d'arguments pour utiliser C ++, mais il y en a autant pour ne pas utiliser C ++ et coller à C.

En fin de count, c'est un problème historique. La plupart des trucs d'application sont écrits en C, car la plupart des trucs du kernel sont écrits en C. Et depuis, la plupart des trucs ont été écrits en C, les gens ont tendance à utiliser les langues d'origine.

À ce stade, quelqu'un peut requestr «OK, alors pourquoi le kernel est-il écrit en C et non porté en C ++? . Cela a été discuté sur kerneltrap il y a quelques time. Une belle explication qui peut être citée à partir de ce fil de discussion est une réponse de yoshi314 (citant directement):

c'est parce que presque chaque application c ++ a besoin d'une bibliothèque standard c ++ séparée pour fonctionner. donc ils devraient le porter au kernel, et s'attendre à un surcoût supplémentaire partout.

c ++ est un langage plus complexe et cela signifie que le compilateur crée un code plus complexe à partir de celui-ci. à cause de cela, find qu'un problème provient d'un bug du compilateur, plutôt que l'erreur de code est plus facile dans c.

le langage c est plus barebone, et il est plus facile de suivre sa représentation d'assemblage, ce qui est souvent facile à prédire.

c ++ est plus polyvalent, mais c est plus adapté pour les trucs bas niveau ou embarqués.


D'autre part, "la plupart des programmes Linux" est très trompeur. Jetez un oeil à des applications charts. Python est de plus en plus ancré dans les environnements GUI sous Linux. A propos de la même chose qui se passe avec Windows et .NET.

Après avoir lu le courriel suivant de Linus Torvalds le créateur de linux. Je ne peux pas m'empêcher de penser que la réponse ci-dessus est incorrecte. Il semble penser que les programmeurs C ++ ne sont pas de bons programmeurs de systèmes . Et que les fonctionnalités supplémentaires en C ++ causent souvent plus de problèmes à long terme par rapport aux avantages qu'ils apportent à court terme. Bien que l'on puisse être en désaccord avec lui, il est difficile de sous-estimer l'influence qu'il a eu sur le operating system Linux.

http://harmful.cat-v.org/software/c++/linus