OVH Cloud OVH Cloud

Pertinence des concepts objet avec C++

32 réponses
Avatar
Jean-Jacques Puel
Bonjour,

Après un rapide sondage pour ma culture personnelle sur fro, il apparait que
les spécialistes de l'objet rejettent le langage C++ dont les concepts leur
paraissent aberrants. En gros, il affirment que C++ n'est qu'un patch du
langage C afin de le rendre bancalement OO.
Cela m'embête un peu car je connais bien le langage C et il me semble que
l'apprentissage du C++ aurait été de ce fait facilité.
Je tiens absolument à apprendre un langage objet, mais je désire aussi que
celui ci me permette d'appréhender de façon claire et exhaustive l'ensemble
des concepts objet.
Eux me conseillent plutot Smalltalk ou Python, mais cela s'éloigne de ce que
je connais déjà et ne semble pas hyper répandu.
Qu'en pensez vous ? Dois-je quand même investir dans le C++ ? Vous même,
programmez vous contraint et forcé en C++ parce que votre entreprise
l'impose ou parce que ce langage vous convient réellement ?

10 réponses

1 2 3 4
Avatar
Jean-Marc Bourguet
"Jean-Jacques Puel" writes:

Après un rapide sondage pour ma culture personnelle sur fro, il
apparait que les spécialistes de l'objet rejettent le langage C++
dont les concepts leur paraissent aberrants. En gros, il affirment
que C++ n'est qu'un patch du langage C afin de le rendre bancalement
OO.


Le C++ n'est pas un langage OO, c'est un langage multi-paradigme qui
permet la programmation orientee-objet ou c'est utile (et elle ne
l'est pas pour tous les problemes).

Cela m'embête un peu car je connais bien le langage C et il me
semble que l'apprentissage du C++ aurait été de ce fait facilité.


Pas si sur... il y a des choses a desapprendre et des reflexes a
perdre.

Je tiens absolument à apprendre un langage objet,


Pourquoi?

mais je désire aussi que celui ci me permette d'appréhender de façon
claire et exhaustive l'ensemble des concepts objet.

Eux me conseillent plutot Smalltalk ou Python, mais cela s'éloigne
de ce que je connais déjà et ne semble pas hyper répandu.
Qu'en pensez vous ?

Dois-je quand même investir dans le C++ ?


Tu ne dis rien de ton contexte ni de tes objectifs; comment veux-tu
avoir une reponse pertinente?

Vous même, programmez vous contraint et forcé en C++ parce que votre
entreprise l'impose ou parce que ce langage vous convient
réellement?


Contraint et force? Pas reellement. En fait des langages que je
connais bien, le C++ est mon second choix sur les criteres purement
langage (Ada etant le premier). Les autres criteres (disponibilite
des implementations et des programmeurs, interfacage avec les systemes
cibles et le code existant, perception par le management,...) font que
c'est en pratique un premier choix et que je ne suis meme pas sur que
je ne combatterais pas quelqu'un qui proposerais de faire de l'Ada.

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
Marc Boyer
Jean-Jacques Puel wrote:
Après un rapide sondage pour ma culture personnelle sur fro, il apparait que
les spécialistes de l'objet rejettent le langage C++ dont les concepts leur
paraissent aberrants.


Je viens de jetter un oeil sur la discussion, et elle
reste un peu café-du-commerce pour le moment.

Et pourtant, un livre qui fait relativement référence dans
le domaine de la POO (Design Paterns) illustre un exemple
sur deux en C++ si mes souvenirs sont bons.

En gros, il affirment que C++ n'est qu'un patch du
langage C afin de le rendre bancalement OO.


Disons que C++ est peut-être ce qu'on pouvait faire de
plus OO en gardant la compatibilité C, avec un typage
statique fort, et en permettant aussi d'autres paradigmes
de progammation.

Cela m'embête un peu car je connais bien le langage C et il me semble que
l'apprentissage du C++ aurait été de ce fait facilité.


Oui et non.

Je tiens absolument à apprendre un langage objet, mais je désire aussi que
celui ci me permette d'appréhender de façon claire et exhaustive l'ensemble
des concepts objet.
Eux me conseillent plutot Smalltalk ou Python, mais cela s'éloigne de ce que
je connais déjà et ne semble pas hyper répandu.


Fait attention quand tu dis "eux".
Les archives de Google me montrent "un" post qui te conseille
SmallTalk ou Python.
Moi, je t'ai parlé de Eiffel.

Qu'en pensez vous ? Dois-je quand même investir dans le C++ ? Vous même,
programmez vous contraint et forcé en C++ parce que votre entreprise
l'impose ou parce que ce langage vous convient réellement ?


Il est rare que la principale contrainte d'un code soit
de coder objet. La POO peut être un objectif pédagogique,
mais elle n'est qu'un *moyen* dans la production. Il existe
en général d'autres critères, et C++ me semble le meilleur
compromis dans un grand nombre de cas.

