OVH Cloud OVH Cloud

Les avantages respectifs de C et du C++

59 réponses
Avatar
leo.hal
Bonjour,

Comme j'h=E9site entre apprendre le C et apprendre le C++ , je cherche a
peser le pour et le contre; d'o=F9 ma question :
Quels sont les avantages du C et du C++ ?

Merci

9 réponses

2 3 4 5 6
Avatar
Pascal Bourguignon
Jean-Marc Bourguet writes:

(Marc Espie) writes:

Les vrais bons programmeurs C/C++ ont quelques notions d'informatique
theorique, savent reconnaitre la recursion terminale, et savent que leur
compilateur favori, qu'ils ont choisi avec amour, sait egalement reconnaitre
la recursion terminale.


Je n'ai pas choisi *les* compilateurs que j'utilise au boulot. Il y a une
equipe pour cela (qui fixe aussi les patchs et les versions de l'OS et les
options a utiliser pour le compilateur). Et je suis loin d'etre sur que
tous reconnaisse la recursivite terminale. En fait, je ne connais la
reponse que pour un... et encore, j'ai pas verifie pour la version exacte
que nous employons (pour diverses raisons, nous avons toujours quelques
version de retard sur le "bleeding edge").


C'est bien malheureux, mais c'est pour ça qu'ils te donnent une
compensation financière.

Comme je n'ai pas été payé pour écrire cette fonction récursive, j'ai
pu prendre ce plaisir, et la compiler avec un compilateur adéquat.

--
__Pascal Bourguignon__ http://www.informatimago.com/

This universe shipped by weight, not volume. Some expansion may have
occurred during shipment.


Avatar
Ael-Rowan TERENCE
"Radamanthe" a écrit dans le message de
news:45b14483$0$5476$
Pascal Bourguignon wrote:
writes:
Comme j'hésite entre apprendre le C et apprendre le C++ , je cherche a
peser le pour et le contre; d'où ma question :
Quels sont les avantages du C et du C++ ?


Certains ont la théorie que ce ne sont pas le même langage, mais ce
n'est pas mon avis.


Le problème, c'est qu'à défaut de théorie, c'est une réalité...



Ce que je trouve amusant c'est que, à chaque fois :
- les partisans du C minimisent les différences entre les deux langages
( et pourtant il y a un gouffre )
- les partisans du C++ renient tous liens avec le C ( et pourtant je
peux écrire un programme C qui passera sans encombre sur un compilateur
C++).



Avatar
Jean-Marc Bourguet
"Ael-Rowan TERENCE" writes:

"Radamanthe" a écrit dans le message de
news:45b14483$0$5476$
Pascal Bourguignon wrote:
writes:
Comme j'hésite entre apprendre le C et apprendre le C++ , je cherche a
peser le pour et le contre; d'où ma question :
Quels sont les avantages du C et du C++ ?


Certains ont la théorie que ce ne sont pas le même langage, mais ce
n'est pas mon avis.


Le problème, c'est qu'à défaut de théorie, c'est une réalité...



Ce que je trouve amusant c'est que, à chaque fois :
- les partisans du C minimisent les différences entre les deux langages
( et pourtant il y a un gouffre )


Pas vu tellement de gens dans ce cas, a part les trolls. Et Pascal ici
joue au troll.

- les partisans du C++ renient tous liens avec le C


Pas vu tellement de gens dans ce cas non plus. J'en ai vu qui veulent
rompre avec les imperatifs de compatibilite avec le C, mais j'en ai vu
d'autres qui militent pour la suppression des incompatibilites ou c'est
possible.

( et pourtant je peux écrire un programme C qui passera sans encombre sur
un compilateur C++).


J'ai deja argue -- principalement dans le groupe C -- qu'il etait sense de
se limitter au sous-ensemble commun, mais je reconnais sans probleme que le
resultat n'est idiomatique ni dans un langage, ni dans l'autre. Dans le C
on peut dire que les differences sont stylistiques (la principale etant le
cast du resultat de malloc); dans le cas du C++ c'est beaucoup moins vrai.

A+

--
Jean-Marc
FAQ de fclc++: http://www.cmla.ens-cachan.fr/~dosreis/C++/FAQ
C++ FAQ Lite en VF: http://www.ifrance.com/jlecomte/c++/c++-faq-lite/index.html
Site de usenet-fr: http://www.usenet-fr.news.eu.org




Avatar
Radamanthe
Ael-Rowan TERENCE wrote:
"Radamanthe" a écrit dans le message de
news:45b14483$0$5476$
Pascal Bourguignon wrote:
writes:
Comme j'hésite entre apprendre le C et apprendre le C++ , je cherche a
peser le pour et le contre; d'où ma question :
Quels sont les avantages du C et du C++ ?
Certains ont la théorie que ce ne sont pas le même langage, mais ce

n'est pas mon avis.
Le problème, c'est qu'à défaut de théorie, c'est une réalité...




Ce que je trouve amusant c'est que, à chaque fois :
- les partisans du C minimisent les différences entre les deux langages
( et pourtant il y a un gouffre )


