[6] Problèmes d'ordre général
(Une partie de C++ FAQ Lite fr, Copyright © 1991-2002, Marshall Cline cline@parashift.com )

Traduit de l'anglais par Jérôme Lecomte

Les FAQs de la section [6]


[6.1] C++ est-il un langage pratique?

Oui.

C++ est un outil pratique. Il n'est pas parfait , mais il est utile.

Dans le monde du logiciel industriel, C++ est vu comme un outil sur, mûr, et sans surprise. Il est très répandu dans l'industrie ce qui le valorise d'un point de vue productif en général.

[ Haut | Bas | Section précédente | Section suivante ]


[6.2] C++ est-il un langage parfait?

Non.

C++ n'a pas été conçu pour montrer à quoi ressemble un langage OO parfait. Il a été conçu pour être un outil pratique de résolution des problèmes réels. Il a quelques verrues, mais le seul endroit où il est approprié de continuer à perfectionner une pièce jusqu'à la perfection est dans un configuration académique pure. Ce n'était pas but de C++.

[ Haut | Bas | Section précédente | Section suivante ]


[6.3] Quelle est le principe des techniques OO (orienté objet)?

Les techniques orientées objet sont la meilleure façon connue de traiter les gros projet, les applications complexes de logiciel et de systèmes.

Slogan OO : l'industrie du logiciel "n'arrive pas" à satisfaire les demandes de systèmes logiciel grands, et complexes. Mais cette "panne" est réellement due à nos succès: nos succès ont poussé les utilisateurs à demander plus. Malheureusement cela a créé une nouvelle demande que l'analyse "strucutrée", et les techniques de conception et de programmation classiques ne pouvaient pas satisfaire. Ceci a exigé de nous de créer un meilleur paradigme.

C++ est un langage de programmation OO. C++ peut également être utilisé comme langage de programmation traditionnel (comme "meilleur C"). Cependant si vous l'utilisez "comme meilleur C", ne comptez pas obtenir les avantages de la programmation orientée objet.

[ Haut | Bas | Section précédente | Section suivante ]


[6.4] C++ est-il meilleur qu'ADA? (ou visual basic, Java, C, Fortran, Pascal, smalltalk, ou tout autre langage?)

Cette question produit beaucoup beaucoup plus de chaleur que de lumière. Veuillez lire le paragraphe qui suit avant de poster une variante de cette question.

Dans 99% des cas, la sélection du langage de programmation est dominée par des considérations relatives à l'activité, et non pas par des considérations techniques. Les critères qui finissent par peser sont des citères de gestioncomme la disponibilité d'un environnement pour la machine de développement, la disponibilité de l' (des) environment(s) d'exécution pour la (les) machine(s) de déploiement, les problèmes légaux ou de licence des environnements d'exécution et/ou de développement, la disponibilité de développeurs qualifiés, la disponibilité de services de conseil, et la culture/politique de l'entreprise. Ces considérations de gestion jouent généralement un rôle beaucoup plus grand que le temps de compilation, le la vitesse d'exécution, le typage de donnée statique ou dynamique, le liage statique ou dynamique, etc...

Quiconque plaidant en faveur d'un langage par rapport aux autres d'une façon purement technique (c-à-d., qui ignore les problèmes de gestion) se désigne lui-même comme un technicien tétu, et ne mérite pas d'être écouté.

[ Haut | Bas | Section précédente | Section suivante ]


[6.5] Qui utilise C++?

Un grand, un très grand nombre de sociétés et d'organismes gouvernementaux.

Le nombre de développeurs C++ double chaque année. Vous pouvez imaginer que cinq personnes deviennent développeur C++ tandis que vous lisez ce FAQ.

La croissance est une des caractéristiques déterminantes de C++ .

[ Haut | Bas | Section précédente | Section suivante ]


[6.6] Combien de temps prend l'apprentissage de la programmation OO/C++?

Des sociétés enseignent C++ avec succès en "courtes périodes" où un cours d'un semestre d'université est comprimé dans une semaine de travail de 40 heures. Mais indépendamment de l'endroit où vous obtenez votre formation, assurez vous que les cours ont un temps consacré à la pratique, car la plupart des personnes apprennent mieux quand elles ont des (mini-)projets pour appliquer les concepts "figés". Mais même la meilleureformation ne vous rend pas encore prêts.

