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

10 réponses

1 2 3 4 5
Avatar
Fabien LE LEZ
On Fri, 19 Jan 2007 23:22:26 +0100, Radamanthe
:

Bref, ça fleure bon le troll


J'ose espérer que le message de Pascal est 100 % trollesque.

Par contre, je ne sais toujours pas ce qu'il en est de celui de l'OP.

Avatar
Pierre Maurette

[...]

... comme 2 languages ...


[...]

2 languages différents.


[...]

C++ a peut-être emprunté le
nom, la syntaxe et la sémantique de C pour construire tout son toutim
par-dessus, mais la grande majorité des détails "insignifiants" qui les
différencie n'est pas de cet ordre, à commencer par le paradigme dominant.


La phrase vous échappe. On se demande un peu à quoi se rapporte le " de
cet ordre ", même si on comprend le sens général. Peu importe, il est
clair que le sujet de " n'est pas " est " la grande majorité ", ce qui
autorise un accord au singulier ou au pluriel. En revanche, le sujet de
" différencie " est clairement " détails ", et l'accord ne peut se
faire qu'au pluriel.

[...]

... 2 languages ... finallement ...


[...]

... 2 languages ...


[...]

... finallement ...


[...]

Chaque faute d'orthographe semble reflêter


On croit raiver...

--
Pierre Maurette

Avatar
Radamanthe
Pierre Maurette wrote:

[...]

... comme 2 languages ...


[...]

2 languages différents.


[...]

C++ a peut-être emprunté le nom, la syntaxe et la sémantique de C pour
construire tout son toutim par-dessus, mais la grande majorité des
détails "insignifiants" qui les différencie n'est pas de cet ordre, à
commencer par le paradigme dominant.


La phrase vous échappe. On se demande un peu à quoi se rapporte le " de
cet ordre ", même si on comprend le sens général. Peu importe, il est
clair que le sujet de " n'est pas " est " la grande majorité ", ce qui
autorise un accord au singulier ou au pluriel.


Voulez-vous dire que la pluralité naturelle (et non litérale) d'un sujet
permet l'accord dans les deux sens s'il est au singulier ? J'ai toujours
pensé que c'était une faute. J'aurai au moins appris une UB de la langue
française :)

En revanche, le sujet de
" différencie " est clairement " détails ", et l'accord ne peut se faire
qu'au pluriel.


En effet. L'exemple démontre bien l'effet destructeur que peut avoir une
faute de grammaire sur la compréhension d'une phrase. Il faut dire aussi
que ma formulation était maladroite.


[...]

... 2 languages ... finallement ...


[...]

... 2 languages ...


[...]

... finallement ...


[...]

Chaque faute d'orthographe semble reflêter


On croit raiver...


Sans nul doute l'anglais technique avec "language" et "finally" qui me
donnent de mauvaises habitudes... grrr

Et puis ça m'apprendra à critiquer l'orthographe des autres (quoique ce
n'était pas vraiment le sujet de ma critique) sans vérifier la mienne.
Surtout ici :)



--
R.N.


Avatar
James Kanze
Fabien LE LEZ wrote:
On Fri, 19 Jan 2007 20:12:54 +0000 (UTC), Marc Boyer :

et qui repugne encore a utiliser une norme qui a deja 7 ans,
au cas ou elle serait mal supportee quelque part.


Si tu parles bien de C++... Depuis quand y a-t-il une implémentation
pas trop lacunaire, de cette norme ?


Depuis quand est-ce qu'il y a une implémentation autre que celle
de EDG qui n'est pas lacunaire ? Le fait reste que même
aujourd'hui, tu ne peux pas te fier sur la norme si tu veux être
portable.

--
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
Pascal Bourguignon
Radamanthe writes:

Pascal Bourguignon wrote:
[...]
Apprends C! Puis apprends C++!

Tu n'auras pas perdu de temps


Certes, si l'apprentissage de 2 languages ne demande finallement rien
d'insurmontable et, dans le fond, permet d'affiner ses connaissances,
le cas spécifique où les 2 languages sont C et C++ (dans cet ordre)
reste un sujet controversé. Bref, ça fleure bon le troll, mais je me
demande finallement si c'est pas trop gros pour ça.