Je suis un "partisan" du C et j'affirme qu'il y a un gouffre.

- les partisans du C++ renient tous liens avec le C ( et pourtant je
peux écrire un programme C qui passera sans encombre sur un compilateur
C++).


Les partisans du C++ renient tous lien avec C parce-qu'écrire du bon
code C++ n'a rien à voir avec écrire du C compilable avec un compilo C++.


--
R.N.




Avatar
Fabien LE LEZ
On 23 Jan 2007 00:05:36 -0800, "James Kanze" :

Est-ce que tu indentes aussi les if/else :

if ( x == y )
result = x ;
else
if ( x < y )
result = gcd( x, y - x ) ;
else
result = gcd( x - y, y ) ;


Je peux écrire ce code comme un "if" principal, avec, dans son bloc
"else", un autre "if" indépendant :

if ( x == y )
{
result = x ;
}
else
{
if ( x < y )
{
result = gcd( x, y - x ) ;
}
else
{
result = gcd( x - y, y ) ;
}
}

[Note : je mets systématiquement les accolades. En pratique, si un
jour je décide de ne pas les mettre, je me retrouve à les rajouter
a posteriori pour une raison ou pour une autre...]

Ou bien, je peux l'écrire comme un "if à N branches" (avec N=3 ici) :

if ( x == y )
{
result = x ;
}
else if ( x < y )
{
result = gcd( x, y - x ) ;
}
else
{
result = gcd( x - y, y ) ;
}


(Dans ce cas précis, j'aurais plutôt tendance à choisir la deuxième
solution.)

Avatar
Fabien LE LEZ
On Tue, 23 Jan 2007 19:16:47 +0100, Radamanthe
:

Les partisans du C++ renient tous lien avec C parce-qu'écrire du bon
code C++ n'a rien à voir avec écrire du C compilable avec un compilo C++.


Notons aussi qu'un code C parfaitement correct, qu'un compilateur C++
accepte de compiler, n'est pas forcément un code C++ correct --
notamment à cause de la possibilité pour une exception d'être lancée
quelque part.

Avatar
Michael DOUBEZ
On Tue, 23 Jan 2007 19:16:47 +0100, Radamanthe
:

Les partisans du C++ renient tous lien avec C parce-qu'écrire du bon
code C++ n'a rien à voir avec écrire du C compilable avec un compilo C++.


Notons aussi qu'un code C parfaitement correct, qu'un compilateur C++
accepte de compiler, n'est pas forcément un code C++ correct --
notamment à cause de la possibilité pour une exception d'être lancée
quelque part.



Dans quel cas un code C compilé sur un compilateur C++ lancerait-il une
exception ?

Michael


Avatar
James Kanze
Fabien LE LEZ wrote:
On 23 Jan 2007 00:05:36 -0800, "James Kanze" :

Est-ce que tu indentes aussi les if/else :

if ( x == y )
result = x ;
else
if ( x < y )
result = gcd( x, y - x ) ;
else
result = gcd( x - y, y ) ;


Je peux écrire ce code comme un "if" principal, avec, dans son bloc
"else", un autre "if" indépendant :

if ( x == y )
{
result = x ;
}
else
{
if ( x < y )
{
result = gcd( x, y - x ) ;
}
else
{
result = gcd( x - y, y ) ;
}
}

[Note : je mets systématiquement les accolades.


[Moi aussi. C'était juste pour simplifier que je les ai laissé
tombé.]

En pratique, si un
jour je décide de ne pas les mettre, je me retrouve à les rajouter
a posteriori pour une raison ou pour une autre...]

Ou bien, je peux l'écrire comme un "if à N branches" (avec N=3 ici) :

if ( x == y )
{
result = x ;
}
else if ( x < y )
{
result = gcd( x, y - x ) ;
}
else
{
result = gcd( x - y, y ) ;
}

(Dans ce cas précis, j'aurais plutôt tendance à choisir la deuxiè me
solution.)


Tout à fait. De la même façon, je peux écrire :

return x == y
? x
: ( x < y
? gcd( x, y - x )
: gcd( x - y, y ) ) ;

ou

return x == y
? x
: x < y
? gcd( x, y - x )
: gcd( x - y, y ) ;

(et que dans ce cas précis, j'aurais plutôt tendance à choisir
la deuxième solution).

--
James Kanze (GABI Software) email:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
9 place Sémard, 78210 St.-Cyr-l'École, France, +33 (0)1 30 23 00 34


Avatar
Thierry Boudet
On 2007-01-20, Pascal Bourguignon wrote:

int gcd(int x,int y){
if(x==y){
return(x);
}else if(x<y){
return(gcd(x,y-x));
}else{
return(gcd(x-y,y));
}
}

C'est-y du C ou du C++?



Pas assez bloatté pour du c++, mon fils :)


--
C'est très très long une journée : ca fait 86400 secondes. Et une seconde
c'est aussi très long: ca fait 1000 millième de secondes ... tout ca fait
que mon uptime avance très très lentement.
== NLS: savoir downclocker son uptime ==

2 3 4 5 6