Cela prend 6-12 mois pour devenir compétent en OO/C++. Moins si les développeurs ont un accès facile à un corps "local" d'experts, plus s'il n'y a pas de "bonne" bibliothèque de classes C++ tout usage. Devenir un de ces experts qui peuvent apprendre à d'autres prend autour de 3 ans.

Certains ne le font jamais. Vous n'avez pas une chance à moins que vous soyez receptif et motivé. Comme minimum strict, vous devez savoir admettre quand vous avez eu tort. Comme minimum strict de "motivation" vous devez être disposé à mettre quelques heures supplémentaires (il est beaucoup plus facile d'apprendre quelques nouveaux trucs que de changer votre paradigme [ c-à-d., pour changer votre manière de penser; pour changer votre notion de la qualité; pour changer votre modèle mental du monde de la technologie ]).

Deux choses que vous devriez faire:

Deux choses vous ne devriez pasfaire:

[ Haut | Bas | Section précédente | Section suivante ]


[6.7] Donnez moi quelques caractéristiques de C++ d'un point de vue "business"?

Voici quelques caractéristiques OO/C++ d'un point vue business:

[ Haut | Bas | Section précédente | Section suivante ]


[6.8] Les fonctions virtual (appel dynamique) sont-elles essentielles à la programmation OO/C++?

Oui!
Sans les functions virtuelles, C++ ne serait pas orienté objet. La surcharge d'opérateurne sont après tout, qu'une variante syntaxique du C.

D'un point de vue de gestion, C++ sans les fonctions virtuelles a peu de valeur ajouté sur C. Les spécialistes pensent souvent qu'il y a une grande différence entre C et un C++ non orienté objet, mais sans OO, la différence n'est habituellement pas suffisante pour justifier le coût de formation des développeurs, des nouveaux outils, etc. En d'autres termes, si je devais conseiller un gestionnaire sur la pertinance d'un passage de C à un C++ non orienté objet (c-à-d changer de langage mais non de paradigme), je le ou la découragerais probablement à moins qu'il y ait des contraintes liées aux outils de développement. D'un point de vue gestion, OO peut aider à faire des systèmes plus extensibles et adaptables, mais la syntaxe des classes C++ seule sans OO peut éventuellement ne pas réduire le coût de maintenance, et certainement ajoute au coût de formation de manière significative.