Marc Boyer
--
Lying for having sex or lying for making war? Trust US presidents :-(

Avatar
Fabien LE LEZ
On Wed, 21 Jan 2004 08:20:56 +0100, "Jean-Jacques Puel"
wrote:

Après un rapide sondage pour ma culture personnelle sur fro, il apparait que
les spécialistes de l'objet rejettent le langage C++ dont les concepts leur
paraissent aberrants. En gros, il affirment que C++ n'est qu'un patch du
langage C afin de le rendre bancalement OO.


Beaucoup de gens qui connaissent pas le C++ affirment ça.
AMHA, ce qui les gêne, c'est que le C++ n'impose pas la POO, il se
contente de la permettre.

Cela m'embête un peu car je connais bien le langage C et il me semble que
l'apprentissage du C++ aurait été de ce fait facilité.


Non. Du moins pas vraiment plus que si tu connaissais Java ou Python.

Qu'en pensez vous ? Dois-je quand même investir dans le C++ ?


Je ne saurais répondre à cette question, mais je confirme que c'est un
gros investissement (en temps).

Vous même,
programmez vous contraint et forcé en C++ parce que votre entreprise
l'impose ou parce que ce langage vous convient réellement ?


J'aime beaucoup ce langage, plus que n'importe quel autre que j'ai pu
essayer. Une des raisons est l'absence de réelle idéologie, notamment
au niveau de la POO (mais pas seulement) : si un endroit d'un
programme se prête à la POO, tu l'y utilises ; si à un autre endroit,
un autre paradygme est plus utile, tu y utilises ce qui te semble le
plus adapté. A aucun moment le langage ne te force à utiliser tel ou
tel paradygme (ou méthode). Evidemment, la liberté a l'inconvénient de
donner plus de responsabilités au programmeur : en C++, le compilo te
laisse (presque) tout faire, y compris des conneries ;-)

--
;-)

http://www.gotw.ca/gotw/063.htm
http://www.gotw.ca/gotw/067.htm#2

Avatar
SolozerK
Après un rapide sondage pour ma culture personnelle sur fro, il
apparait que les spécialistes de l'objet rejettent le langage C++ dont
les concepts leur paraissent aberrants. En gros, il affirment C++ n'est
qu'un patch du langage C afin de le rendre bancalement OO.
Il ne faut tout de même pas omettre les différents apports du C++ au C

autres que la POO, comme la surdéfinition de fonctions, les arguments par
défaut, les fonctions inlines, etc... même si l'atout majeur du C++ par
rapport au C est la POO, je trouve tout à fait abusif d'affirmer que "C++
n'est qu'un patch du langage C afin de le rendre bancalement OO"...

Cela m'embête un peu car je connais bien le langage C et il me
semble que l'apprentissage du C++ aurait été de ce fait facilité.
Comme dit dans les autres réponses, ce n'est pas vraiment évident...

j'aipour ma part débuté avec le C++ directement et ce n'est pas un réel
handicap (il y a pas mal de choses a "oublier" - notamment de mauvaises
habitudes - quand on passe du C au C++)

Dois-je quand même investir dans le C++ ?
D'aprés moi, ça dépend totalement de ce que tu veux faire, mais tu peux

de toute manière apprendre le C++ pour "tester"... aprés tout, c'est en
en testant plusieurs successivement qu'on finit par trouver son langage de
prédilection.

Vous même, programmez vous contraint et forcé en C++ parce que votre
entreprise l'impose ou parce que ce langage vous convient réellement?
Personellement, c'est mon langage préféré :), notamment parce qu'on peut

utiliser la POO que si le problème semble l'exiger, sans quoi de
nombreuses autres approches sont disponibles. J'aime aussi la syntaxe du
C++, mais là, c'est une question de goûts ^^

Avatar
kanze
SolozerK wrote in message
news:...
Après un rapide sondage pour ma culture personnelle sur fro, il
apparait que les spécialistes de l'objet rejettent le langage C++
dont les concepts leur paraissent aberrants. En gros, il affirment
C++ n'est qu'un patch du langage C afin de le rendre bancalement OO.


Il ne faut tout de même pas omettre les différents apports du C++ au C
autres que la POO, comme la surdéfinition de fonctions, les arguments
par défaut, les fonctions inlines, etc... même si l'atout majeur du
C++ par rapport au C est la POO, je trouve tout à fait abusif
d'affirmer que "C++ n'est qu'un patch du langage C afin de le rendre
bancalement OO"...


Je dirais même que l'apport le plus important, ce n'est pas l'OO, mais
l'encapsulation -- la partie privée d'une classe et les fonctions
membres.

Pour la reste, tout dépend de ce qu'on veut faire. Je trouve le C++ pas
mal pratique pour beaucoup de chose. Si le but de ma programmation
n'était que de me faire un plaisir intellectuel, je ne crois pas qu'il
serait mon langage de prédilection. Mais pour écrire des programmes
utiles, qui marchent, c'est pas mal.

--
James Kanze GABI Software mailto:
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


Avatar
Fabien LE LEZ
On 22 Jan 2004 02:02:44 -0800, wrote:

