C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Java vs C++
Goto page 1, 2, 3, 4  Next
 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French)
View previous topic :: View next topic  
Author Message
Zouplaz
Guest





PostPosted: Wed Sep 17, 2003 2:39 pm    Post subject: Java vs C++ Reply with quote



Bonjour, est-ce que quelqu'un aurait un lien vers une page expliquant
clairement les avantages du C++ (en terme POO) par rapport au à Java.



Merci

Back to top
Michaël Monerau
Guest





PostPosted: Wed Sep 17, 2003 3:11 pm    Post subject: Re: Java vs C++ Reply with quote



Zouplaz wrote:
Quote:
Bonjour, est-ce que quelqu'un aurait un lien vers une page expliquant
clairement les avantages du C++ (en terme POO) par rapport au à Java.

Trop gros, passera pas Wink
--
<=- Michaël "Cortex" Monerau -=>



Back to top
Michaël Monerau
Guest





PostPosted: Wed Sep 17, 2003 3:40 pm    Post subject: Re: Java vs C++ Reply with quote



Zouplaz wrote:
Quote:
Michaël Monerau - [email]cort (AT) meloo (DOT) com[/email] :

Zouplaz wrote:
Bonjour, est-ce que quelqu'un aurait un lien vers une page
expliquant clairement les avantages du C++ (en terme POO) par
rapport au à Java.

Trop gros, passera pas Wink
--
=- Michaël "Cortex" Monerau -=


Non, non c'est PAS un troll !! Rhaaa !! Bon, j'explique...

eheh Smile
OK. Mais malheureusement, je ne peux pas te renseigner, vu que je ne connais
pas Java.

Désolé !
--
<=- Michaël "Cortex" Monerau -=>



Back to top
Alexandre
Guest





PostPosted: Wed Sep 17, 2003 5:57 pm    Post subject: Re: Java vs C++ Reply with quote

Java = portable, sécurisé, pas (trop) de bidouilles comme en C. Lent à
l'execution. Pas d'héritage multiple (enfin, pas vraiment), pas de gestion
directe de la mémoire (donc pas de bas niveau possible)

C++ = portable si recompilé, rapide à l'execution. permet le bas niveau.
Permet aussi de faire du C, ce qui n'est pas une bonne chose.

"Zouplaz" <pouet (AT) pouet (DOT) com> a écrit dans le message de
news:Xns93F9B1C2538D0Zoupla (AT) 213 (DOT) 228.0.138...
Quote:
Michaël Monerau - [email]cort (AT) meloo (DOT) com[/email] :

Zouplaz wrote:
Bonjour, est-ce que quelqu'un aurait un lien vers une page expliquant
clairement les avantages du C++ (en terme POO) par rapport au à Java.

Trop gros, passera pas Wink
--
=- Michaël "Cortex" Monerau -=


Non, non c'est PAS un troll !! Rhaaa !! Bon, j'explique...

