Pour chaque nouveau programme ou bibliothèque de bas niveau que j’écris sur les systèmes POSIX, je dois toujours commencer par prendre la décision initiale: est- ce que je l’écris dans C ou si je vais avec C ++? J’aime penser que chaque fois que je prends une décision relativement éclairée, je me demande s’il manque quelque chose.
Ce n’est pas une meilleure question, mais plutôt quels aspects de chacun sont meilleurs ? Probablement, chacun a des forces convaincantes. Dans quels cas devrais-je choisir l’un au lieu de l’autre?
Par exemple, voici quelques points que je considère. Qu’est-ce qu’il me manque d’autre?
C ++ a simplement beaucoup plus de fonctionnalités que C. Cela en fait un langage plus complexe. Mais l’avantage de ces fonctionnalités est que vous devrez écrire (et maintenir) moins de code.
Vous n’êtes pas obligé d’utiliser des templates, stl, des exceptions, des surcharges de fonctions ou toute autre fonctionnalité C ++. Mais si votre problème ne nécessite qu’une de ces fonctionnalités, votre programme sera plus lisible si vous le faites en C ++, plutôt que d’émuler les fonctionnalités manquantes dans C.
Je pense que vous rendez les choses plus compliquées qu’elles ne le sont réellement. Quelle langue êtes-vous le plus à même d’exprimer votre idée? Si ni l’un ni l’autre, et si vous êtes un débutant à la fois, utilisez C; Sinon, si vous êtes doué, choisissez ce que vous voulez. Sinon, cela ne compte pas autant que de commencer.
Alice : Voulez-vous me dire, s’il vous plait, de quelle façon je devrais partir d’ici?
The Cat : Cela dépend beaucoup de l’endroit où vous voulez vous rendre
Alice : Je me fiche pas mal où.
Le chat : Peu importe la manière dont vous allez.
Alice : tant que j’arrive quelque part.
Le chat : Oh, tu es sûr de faire ça, si seulement tu marches assez longtemps.
Vous avez oublié de mentionner qu’en C ++, il existe des destructeurs qui sont appelés automatiquement, donc, lorsqu’ils sont utilisés correctement (RAII), vous n’avez pas à vous soucier de la libération de ressources. Une autre fonctionnalité intéressante concerne les exceptions qui pourraient faciliter la gestion des erreurs et la rendre plus facile à gérer.
Pour moi, il n’y a que deux raisons d’utiliser C. Premièrement, si le code doit être extrêmement portable (pour être utilisé comme bibliothèque dans différents langages et / ou systèmes d’exploitation), et ensuite si vous avez besoin de vitesse brute, n’est généralement pas un gros problème car C ++ ne fonctionne généralement que légèrement plus lentement que c (sans les fonctionnalités OO).
J’apprécie vraiment les fonctionnalités OO de C ++, qui si elles sont utilisées correctement peuvent rendre la vie beaucoup plus facile lors du développement d’applications.
On dirait que vous préférez le C sur C ++. Moi aussi. Cependant, la facilité d’utilisation est le facteur le plus important dans la programmation. C ++ a un meilleur support des chaînes et plus de bibliothèques, donc pour les projets non sortingviaux, tels que l’access à la firebase database et d’autres choses du même genre, optez pour C ++. Si vous visez une plate-forme croisée et que vous souhaitez peut-être travailler à un niveau inférieur, utilisez C. De plus, ils sont tous les deux identiques.
C ++ est meilleur dans presque tous les sens: plus sûr, plus efficace, fonctionne mieux dans les grands projets … La seule exception est que vous ne pouvez pas l’utiliser lorsque vous êtes en interface avec d’autres langages. Mais dans ce cas, vous utilisez toujours C ++ et ajoutez une petite couche C pour la partie d’interfaçage.
C présente certains avantages par rapport à C ++ au début d’un projet, il est plus simple, plus facile et nécessite moins de décisions de conception. Cependant , à mesure que le projet se développe, les avantages du C ++ et du code orienté object, qui sont essentiellement: l’encapsulation, l’abstraction et le masquage des informations, augmentent également. L’inconvénient est généralement un code légèrement plus lent, sauf si vous cassez l’encapsulation.
Oui, il est également possible d’écrire comme C ++ en C, mais c’est beaucoup plus complexe et difficile à maintenir.
Quand j’ai le choix, je vais avec un sous-ensemble de C ++.
Vous obtenez toujours les avantages des classes et du RAII.