Je dirais même que l'apport le plus important, ce n'est pas l'OO, mais
l'encapsulation -- la partie privée d'une classe et les fonctions
membres.


Euh... Cela ne fait-il pas partie de l'OO ? Si la réponse est non,
quelqu'un pourrait-il tenter une définition de la POO ?

--
;-)

http://www.gotw.ca/gotw/063.htm
http://www.gotw.ca/gotw/067.htm#2

Avatar
James Kanze
Fabien LE LEZ writes:

|> On 22 Jan 2004 02:02:44 -0800, wrote:

|> >Je dirais même que l'apport le plus important, ce n'est pas
|> >l'OO, mais l'encapsulation -- la partie privée d'une classe et
|> >les fonctions membres.

|> Euh... Cela ne fait-il pas partie de l'OO ? Si la réponse est
|> non, quelqu'un pourrait-il tenter une définition de la POO ?

Justement, ça dépend de la définition de OO. Qui elle dépend
de qui la donne. Si je réprend la terminologie de Booch, je crois que
sans polymorphisme, on ne peut parler que de « object based », et
non d'« object oriented ».

En fait je suis un peu comme toi. J'ai une tendance à ne pas faire
une distinction absolue. À la fin, si ça m'aide à résoudre
mes problèmes, je m'en sers. Que ça s'appelle orienté objet ou
non. Mais j'imagine qu'il y en a qui associe OO et fonctions
virtuelles ; tout ce que je voulais dire, c'est qu'il y avait une chose
encore plus importante (AMA) que les fonctions virtuelles.

--
James Kanze mailto:
Conseils en informatique orientée objet/
Beratung in objektorientierter Datenverarbeitung
11 rue de Rambouillet, 78460 Chevreuse, France +33 1 41 89 80 93
Avatar
Jean-Marc Bourguet
Fabien LE LEZ writes:

On 22 Jan 2004 02:02:44 -0800, wrote:

Je dirais même que l'apport le plus important, ce n'est pas l'OO, mais
l'encapsulation -- la partie privée d'une classe et les fonctions
membres.


Euh... Cela ne fait-il pas partie de l'OO ?


Non. (De même la généricité n'en fait pas partie.)

Je ne sais plus où j'ai vu le schéma suivant montrant la montée en
abstraction. C'est naturellement un schéma, les langages servent
d'exemple et je n'ai donné que des langages au typage statique. Avec
de la discipline on peut plus ou moins facilement passer aux niveaux
supérieurs avec un langage donné, j'ai pas par exemple de bon exemple
de langages à modules ne présentant pas aussi des types de données
abstraits -- des variantes de Pascal vraissemblablement, Modula-1? --
, mais c'est la bonne programmation en C, en C on peut même passer au
niveau supérieur en se limitant aux pointeurs comme type abstraits.
De plus les langages ne sont pas nécessairement homogènes dans leur
degré d'abstraction sur les opérations et les données. La notion de
routine par exemple est présente en FORTRAN et en Algol.

Données Opérations

adresses mémoires instructions machines langage machine
emplacements nommés instructions assembleur assembleur
types standard instructions standards FORTRAN, Algol
types utilisateurs routines Pascal, Algol 68, C
modules
types de données abstraits Ada 83, Modula-2
classes C++, Ada 95, Modula-3

Et l'enscapsulation est donc l'étape précédente dans cette montée. Si
le C++ a fait monter la majorité des programmeurss C de deux ou trois
niveaux pour les gens familiers avec l'état de l'art en génie logiciel
le saut fut moins rude.

Il faut remarquer qu'on peut facilement imaginer des langages
permettant la POO sans types de données abtraits (par exemple
l'équivalent de la partie privée en Python n'est -- n'était? je n'ai
pas regardé les dernières versions -- qu'une convention).

Si la réponse est non,
quelqu'un pourrait-il tenter une définition de la POO ?


L'utilisation du polymorphisme de substitution? (La programmation
générique étant dans ce cadre d'utilisation du polymorphisme
paramétrique. À ce sujet, la programmation générique se situe pour
moi sur un autre axe, comme la programmation fonctionnelle: toute deux
consistent à pouvoir manipuler naturellement des choses qui ne le sont
pas -- ou de manière restraintes -- dans les autres langages: les
types et les routines).

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
Fabien LE LEZ
On 24 Jan 2004 08:41:43 +0100, James Kanze wrote:

Si je réprend la terminologie de Booch, je crois que
sans polymorphisme, on ne peut parler que de « object based », et
non d'« object oriented ».


Et la différence entre "programmation objet" et "programmation
orientée objet" ? ;-)

--
;-)

http://www.gotw.ca/gotw/063.htm
http://www.gotw.ca/gotw/067.htm#2

Avatar
Fabien LE LEZ
Bon, ben tant pis pour l'OP, mais je crois que je vais continuer à
faire comme je le sens, sans me préoccuper de savoir si c'est de la
POO ou pas ;-)

--
;-)

http://www.gotw.ca/gotw/063.htm
http://www.gotw.ca/gotw/067.htm#2
1 2 3 4