car C++ est un sur-ensemble (à de trés petits détails insifignifiants) de C.


J'aime beaucoup le "trés" suivi de l'amusant "petits détails" appuyé
du magnifique "insifignifiants". Chaque faute d'orthographe semble
reflêter l'inadéquation des mots que tu emploies, comme si tu savais
dans le fond que c'est faux.


Il ne faut jamais sous estimer la bétise (et la fatigue) humaine. Pas
la peine d'élaborer des théories conspirationistes.


Mais je maintiens.

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++?


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

Pour moi, la grande question n'a jamais été: «Qui suis-je? Où vais-je?»
comme l'a formulé si adroitement notre ami Pascal, mais plutôt:
«Comment vais-je m'en tirer?» -- Jean Yanne


Avatar
Fabien LE LEZ
On Sat, 20 Jan 2007 17:42:36 +0100, Pascal Bourguignon :

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


Tiens, un autre exemple :

{ /* Hello World! */ }

Est-ce du C, du C++, du Java, du Javascript, du PHP, ou autre chose ?

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));
}
}


Effectivement, tel quel, ce code ne compilera probablement qu'avec un
compilateur C ou un compilateur C++.
Mais le code équivalent en PHP ou Javascript sera tout de même très
très proche.


J'ai posté, sur fclc++ uniquement (Je n'avais pas remarqué le
cross-post), un message contenant un exemple qui montre à quel point
C++ est proche de PHP :

Un exemple relativement simple : écrire une fonction qui prend en
argument un tableau de chaînes de caractères et un prénom, et renvoie
le même tableau avec, à la fin, la chaîne "Bonjour <prénom> !".

En PHP, c'est très simple à faire :

function f ($tableau, $prenom)
{
array_push ($tableau, "Bonjour " . $prenom . " !");
return $tableau;
}

En C++, c'est à peu près la même chose :

vector<string> f (vector<string> tableau, string prenom)
{
tableau.push_back ("Bonjour " + prenom + " !");
return tableau;
}


Je rajoute que, pour atteindre la même flexibilité qu'en PHP, on peut
modifier légèrement le code C++, afin d'accepter plusieurs types de
tableaux :

template <class Tableau> Tableau f (Tableau tableau, string prenom)
{
tableau.push_back ("Bonjour " + prenom + " !");
return tableau;
}


Je serais bien incapable de transcrire cette fonction en C. Sauras-tu
m'aider ?
Il doit juste falloir rajouter un ou deux petits détails, je suppose ?

Avatar
Pascal Bourguignon
Fabien LE LEZ writes:

On Sat, 20 Jan 2007 17:42:36 +0100, Pascal Bourguignon :

C'est-y du C ou du C++?
[...]

template <class Tableau> Tableau f (Tableau tableau, string prenom)
{
tableau.push_back ("Bonjour " + prenom + " !");
return tableau;
}


Je serais bien incapable de transcrire cette fonction en C. Sauras-tu
m'aider ?


Je pourrais.


Il doit juste falloir rajouter un ou deux petits détails, je suppose ?


Tu serais supris de voir jusqu'où on peut aller en C avec void*
Rappelons que C++ (et Objective-C) ne sont que des préprocesseurs en
façade sur C...


Mais le point important de mon message était la différence ensembliste.

C ∖ C++ ≅ ∅

autrement dit, il n'y a pas grand chose à modifier ou oublier quand on
a appris C, pour apprendre C++.



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

NEW GRAND UNIFIED THEORY DISCLAIMER: The manufacturer may
technically be entitled to claim that this product is
ten-dimensional. However, the consumer is reminded that this
confers no legal rights above and beyond those applicable to
three-dimensional objects, since the seven new dimensions are
"rolled up" into such a small "area" that they cannot be
detected.


Avatar
Radamanthe
Pascal Bourguignon wrote:
Radamanthe writes:

Pascal Bourguignon wrote:
[...]
Apprends C! Puis apprends C++!

Tu n'auras pas perdu de temps
Certes, si l'apprentissage de 2 languages ne demande finallement rien