Note: C++ sans virtual n'est pas OO. La programmation avec classes mais sans appels dynamiques s'appelle la programmation "basé objet", et non "orienté objet". Jeter les fonctions virtual est équivalent à jeter OO. Tout ce qu'il vous reste est la programmation basé objet, similaire au première version d'Ada (les versions récente d'Ada sont véritablement OO).

[ Haut | Bas | Section précédente | Section suivante ]


[6.9] Je suis du Missouri. Pouvez-vous me donner une raison simple qui fait que les fonctions virtual (appel dynamique) changent tout?

Vue d'ensemble: L'appel dynamique facilite la réutilisation du code en laissant l'anciencode appeler le nouveaucode.

Avant la programmation OO, la réutilisation se limitait à du code nouveau appelant du code ancien. Par exemple, un programmeur pouvait écrire une routine qui utilisait un code existant réutilisable tel que printf().

Avec la programmation OO, la réutilisation peut également être accomplie dans l'autre sens. Par exemple, un programmeur peut écrire une routine destinée à être appelée par un cadre d'exécution qui a été écrit par leur arrière, arrière grand-père. Et il n'y a aucun besoin de changer le code de l'arrière arrière grand-père. En fait, on n'a même pas besoin de recompiler le cadre appellant. Même si tout ce que vous avez est le fichier objet et si les fichiers sources que l'arrière, arrière grand-père avait écrit il y a 25 ans sont perdu, ce fichier objet antique appellera la nouvelle extension sans que quoi que ce soit tombe en morceaux.

Ceci s'appelle extensibilité, et ceci s'appelle programmation OO.

[ Haut | Bas | Section précédente | Section suivante ]


[6.10] Est-ce que C++ est compatible avec le C ANSI/ISO?

Quasiment.

C++ est aussi proche que possible de la compatibilité avec C, mais pas plus proche. En pratique, la différence principale est d'une part que C++ exige des prototypes, et que d'autre part la déclaration f() déclare une fonction qui ne prend aucun paramètre alors qu'en C, f() est le même chose que le f(...), c'est-à-dire une fonction prenant un nombre d'argument variable.

Il y a quelques autres différences plus subtiles, comme sizeof('x ') qui est égal à sizeof(char) en C++ mais qui est égal à sizeof(int) en C. De plus, C++ met les structures "étiquette" dans le même espace de nom que les autres noms, tandis que C exige un struct explicite (par exemple, la technique typedef struct Fred Fred; fonctionne toujours, mais elle est redondante en C++).

[ Haut | Bas | Section précédente | Section suivante ]


[6.11] Est-ce que le C++ est standardisé?

Oui.

C++ a été normalisé par l'ANSI (l'organisme de normalisation national américain), BSI (l'institut britannique de normes), DIN (l'organisme de normalisation national allemand), plusieurs autres organismes nationaux de normalisation, et ISO (l'organisme de normalisation international). La norme ISO a été menée à bonne fin et adoptée à l'unanimité le 14 Novemebre 1997.

Le comité ANSI-C++ s'appelle le "X3J16". Le groupe de standardisation ISO de C++ s'appelle le "WG21". L'ensemble des acteurs principaux dans le processus de normalisation de l'ANSI/ISO C++ compte des représentants d'Australie, du Canada, du Danemark, de France, d'Allemagne, d'Irlande, du Japon, de Hollandes, de Nouvelle Zélande, de Suède, du R-U, et des Etats-Unis, plus des représentants d'une centaine de société et de beaucoup de particuliers intéressés. Les principales sociétés incluent AT&T, Ericsson, Digital, Borland, Hewlett Packard, IBM, Mentor Graphics, Microsoft, Silicon Graphics, Sun Microsystems, et Siemens. Après environ 8 ans de travail, cette norme est maintenant complète. Le 14 Novembre 1997 a vu la norme être approuvée à l'unanimité des pays représentés à Morristown. La ratification finale par deux douzaines de pays est attendue pour Mars 1998.

[ Haut | Bas | Section précédente | Section suivante ]


[6.12] Où puis-je obtenir une copie du document décrivant l'ANSI/ISO C++ standard?

Vous pouvez obtenir une copie papier de la norme au près de l'organisme ANSI. Envoyez un courrier électronique à Lynn Barraou envoyez une lettre à l'adresse ci-dessous, et demandez la dernière version du "Draft Proposed American National Standard for Information Systems — Programming Language C++" qui correspond au document CD14882. Vous pouvez aussi commander une copie en écrivant une lettre à X3 Secretariat / 1250 Eye Street NW / Suite 200 / Washington, DC 20005. Le numéro de téléphone est 202-626-5738.

Vous pouvez également obtenir une copie papier par l'intermédiaire du Web (coût US$175): allez sur http://www.ansi.org, choisissez le menu Catalogs/Standards, puis choisissez "le catalogue en ligne d'ANSI-ISO-IEC". Recherchez "14882". Le document que vous recherchez est répertorié comme "ISO/IEC 14882-1998", avec le titre "Information technology - programming languages - C++". Vous pouvez également télécharger une copie électronique d'un fichier Acrobat (.pdf) de 2.8MB pour US$18. Pour cela, allez sur http://webstore.ansi.org/ansidocstore/default.asp. Pour lire le document, vous devez au prealable installer Acrobat reader (gratuit par download).

Enfin, vous pouvez lire la revue de presse de l'ISO à cette adresse. Cette revue de presse est accessible aux non programmeurs.

[ Haut | Bas | Section précédente | Section suivante ]


E-mail Marshall Cline Ecrire à l'auteur, au traducteur, ou en savoir plus sur la traduction.
[ C++ FAQ Lite fr | Table des matières | Index | A propos de l'auteur | © | Téléchargez votre propre copie ]
Dernière révision le 12 Nov 2002