121 votes

Pourquoi limiter artificiellement votre code au C ?

Cette question fait suite à une réponse que j'ai donnée à une personne de l'Union européenne. question actuelle qui pose la question d'une bibliothèque générique pour le C - l'auteur de la question précise qu'il ne veut pas utiliser le C++. La question que je lui pose, ainsi qu'aux autres personnes qui insistent pour utiliser le C, est la suivante : pourquoi le font-ils alors qu'ils le font ?

  • C++ fournit les caractéristiques spécifiques qu'ils demandent
  • Leur compilateur C est presque certainement en réalité un compilateur C++, ce qui n'a aucune incidence sur le coût du logiciel.
  • Le C++ est tout aussi portable que le C
  • Le code C++ peut être aussi efficace que le C (ou plus, ou moins).

Veuillez noter : Je n'ai pas l'intention d'argumenter - je suis sincèrement intéressé par les motivations du choix de la langue.

Edit : Il a été suggéré qu'il s'agissait d'un doublon, mais je ne le pense pas. Pour clarifier, je m'intéresse aux raisons pour lesquelles les gens se limitent au sous-ensemble C. Par exemple, l'auteur du message auquel j'ai fait référence aurait pu conserver tout son ancien code C et se contenter d'utiliser les conteneurs génériques C++ comme "meilleurs tableaux" - je m'intéresse à la raison pour laquelle les gens sont si réfractaires à cette idée. Je ne suis pas intéressé par les raisons pour lesquelles vous devriez ou ne devriez pas apprendre le C ou le C++.

Le message de Peter Kirkham était pour moi le plus instructif, en particulier en ce qui concerne les questions relatives à la C99 que je n'avais pas prises en compte, et je l'ai donc accepté. Merci à tous les autres participants.

3voto

dubnde Points 2100

J'utilise le C++ avec la programmation C pour deux raisons :

  • vector et string pour me débarrasser de la gestion de la mémoire du tableau
  • une vérification stricte du type et des lancers pour avertir et/ou attraper toutes les nuisances que je manquerais autrement.

C'est donc du C qui emprunte un peu de c++ mais en utilisant le compilateur c++ autant que possible. Comme quelqu'un d'autre l'a dit dans les réponses, je trouve maintenant que j'apprends plus de C++ de cette façon et là où le C serait trop impliquant, j'utilise le C++. Monitor/Lock utilisant RAII est l'un de ces éléments que j'ai utilisé récemment pour traiter des programmes multithreads et une autre construction similaire pour ouvrir/fermer des fichiers.

3voto

Je pense que le C est plus portable. Il y a environ 5 ans, j'ai travaillé sur le portage d'un code sur plusieurs versions d'Unix (AIX, Irix, HPUX, Linux). Le code C était facile à porter, mais nous avons eu divers problèmes pour porter certains codes C++. Peut-être s'agissait-il simplement d'environnements de développement immatures, mais je préférerais de loin utiliser le C plutôt que le C++ pour cette raison...

3voto

Friedrich Points 4058

Je peux suivre de nombreuses suggestions ici dans les deux sens. Mais en fin de compte, on en revient à a) comparable simple b) comparable complexe.

Je n'ai pas la moindre idée si quelqu'un a "inventé" une sorte de mesure de la complexité du langage.

Sur une échelle de 0 à 10, je classerais probablement le C à 2 ou 3, tandis que le C++ se situerait entre 8 et 10. Je dirais que le C++ est l'un des langages les plus complexes, mais je ne connais pas Ada, PL1 ou autre, alors peut-être n'est-il pas si complexe par rapport à d'autres langages.

Le C++ hérite de toute la complexité du C, il ne peut donc pas être inférieur au niveau de complexité du C.

Pour ma part, je serais beaucoup plus à l'aise en utilisant un langage de script et le C. Au final, il faut donc répondre à la question suivante. "Est-ce que plus est toujours mieux ?"

2voto

weismat Points 4354

Si vous travaillez dans un environnement avec deux langages, vous pouvez utiliser le C pour certaines fonctions de bas niveau critiques pour les performances et un langage plus fonctionnel/de haut niveau comme C#/Java pour la logique métier. Si du code C++ est utilisé pour ces fonctions, des enveloppeurs C sont nécessaires pour le code JNI/non géré autour et cela rend les choses plus complexes que si l'on utilise uniquement le C.

2voto

Il y a trois raisons auxquelles je pense. La première est que le C est plus adapté aux systèmes embarqués, en raison de la petite taille de ses binaires et de la plus grande disponibilité des compilateurs C sur n'importe quel système. La deuxième est la portabilité : Le C est un langage plus petit, et le code C ANSI se compile partout. Il est plus facile de briser la portabilité en C++. Le dernier point est le langage lui-même. Le C++ est plus difficile, et est très certainement un langage très mal conçu. Les griefs de Torvalds sont rapportés ci-dessus. Vous pouvez également consulter les réponses aux questions fréquemment posées sur le C++ ( http://yosefk.com/c++fqa/ ).

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