d'insurmontable et, dans le fond, permet d'affiner ses connaissances,
le cas spécifique où les 2 languages sont C et C++ (dans cet ordre)
reste un sujet controversé. Bref, ça fleure bon le troll, mais je me
demande finallement si c'est pas trop gros pour ça.

car C++ est un sur-ensemble (à de trés petits détails insifignifiants) de C.
J'aime beaucoup le "trés" suivi de l'amusant "petits détails" appuyé

du magnifique "insifignifiants". Chaque faute d'orthographe semble
reflêter l'inadéquation des mots que tu emploies, comme si tu savais
dans le fond que c'est faux.


Il ne faut jamais sous estimer la bétise (et la fatigue) humaine. Pas
la peine d'élaborer des théories conspirationistes.


Pardon, c'était un peu méchant, et par-dessus le marché, j'ai eu ma part
de fautes :)

Mais je maintiens.

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++?


Jolie tentative, mais ça ne prend pas.

J'ai moi-même, il fût un temps, supposé que "langage de programmation"
se limitait à des choses comme syntaxe, sémantique et constructions.
Mais c'est juste de la musculation tout ça sans le minimum interactif
qui va autour. Au hasard les bibliothèques, c'est le minimum. A elles
seules, leurs différences sont telles qu'il n'est plus vraiment possible
de comparer, en fait. Changement de paradigme, entre-autres...

Aujourd'hui je préfère considérer que le langage, c'est la norme. Et ça
pèse quand-même son pesant de nuits blanches.

Je pourrais tout aussi bien faire un diff des 2 normes (en format texte
pûr, restons fair-play) et poster ici la preuve que ce sont 2 langages
différents. Mais ça aurait de bonnes raisons de déplaire à beaucoup de
monde.


--
R.N.



Avatar
Fabien LE LEZ
On Sat, 20 Jan 2007 20:41:02 +0100, Radamanthe :

J'ai moi-même, il fût un temps, supposé que "langage de programmation"
se limitait à des choses comme syntaxe, sémantique et constructions.


Ce serait marrant de faire la liste des langages qui n'ont pas la même
syntaxe que C[*] (à quelques petits détails près).
Il doit y avoir :
- les assembleurs
- les Basic
- les shells (ligne de commande Windows ; bash)
- Lisp
- les langages aux paradigmes très différents (Lisp, Haskell,
Prolog, etc.)
- les langages de programmation d'un logiciel précis (make,
POV-Ray, les macros de divers logiciels, etc.)


[*] Dans tous les autres (PHP, Java, Javascript, etc.), le code
suivant (modulo des petits détails sur les noms de variables, comme le
"$" du PHP) est valide :

total= 0;
for (i=0; i<42; ++i)
{
if (i % 3 == 2)
{
total+= i*i;
}
}

Avatar
Radamanthe
Fabien LE LEZ wrote:
On Sat, 20 Jan 2007 20:41:02 +0100, Radamanthe :

J'ai moi-même, il fût un temps, supposé que "langage de programmation"
se limitait à des choses comme syntaxe, sémantique et constructions.


Ce serait marrant de faire la liste des langages qui n'ont pas la même
syntaxe que C[*] (à quelques petits détails près).
Il doit y avoir :
- les assembleurs
- les Basic
- les shells (ligne de commande Windows ; bash)
- Lisp
- les langages aux paradigmes très différents (Lisp, Haskell,
Prolog, etc.)
- les langages de programmation d'un logiciel précis (make,
POV-Ray, les macros de divers logiciels, etc.)


- XML
- HTML
- Pascal
- Ada
- Delphi
- Fortran

et y'en a d'autres ici :
http://fr.wikipedia.org/wiki/Image:Langage_progr.png

[*] Dans tous les autres (PHP, Java, Javascript, etc.), le code
suivant (modulo des petits détails sur les noms de variables, comme le
"$" du PHP) est valide :

total= 0;
for (i=0; i<42; ++i)
{
if (i % 3 == 2)
{
total+= i*i;
}
}


Et tu vois, même si ça ne ressemble pas à de l'assembleur, ça en a le
"goût", toute ces opérations atomiques qui s'enchaînent avec harmonie.

Donc qui a dit que l'assembleur n'était pas un langage universel ?...


--
R.N.


1 2 3 4 5