Contenu | Rechercher | Menus

Annonce

Si vous avez des soucis pour rester connecté, déconnectez-vous puis reconnectez-vous depuis ce lien en cochant la case
Me connecter automatiquement lors de mes prochaines visites.

À propos de l'équipe du forum.

#1 Le 14/12/2007, à 06:00

Bud78

Différences C/C++ - Demande de précision

Bonjour,

Je me suis mis à  apprendre le C et j'arrive à  coder maintenant en C à  peu près proprement. Mais avant de me lancer vraiment dans le projet qui me motive sur le sujet, j'ai regardé un peu le C++. En lisant des articles sur les différences entre le deux, je ne vois que des intérêts à  passer en C++ dans la mesure o๠tout ce qui ait codé en C est compilable en C++ mais ces articles sont généralement écrit par les défenseurs du C++. Je me demandais donc si il y a des inconvénients au C++ par rapport au C, donc des choses qu'on peut faire en C qu'on ne pourrait pas faire en C++.
Pour situer mes centres d'intérêts sur le sujet, je précise que je voudrais coder une appli professionnelle en opensource qui communiquera avec une base de données MySql, et comme environnement graphique j'envisage d'utiliser GTK.
Je précise que ce n'est pas un troll, c'est vraiment qu'avant de passer en C++, je voudrais être certain que je fais pas une connerie. Mon intérêt premier pour le C++, tient dans la plus grande simplicité de manipulation des strings. Puis dans le fait qu'il me semble que je pourrais gagner pas mal de temps en codant en programmation orienté objet tout ce qui touche à  la manipulation des enregistrements de la base.
Inutile de me proposer des langages de plus haut niveau, c'est bien en C ou C++ que je souhaite coder, là  dessus pas d'ambiguité je sais ce que je veux.

Merci de vos commentaires


«Tout ce qui a son prix est de peu de valeur.»
[ Friedrich Nietzsche ] - Extrait de Ainsi parlait Zarathoustra

Hors ligne

#2 Le 14/12/2007, à 06:24

slasher_fun

Re : Différences C/C++ - Demande de précision

Bud78 a écrit :

je pourrais gagner pas mal de temps en codant en programmation orienté objet tout ce qui touche à  la manipulation des enregistrements de la base.

Voilà , tu as tout compris : le C++ est orienté objet, contrairement au C. Je viens de me faire un module de 4 mois de C++ après 2 ans de C, bah c'est pas plus compliqué à  comprendre, et dans certains cas les objets simplifient bien les tà¢ches et le code smile

Hors ligne

#3 Le 14/12/2007, à 09:43

Karl_le_rouge

Re : Différences C/C++ - Demande de précision

> ah c'est pas plus compliqué à comprendre
Toi t'as pas encore touché à la STL ;-)

Le C++ ne se limite pas à l'ajout du support du paradigme objet dans le C, il y a également quelques petites "améliorations" au C classique (d'où les incompatibilités), des ajouts (gestion des exceptions, templates, surcharge des opérateurs etc ...)

> et comme environnement graphique j'envisage d'utiliser GTK
Si tu comptes faire du C++, je te recommande d'utiliser les wrappers C++ avec Gtkmm.

Hors ligne

#4 Le 14/12/2007, à 09:55

Pecky

Re : Différences C/C++ - Demande de précision

Salut,

Effectivement, LA grosse différence étant l'orienté objet du C++. Ce qui change fondamentalement c'est la conception de ton projet : faire une abstraction sous forme d'objets là  o๠on raisonnait sous forme procédurale...
C'est un peu déroutant au début mais après on ne peut plus sans passer. Je te conseille tout de même de regarder vers les méthodes d'analyse tel que l'UML et/ou Merise (pour la partie BDD).

Hors ligne

#5 Le 14/12/2007, à 15:07

Luc Hermitte

Re : Différences C/C++ - Demande de précision

Les deux derniers avantages que je vois au C:
- Il n'y a pas ABI standardisée en C++. Concrêtement, deux compilos C++ différents pourront produire des choses (comme des bibliothèques) non compatibles. Le C n'a pas ses problèmes
- On n'a pas toujours de compilo C++ de qualité sur certaines plateformes exotiques.

Le C est en gros le latin de l'informatique : la langue universelle parlée par tous.

