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.

8voto

LegendLength Points 327

Le développement du noyau de Windows ne supporte pas le c++ (malheureusement).

7voto

Paul Dixon Points 122033

Vous pouvez lire un article divertissant sur les raisons pour lesquelles Linus Torvalds privilégie le C. ici

6voto

Nick Points 8126

Le code natif sur un Mac est Objective-C. Le code natif sur un PC est c (window.h) ou c++ (mfc). Ces deux environnements vous permettront d'utiliser le c avec peu ou pas de changements. Lorsque je veux qu'une bibliothèque de code soit multiplateforme, le c ansi semble être un bon choix.

5voto

Alan Bradley Points 31
  1. Le C est un langage simple, le C++ ne l'est pas. Pour de nombreuses personnes, le C++ est tout simplement trop compliqué pour être maîtrisé, cf. http://en.wikipedia.org/wiki/C%2B%2B#Criticism .

  2. En raison de cette complexité, les différents programmeurs ne maîtrisent généralement que différents sous-ensembles du langage. Cela rend la lecture du code d'autres personnes pénible.

  3. La complexité et les pièges de la langue ajoutent trop de distractions et nuisent parfois à la productivité. Au lieu de me concentrer sur le travail lui-même, je me suis souvent retrouvé à me battre avec le langage lui-même. Java/python sont des alternatives plus productives.

  4. Le débogage d'un code C défectueux est généralement beaucoup plus simple que le débogage d'un code C++ défectueux.

  5. Contrairement à Java/C#, la bibliothèque standard C++ ne dépasse guère la portée de la bibliothèque standard C.

  6. Certains programmeurs célèbres comme Linus Torvalds (Linux) et Richard Stallman (Emacs) n'aiment pas le C++.

4voto

David Thornley Points 39051

Je peux penser à plusieurs raisons.

Il se peut qu'il n'existe pas de compilateur C++ satisfaisant. Le C++ est un langage beaucoup plus vaste, et j'ai fait tourner des compilateurs C sur des systèmes qui ne seraient pas capables de gérer le C++ moderne.

L'auteur de la question, ou les personnes avec lesquelles il travaille, peuvent connaître le C mais pas le C++.

Le projet peut être en C. Bien qu'il soit possible d'ajouter certaines fonctionnalités du C++ au C, cela peut facilement conduire à un désordre non maintenable. Je suggère de choisir un langage ou l'autre (généralement C++, lorsque c'est possible).

L'auteur de la question a peut-être une vision obsolète de la courbe d'apprentissage du C++. (Lorsqu'elle est abordée correctement, elle est plus facile que celle du C.) La plupart des livres d'introduction que j'ai vus ne l'abordent pas correctement).

N'oubliez pas que le C et le C++ sont deux langages différents, et qu'ils le deviennent de plus en plus avec le temps. Coder dans les deux à la fois est une mauvaise idée, et l'utilisation d'un sous-ensemble du C++ ressemblant au C ne permet pas de profiter de la plupart des avantages du C++.

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