Je me suis re-inscrit en fac dans une fillière necéssitant un niveau
"correct" en informatique (que je pense posséder mais y a encore du boulot
sur les concepts et je compte faire ce qu'il faut), bref l'un des modules
concerne la programmation OO et Java est proposé...

Comme je suis une sorte "d'auditeur libre" (je passe les détails, google
VAE pour ceux que ça intéresse) je peux éventuellement présenter mon
mémoire avec une partie mise en oeuvre réalisée en C++...

A force de lire les messages ici et potasser un peu j'ai quand même fini
par apprendre quelques concepts dont certains n'existent peut-être pas en
Java (héritage multiple par exemple).

Donc (ouf), je voudrais avoir l'esprit clair avant de choisir Java ou C++
et pas me retrouver en train de penser C++ et me heurter à Java.

Certains diront, les concepts sont les mêmes... Si on sait, on sait, le
langage on s'en fout !
Oui mais il y a de multiples détails intéressants (limitations de "final"
par rapport à "const" par exemple) qu'il vaut mieux que je connaisse
histoire de pas m'embrouiller les pinceaux...

Vala...



Back to top
Michaël Monerau
Guest





PostPosted: Wed Sep 17, 2003 6:12 pm    Post subject: Re: Java vs C++ Reply with quote

Alexandre wrote:
Quote:
C++:Permet aussi de faire du C, ce qui n'est pas une bonne chose.

Tu n'en fais que si tu veux... Je vois pas pourquoi laisser la possibilité
de faire du C serait une mauvaise chose...

J'espère que tu as fait une faute de frappe Smile
--
<=- Michaël "Cortex" Monerau -=>



Back to top
Michael Demanet
Guest





PostPosted: Wed Sep 17, 2003 7:31 pm    Post subject: Re: Java vs C++ Reply with quote

Alexandre wrote:
Quote:
Java = portable, sécurisé, pas (trop) de bidouilles comme en C. Lent à
l'execution. Pas d'héritage multiple (enfin, pas vraiment), pas de gestion
directe de la mémoire (donc pas de bas niveau possible)

C++ = portable si recompilé, rapide à l'execution. permet le bas niveau.
Permet aussi de faire du C, ce qui n'est pas une bonne chose.
Je ne vois pas en quoi faire du C est une mauvaise chose ! Shocking !!

Je crois que j'ai lu dans un bouquin de c++ une phrase qui résulait très
bien la nature de ce langage. Ca disait plus ou moins ceci :
"C++ est une arme remarquable. Elle permet de faire d'excellentes choses
mais si l'arme est mal utilisée, c'est la jambe qui part avec !".

Michaël


Back to top
Christophe Brun
Guest





PostPosted: Wed Sep 17, 2003 8:44 pm    Post subject: Re: Java vs C++ Reply with quote

Le 17 Sep 2003 14:39:47 GMT, Zouplaz <pouet (AT) pouet (DOT) com> a écrit:

Quote:
Bonjour, est-ce que quelqu'un aurait un lien vers une page expliquant
clairement les avantages du C++ (en terme POO) par rapport au à Java.



Merci



Pour compléter les points décrits par mes honorables collègues, je propose
:

1 - JAVA est plus facilement utilisable que C++ dans un contexte
multithread (du moins l'ai-je lu à plusieurs reprises...)
2 - JAVA permet d'éviter les pièges de la gestion de mémoire.
A mon avis, le point 2 (garbage collector) n'est un avantage notable que
pour les programmeurs ayant une faible maîtrise de leur code (et ignorant
les auto_ptr, smart_ptr ou le principe d'Aquisition de Ressources par
Initialisation).

Par contre, pour autant que je sache :
3 - pas de templates en JAVA (donc pas de STL et pas de
métaprogrammation...)
4 - la syntaxe constructeur/destructeur qui permet de faire tant de choses
élégantes en C++ (entre autres d'utiliser le principe d'Acquisition de
Ressources par Initialisation) n'existe pas en JAVA (attention, j'ai bien
dit : #la syntaxe#)

A titre personnel, la question que je me pose est plutôt : quels sont les
avantages de JAVA par rapport à Visual Basic... Mais pour le coup, nous
sortons du thème du forum Surprised)

--
Sauf erreur ou omission...
C.Brun

Back to top
Arnaud Debaene
Guest





PostPosted: Wed Sep 17, 2003 9:09 pm    Post subject: Re: Java vs C++ Reply with quote

Zouplaz wrote:
Quote:
Bonjour, est-ce que quelqu'un aurait un lien vers une page expliquant
clairement les avantages du C++ (en terme POO) par rapport au à Java.

Si tu parles purement de POO, les différences les plus notables que je vois

sont :

- Garbage Collector en Java, ce qui entraine malheureusemeent qu'il n'y a
pas de vrai destructeur en Java et qu'il est donc difficile de gérer
proprement la durée de vie des ressoureces autres que la mémoire (en C++ on
utilise l'idiome RAII). Un effet de bord annexe est qu'n Java on ne peut pas
choisir de manipuler soit une valeur soit une référence (ou pointeur) comme
on peut le faire en C++.

- Le Java propose la notion d'interface au niveau syntaxique, mais C++
permet de faire exactement la même chose (et même mieux, voir tous les posts
de James sur la programmation par contrat ou par interface) avec des classes
virtuelles pures.

- En Java, tout le monde hérite d'Object. Il y a du pour et du contre...

- En Java, pas d'héritage multiple d'implémentation.

- Java propose "en standard" beaucoup plus de fonctionnalités avancées que
le C++, mais les bibliothèques disponibles en C++ rattrapent cela. En vrac
et parmi les plus importants : theading, GUI, accès aux BdD, accès réseau,
sécurisation du code (signature), sérialisation de/vers des formats
standards (XML),

Ensuite, hors POO, le C++ propose les templates qui offrent d'énormes
possibilités, à priori supérieures à ce que seront les "generics" en Java
1.5.

Arnaud



Back to top
Alain Naigeon
Guest





PostPosted: Wed Sep 17, 2003 9:19 pm    Post subject: Re: Java vs C++ Reply with quote

"Arnaud Debaene" <adebaene (AT) club-internet (DOT) fr> a écrit dans le message news:
3f68cd83$0$2787$626a54ce (AT) news (DOT) free.fr...
Quote:
Zouplaz wrote:
Bonjour, est-ce que quelqu'un aurait un lien vers une page expliquant
clairement les avantages du C++ (en terme POO) par rapport au à Java.

Si tu parles purement de POO, les différences les plus notables que je
vois
sont :

- Garbage Collector en Java, ce qui entraine malheureusemeent qu'il n'y a
pas de vrai destructeur en Java

Ce qui entraîne..? Bon, il me semble qu'on peut imaginer de spécifier
des destructeurs pris en compte par un Garbage collector (sans pour autant
déclencher soi-même leur exécution). Java a sans doute de bonnes raisons
de ne pas faire ainsi, mais "ce qui entraîne" me paraît un peu rapide, non ?

--

Français *==> "Musique renaissance" <==* English
midi - facsimiles - ligatures - mensuration
http://anaigeon.free.fr | http://www.medieval.org/emfaq/anaigeon/
Alain Naigeon - [email]anaigeon (AT) free (DOT) fr[/email] - Strasbourg, France



Back to top
Zouplaz
Guest





PostPosted: Thu Sep 18, 2003 7:30 am    Post subject: Re: Java vs C++ Reply with quote

Arnaud Debaene - [email]adebaene (AT) club-internet (DOT) fr[/email] :

Quote:
Si tu parles purement de POO, les différences les plus notables que je
vois sont :

- Garbage Collector en Java, ce qui entraine malheureusemeent qu'il
n'y a pas de vrai destructeur en Java et qu'il est donc difficile de
gérer proprement la durée de vie des ressoureces autres que la mémoire
(en C++ on utilise l'idiome RAII). Un effet de bord annexe est qu'n
Java on ne peut pas choisir de manipuler soit une valeur soit une
référence (ou pointeur) comme on peut le faire en C++.



Alors JUSTEMENT ! Je ne vois pas comment on peut concevoir de travailler
sans concepts de référence et encore moins de pointeurs (qui sont à
bannir en C++, vous me l'avez si souvent dit !)...

Comment peut-on s'en sortir avec des copies d'objets !! Je trouve ça plus
que problématique !

Exemple :

class piece_maison
{
public void addMobilier(mobObject mob)
}

Là c'est typique, l'objet mobilier une fois associé à une instance de
piece_maison en sera définitivement prisonnier ! S'il est modifié par
ailleurs ça finira aux oubliettes.

Concevoir qu'un objet (une instance) puisse avoir une vie propre, soit
totalement autonome de son container me semble indispensable (mais je
peux me tromper, c'est là que ça devient conceptuel).

Sans parler des liens entre instances par référence (et pour moi par
pointeur sic)

COMMENT font-ils ces gens (ceux qui programment en Java) pour s'en sortir
?

Suis-en train de me fourvoyer ? J'ai quand même du mal à imaginer que le
concept de référence si important en C++ soit finalement un gadget dont
on aurait pu se passer...

Votre avis m'intéresse sur ce point tout particulièrement !!!!




Back to top
kanze@gabi-soft.fr
Guest





PostPosted: Thu Sep 18, 2003 7:50 am    Post subject: Re: Java vs C++ Reply with quote

"Arnaud Debaene" <adebaene (AT) club-internet (DOT) fr> wrote

Quote:
Zouplaz wrote:
Bonjour, est-ce que quelqu'un aurait un lien vers une page
expliquant clairement les avantages du C++ (en terme POO) par
rapport au à Java.

Si tu parles purement de POO, les différences les plus notables que je
vois sont :

- Garbage Collector en Java, ce qui entraine malheureusemeent qu'il
n'y a pas de vrai destructeur en Java et qu'il est donc difficile de
gérer proprement la durée de vie des ressoureces autres que la mémoire
(en C++ on utilise l'idiome RAII). Un effet de bord annexe est qu'n
Java on ne peut pas choisir de manipuler soit une valeur soit une
référence (ou pointeur) comme on peut le faire en C++.

Une ramasse-miettes serait une bonne chose en C++, il n'y a rien à dire.
Mais soyons précis : l'existance d'une ramasse-miettes est orthogonale à
la support pour l'OO (qui semblait intéresser surtout le posteur
initial), et c'est également orthogonale à l'existance des destructeurs.

Il y a eu une proposition pour une ramasse-miettes en C++ présentée au
comité de normalisation avant la dernière norme. Les auteurs l'en ont
rétiré, parce qu'ils s'éstîmaient à l'époque que c'était trop tard, et
que essayer de l'incorporer au langage aurait rétardé la norme. Je ne
l'exclurais pas d'office dans la prochaine version de la norme, même si
d'autres évolutions semblent en avoir réduit l'importance.

L'absence des destructeurs en Java est palié par les blocs finally. Que
l'utilisateur oublie systèmatiquement à mettre:-) -- dans ce cas-ci, on
pourrait dire que Java et C++ offrent les mêmes possibilités, avec des
moyens bien différents, mais que la façon C++ de faire est nettement
plus robuste.

Quote:
- Le Java propose la notion d'interface au niveau syntaxique, mais C++
permet de faire exactement la même chose (et même mieux, voir tous les
posts de James sur la programmation par contrat ou par interface) avec
des classes virtuelles pures.

On dit « des classes abstraites ». Ce sont les fonctions qui sont
virtuelle pures. :-)

Il y a quand même une chose là que Java fait, et qu'il faut faire à la
main en C++. Admettons que la classe Base a une fonction virtuelle f().
Si j'ai aussi une interface :

interface I { void f() ; } ;

et que j'écris :

class C extends Base implements I
{
} ;

En Java, le f() de Base implément automatiquement le f() de I. En C++,
il faut bien que j'écrive une function f() dans C.

Je n'arrive pas à me décider si le comportement Java est mieux ou pire
que ce que fait C++.

Quote:
- En Java, tout le monde hérite d'Object. Il y a du pour et du
contre...

Intéressant. Je n'ai pas encore trouver du pour.

Quote:
- En Java, pas d'héritage multiple d'implémentation.

Ni d'une interface avec contrat:-).

En fait, Java fait une distinction artificielle entre les héritages. À
la Dresdner Bank, la plupart de nos « interfaces » était déclarées
class, parce qu'on voulait y mettre de la vérification du contrat et de
l'instrumentation. Du code, donc.

Quote:
- Java propose "en standard" beaucoup plus de fonctionnalités avancées
que le C++, mais les bibliothèques disponibles en C++ rattrapent cela.
En vrac et parmi les plus importants : theading, GUI, accès aux BdD,
accès réseau, sécurisation du code (signature), sérialisation de/vers
des formats standards (XML),

N'empèche que si tu veux les utiliser, il faut que tu les cherches, que
tu les installes, etc. C'est quand même plus facile en Java.

Quote:
Ensuite, hors POO, le C++ propose les templates qui offrent d'énormes
possibilités, à priori supérieures à ce que seront les "generics" en
Java 1.5.

En général, C++ supporte de multiples paradigmes. Java ne supporte que
l'OO.

Il y a deux autres distinctions de taille :

1. C++ supporte une sémantique de valeur aussi pour les types définis
par l'utilisateur. Gosling a proposé un tel support en Java, mais
pour l'instant, rien ne s'est fait.

2. Java prétend savoir toujours ce qui est le mieux pour toi, et
l'impose -- il n'y a qu'une façon de faire quoique ce soit. Les
auteurs de C++ ont été bien moins prétencieux, et si parfois la
liberté qu'il propose fait peur, chaque fois que tu trouves que le
défaut du langage n'est pas ce qu'il te faut (c-à-d très souvent, et
en Java et en C++), il est possible à le contourner. Tandis qu'en
Java, tu es coincé.

La deuxième distinction fait que Java ne convient que pour certaines
applications de niche (dont peut-être l'enseignement), mais pas pour la
plupart des applications professionnelles.

--
James Kanze GABI Software mailto:kanze (AT) gabi-soft (DOT) fr
Conseils en informatique orientée objet/ http://www.gabi-soft.fr
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France, +33 (0)1 30 23 45 16

Back to top
Richard Delorme
Guest





PostPosted: Thu Sep 18, 2003 8:16 am    Post subject: Re: Java vs C++ Reply with quote

Zouplaz a écrit :

Quote:
Arnaud Debaene - [email]adebaene (AT) club-internet (DOT) fr[/email] :

Si tu parles purement de POO, les différences les plus notables que je
vois sont :

- Garbage Collector en Java, ce qui entraine malheureusemeent qu'il
n'y a pas de vrai destructeur en Java et qu'il est donc difficile de
gérer proprement la durée de vie des ressoureces autres que la mémoire
(en C++ on utilise l'idiome RAII). Un effet de bord annexe est qu'n
Java on ne peut pas choisir de manipuler soit une valeur soit une
référence (ou pointeur) comme on peut le faire en C++.



Alors JUSTEMENT ! Je ne vois pas comment on peut concevoir de travailler
sans concepts de référence et encore moins de pointeurs (qui sont à
bannir en C++, vous me l'avez si souvent dit !)...

Comment peut-on s'en sortir avec des copies d'objets !! Je trouve ça plus
que problématique !

En java, les objets sont systématiquement passés par référence, et non par
copie, sauf les types natifs (boolean, int, ...).

Quote:

Exemple :
Suis-en train de me fourvoyer ?

Oui.

--
Richard

Back to top
Arnaud Meurgues
Guest





PostPosted: Thu Sep 18, 2003 8:19 am    Post subject: Re: Java vs C++ Reply with quote

Christophe Brun wrote:

Quote:
3 - pas de templates en JAVA (donc pas de STL et pas de
métaprogrammation...)

C'est prévu dans java 1.5.

Arnaud


Back to top
Arnaud Meurgues
Guest





PostPosted: Thu Sep 18, 2003 8:32 am    Post subject: Re: Java vs C++ Reply with quote

Zouplaz wrote:


Quote:
Alors JUSTEMENT ! Je ne vois pas comment on peut concevoir de travailler
sans concepts de référence et encore moins de pointeurs (qui sont à
bannir en C++, vous me l'avez si souvent dit !)...

Comment peut-on s'en sortir avec des copies d'objets !! Je trouve ça plus
que problématique !

Java, justement, n'utilise *que* des références.

Par ailleurs, il y a des types de classe pour lesquels il est plus
naturel d'utiliser une sémantique de valeur.

Quote:
class piece_maison
{
public void addMobilier(mobObject mob)
}

Là c'est typique, l'objet mobilier une fois associé à une instance de
piece_maison en sera définitivement prisonnier ! S'il est modifié par
ailleurs ça finira aux oubliettes.

Non. En Java, mobObjet désigne en fait une référence.

class piece_maison {
public void addMobilier(mobObject mob)
}

s'écrit en C++

class piece_maison {
public:
void addMobilier(monObject& mob);
}

Quote:
Concevoir qu'un objet (une instance) puisse avoir une vie propre, soit
totalement autonome de son container me semble indispensable (mais je
peux me tromper, c'est là que ça devient conceptuel).

Oui, c'est indispensable et c'est ce que fait Java. En revanche, Java ne
permet pas de concevoir qu'un type n'a pas de raison de donner une
identité à ses instances (mais fait une entorse pour les types de base).

Par exemple, une date, c'est plus une valeur qu'un chose qui peut
varier, de la même manière qu'un int.

Ainsi, en C++, il n'est pas anormal d'écrire :

class Livre {
public:
void DateEdition(Date d);
}

Il n'y a pas lieu d'utiliser une référence ici, car la date est une
valeur, et non un objet susceptible d'être modifié.

James avait aussi utilisé l'exemple d'une classe gérant des valeurs
monnaitaires. Une somme d'argent, c'est une valeur. Ça n'a pas de sens
de donner une identité à une somme d'argent.

Quote:
Suis-en train de me fourvoyer ? J'ai quand même du mal à imaginer que le
concept de référence si important en C++ soit finalement un gadget dont
on aurait pu se passer...

C'est le contraire : Java a retenu le concept de référence et jeté celui
de valeur.

Arnaud


Back to top
Arnaud Meurgues
Guest





PostPosted: Thu Sep 18, 2003 8:35 am    Post subject: Re: Java vs C++ Reply with quote

[email]kanze (AT) gabi-soft (DOT) fr[/email] wrote:


Quote:
L'absence des destructeurs en Java est palié par les blocs finally. Que
l'utilisateur oublie systèmatiquement à mettre:-)

L'intérêt en est quand même relatif puisqu'on n'a pas l'assurance qu'un
bloc finally sera appelé.

Quote:
1. C++ supporte une sémantique de valeur aussi pour les types définis
par l'utilisateur. Gosling a proposé un tel support en Java, mais
pour l'instant, rien ne s'est fait.

Du genre de ce que fait C# ?

Arnaud


Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (French) All times are GMT
Goto page 1, 2, 3, 4  Next
Page 1 of 4

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.