Pour le reste, tu peux faire du C tout en prenant tel ou tel aspect du C++ qui te simplifira la vie
- la SL (std::string en particulier)
- la généricité (à  la template)
- les références
- les exceptions
- ...
Cela n'a même pas besoin d'être l'aspect OO.

Attention toute fois que certains aspects du C++ en entraines d'autres (std::string tire new, new tire les exceptions, ...), ce qui implique qu'il faut changer sa manière de concevoir la gestion de la mémoire si on veut faire des programmes corrects, même en situations non nominales.

#6 Le 14/12/2007, à 15:09

Luc Hermitte

Re : Différences C/C++ - Demande de précision

s/ses/ces/
s/entraine\zss/nt/

#7 Le 14/12/2007, à 15:33

Bud78

Re : Différences C/C++ - Demande de précision

Luc Hermitte a écrit :

Pour le reste, tu peux faire du C tout en prenant tel ou tel aspect du C++ qui te simplifira la vie
- les références

Sur ce point particulier, je suis assez sceptique. En théorie, j'ai lu que les références devraient me simplifier la vie, mais personnellement je trouve ça presque moins clair que les pointeurs. Je vois pas bien en quoi c'est plus simple, ça aurait même plutà´t tendance à  m'embrouiller.
Par contre, c'est vrai que pour l'allocation dynamique, y a pas photo.

Bon, en tout cas, je note après vos avis que je peux aller tranquillement vers le C++, quitte à  continuer sur certains aspects à  coder comme en C.


«Tout ce qui a son prix est de peu de valeur.»
[ Friedrich Nietzsche ] - Extrait de Ainsi parlait Zarathoustra

Hors ligne

#8 Le 14/12/2007, à 15:51

Luc Hermitte

Re : Différences C/C++ - Demande de précision

Quand il y a une référence,
- on n'a pas à  se poser la question si la donnée pointée peut être nulle ou pas
- on n'a pas à  se poser la question si la responsabilité de la donnée est transférée à  l'appelant

Quand on reprend du code "hybride" avec des pointeurs là  o๠ils n'apportent rien, retracer les cycles de vie des données devient vite infernal.

#9 Le 14/12/2007, à 16:13

verbose

Re : Différences C/C++ - Demande de précision

Pour un développeur C, l'inconvénient majeur du C++ est qu'il doit apprendre de nouveau concept. On ne programme pas en POO de la même façon qu'en procédural. Comme avec tout nouveau langage, il faut plusieurs années d'expérience avant de se sentir à  l'aise.

Hors ligne

#10 Le 14/12/2007, à 23:30

Le Farfadet Spatial

Re : Différences C/C++ - Demande de précision

Salut à  tous !

   Personnellement, je pense que généralement il y a beaucoup à  gagner à  utiliser le C++ plutà´t que le C. Les deux seuls cas o๠je pense qu'on peut se poser la question (encore que C++ a de nombreux arguments à  faire valoir), c'est pour la création de compilateurs et de noyaux de systèmes d'exploitations. Pour le reste, je pense que C++ est généralement plus approprié : il permet un meilleur contrà´le du code --- donc moins de bogues, ces dernières étant plus facile à  retrouver --- et une plus grande productivité, pour des performances équivalentes.

   Cela dit, attention : C++ != C with classes. En effet, il y a beaucoup plus que simplement l'apparition de l'orienté objet dans C++. Surtout, il faut éviter de coder du C saupoudré de quelques fonctionnalités de C++. C++ est bien un langage différent de C et si sa compatibilité presque complète avec C lui a permis de rapidement s'imposer, c'est désormais un très gros handicape pour le langage, qui est extrêmement souvent mal utilisé et mal enseigné. En fait, pour le C++, il n'y a qu'une seule référence à  laquelle tu puisses faire confiance :

      Bjarne STROUSTRUP, Le langage C++, Pearson Education

   Bjarne STROUSTRUP est le créateur du langage.

   Je te conseille de jeter un coup d'Å“il approfondit au C++. Toutefois, évite de faire du C saupoudré d'un peu de C++ : c'est inefficace et souvent sources de bogues étranges.

   à€ bientà´t.

                                                                                                          Le Farfadet Spatial

Hors ligne