Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

Vous n'avez pas encore de compte Developpez.com ? L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Developpez.com

C++

Choisissez la catégorie, puis la rubrique :

logo
Sommaire > Généralités sur le C++
        Que faut-il savoir avant de commencer en C++ ?
        Qui utilise le C++ ?
        Le C++ est-il normalisé ?
        Combien de temps faut-il pour apprendre le C++ ?
        Dois-je apprendre le C avant le C++ ?
2.1. Guide de démarrage (7)
                Où trouver de la documentation de référence sur le C++ ?
                Ou trouver un compilateur C++ ?
                Où puis-je obtenir une copie de la norme ?
                Quel livre acheter ou lire ?
                Où puis-je trouver des cours à télécharger et à consulter ?
                Où trouver la solution des exercices du livre 'Le langage C++' de Stroustrup ?
                Au secours, à l'aide, j'ai une erreur ! Que faire ?
2.2. Bibliothèques complémentaires (4)
                Où trouver des bibliothèques de fonctions toutes faites ?
                Comment créer une interface graphique en C++ ?
                Comment manipuler des images ?
                Comment gérer les dates et les heures en C++ ?
2.3. Organisation du code source (6)
                Quels fichiers d'en-tête dois-je inclure ?
                Où dois-je inclure les fichiers d'en-tête ?
                Dans quel ordre dois-je mettre mes fichiers d'en-tête ?
                Comment faire avec les templates ?
                Comment vérifier que mon fichier d'en-tête peut être inclus indépendamment de tout autre ?
                Et avec les en-têtes précompilés ?



Que faut-il savoir avant de commencer en C++ ?
Créé le 17/10/2005[haut]
auteur : Aurélien Regat-Barrel
Vous avez décidé de vous lancer dans l'aventure C++ et nous vous en félicitons. Mais avant de démarrer votre apprentissage, il est bon de lire ce qui suit afin de partir sur de bonnes bases.

Le C++ est un langage dit "libre", c'est-à-dire non propriétaire, et soumis à une standardisation par un organisme indépendant : l'ISO (voir Le C++ est-il normalisé ?). Le but de ce standard est de permettre la portabilité d'un programme, moyennant la recompilation de son code source. Le C++ est en effet conçu pour être compilé en un exécutable spécifique à une plateforme donnée. On ne parle donc pas de script ni de commande C++, mais de code source et d'instruction. Le C++ n'est pas non plus un programme, un environnement ou un éditeur de logiciel. Ainsi, on ne développe pas avec le C++ de Microsoft, mais en C++ avec le compilateur de Microsoft.

Ce langage a été initialement développé comme extension du langage C par Bjarne Stroustrup au sein de Bell Labs, au début des années 1980. Ce dernier y a développé le premier compilateur C++ (nommé cfront), qui a évolué au fil du temps. Petit à petit, cette extension du C est devenue un langage à part entière, réellement différent du langage C. Aussi, ne vous y méprenez pas : programmer en C++ ne se résume pas à faire du C avec des classes, loin de là ! Ce sont deux langages très différents, qu'il faut distinguer. De plus, beaucoup de spécialistes s'accordent à dire qu'il n'est pas nécessaire d'apprendre le C avant le C++, voire même qu'il ne faut pas apprendre le C.

Ce n'est qu'en 1998 que le langage C++ a été normalisé, soit une quinzaine d'années après le début de son développement. Or, la communauté C++ était déjà très importante à ce moment, et la plupart des compilateurs actuels existaient déjà (dans d'anciennes versions) et ne pouvaient donc pas respecter une norme postérieure à leur sortie. Chacun d'entre-eux évoluant indépendamment des autres, on fait donc une distinction importante au niveau des compilateurs et de leur version, et non au niveau du langage (comme pour PHP4, PHP5, ...) qui reste toujours le même (celui défini par la norme).

Cela implique deux choses importantes :
- Un code C++ valide vis à vis de la norme peut parfaitement ne pas compiler sur la plupart des compilateurs, car utilisant des possibilités avancées du langage qui n'ont pas encore été implémentées.
- Un code C++ invalide du point de vue de la norme peut être accepté par certains compilateurs peu rigoureux

On peut néanmoins relativiser ces propos en précisant que dans l'ensemble, depuis quelques années, la majorité des compilateurs tend vers une conformité élevée avec la norme, voire totale. C'est pourquoi il faut veiller à en utiliser une version récente.

Cette situation peut un peu être comparée à celle des navigateurs web. Bien que le HTML/CSS soient standardisés, chaque navigateur propose des extensions qui lui sont propres, et ne respecte pas totalement le standard. Un code HTML valide peut donc produire un résultat différent en fonction du navigateur utilisé. Plus le navigateur est ancien, plus il sera difficile de lui faire accepter un code aux normes. A l'inverse, les navigateurs récents tendent à s'uniformiser autour des standards, et en implémentent de plus en plus de choses. En C++, c'est un peu la même chose. Il est facile de lier son code à un compilateur en particulier, en profitant des extensions de ce dernier. Et plus le compilateur est ancien, et moins il respecte le standard.
C'est pourquoi on fait une distinction entre ce qui est portable, et ce qui ne l'est pas (la notion de portabilité incluant la compatibilité entre compilateurs).

Il existe un grand nombre de compilateurs. Certains sont Open Source (GCC, Open Watcom), et beaucoup d'autres sont commerciaux (Borland, Comeau, HP, IBM, Intel, Microsoft, SGI, Sun, ...). Le C++ étant simplement une norme, il n'y a pas d'implémentation de référence, ni même de site internet central comme c'est le cas pour des langages comme Python, Perl, ... Il n'y a donc pas non plus de documentation de référence autre que la norme elle même (voir Où trouver de la documentation de référence sur le C++ ? et Où puis-je obtenir une copie de la norme ?).

Cette norme couvre deux aspects :
- le langage lui même, c'est-à-dire sa syntaxe, etc...
- la bibliothèque standard qui l'accompagne

Cette dernière est assez limitée au regard d'autres langages. En particulier en ce qui concerne l'interaction avec le système (afin de faciliter son implémentation). Ainsi, on ne peut pas faire grand chose de plus que des opérations élémentaires sur la console et les fichiers. La norme ne définit rien en ce qui concerne :
- la programmation réseau / internet
- le multitâche / la gestion de processus
- les interfaces graphiques
- le graphisme / multimédia
- etc...

Ceci explique en partie le manque d'empressement des développeurs de compilateurs à réaliser des outils qui respectent le standard à 100%. Ils ont généralement préféré investir dans la réalisation de bibliothèques et d'environnements comblant ces lacunes. De ce fait, on peut bien faire tout cela en C++, mais pas en C++ standard. Il faut avoir recours à des bibliothèques tierces, et pour chacun de ces domaines, le C++ est richement fourni, très richement même.
Ainsi, il n'y a pas une manière de développer des interfaces graphiques en C++, mais des dizaines (voir Comment créer une interface graphique en C++ ?), et aucune n'est standard.

On peut résumer les choses ainsi :
- ce qui est standard peut ne pas être portable à cause des anciens compilateurs encore utilisés. Mais un code standard est toujours préférable dans la mesure où c'est au compilateur de s'adapter pour parvenir à le compiler, quelque soit la plateforme cible. Les principaux compilateurs modernes vont dans ce sens.
- ce qui n'est pas standard peut malgré tout être rendu portable en adaptant le code pour qu'il compile sous plusieurs compilateurs / systèmes. C'est donc au code de s'adapter au compilateur, ce qui revient parfois à écrire plusieurs fois la même bibliothèque (une version pour Windows, une autre pour Linux...).

Sachez que la portabilité a un coût, notamment au niveau des fonctionnalités. Pour qu'une bibliothèque soit portable, on a intérêt à ce qu'elle utilise le moins possible les spécificités d'une plateforme donnée. Par exemple, pour réaliser une interface graphique, vous pouvez utiliser les MFC de Microsoft, uniquement avec le compilateur Visual C++ sous Windows. Ou alors vous pouvez utiliser Qt de Trolltech, qui compile avec Visual C++, mais aussi Borland C++ Builder, GCC, ... sous Windows, UNIX/Linux ou Mac. Pour que cela soit possible, elle a forcément fait l'impasse sur certaines spécificités de Windows absentes des autres OS (comme la base de registre...) alors que les MFC, plus proches du système, y donnent accès de manière directe. Alors, des MFC ou de Qt, laquelle est la meilleure ? A vous de le dire, en fonction de vos souhaits et de vos contraintes.

Les nombreuses bibliothèques tierces existantes se distinguent donc d'abord par le compromis qu'elles offrent entre portabilité et fonctionnalités. C'est l'antagonisme entre ces deux notions qui guidera votre choix de l'une d'entre elle, ainsi que les critères de coût, de pérennité, de documentation, etc...

Ayez donc bien à l'esprit ce qui est standard de ce qui ne l'est pas. Si vous demandez de l'aide à propos d'une bibliothèque C++ non standard sur un forum dédié au C++ standard, il est parfaitement normal que personne ne sache répondre, bien qu'il s'agisse de C++. Essayez de toujours vous orienter vers le forum le plus adapté à votre outil de développement.


Qui utilise le C++ ?
Créé le 10/02/2004[haut]
auteur : Marshall Cline
Enormément de sociétés et d'administrations.

Le nombre important de développeurs (et par conséquent le grand nombre d'infrastructures de support, y compris vendeurs, outils, cours, ....) est une des caractéristiques importantes du C++.


Le C++ est-il normalisé ?
Créé le 10/02/2004[haut]
auteur : Marshall Cline
Oui.

Le standard du C++ a été finalisé et adopté par l'ISO (International Organization for Standardization) et par d'autres organismes de normalisation tels que l'ANSI (The American National Standards Institute), le BSI (The British Standards Institute), le DIN (The German National Standards Organization).
L'adoption du standard s'est faite à l'unanimité le 14 novembre 1997.

Le comité ANSI C++ est appelé "X3J16". Le groupe de travail de l'ISO se nomme "WG21". Le processus de normalisation implique un grand nombre d'acteurs : des représentants de l'Australie, du Canada, du Danemark, de la France, de l'Allemagne, de l'Irlande, du Japon, de la Hollande, de la Nouvelle-Zélande, de la Suède, du Royaume-Uni, et des Etats-Unis ainsi que des représentants d'une centaine de sociétés plus de nombreux particuliers impliqués. Les acteurs majeurs incluent AT&T, Ericsson, Digital, Borland, Hewlett Packard, IBM, Mentor Graphics, Microsoft, Silicon Graphics, Sun Microsystems et Siemens. Après 8 ans de travaux, le standard est maintenant finalisé. Le standard a été approuvé par un vote à l'unanimité des représentants présents à Morristown le 14 novembre 1997.

lien : faq Où puis-je obtenir une copie de la norme ?

Combien de temps faut-il pour apprendre le C++ ?
Créé le 10/02/2004[haut]
auteur : Marshall Cline
Des sociétés arrivent à prodiguer des cours intensifs, où un semestre de cours de niveau universitaire est compressé en une semaine de 40 heures. Mais, indépendamment du lieu où vous suivrez vos cours, assurez-vous que les cours ont des séances 'pratiques', étant donné que la plupart des gens apprennent mieux en ayant des projets sur lesquels travailler et faire des essais. Mais même avec la meilleure formation, ils ne sont pas encore prêts.

Cela prend de 6 à 12 mois pour devenir productif en technique OO / C++, moins si les développeurs ont accès facilement à un groupe local d'experts, plus s'il n'y a pas de bonne bibliothèque des classes à usage général de disponible.
Devenir un de ces experts capable de guider les autres prend à peu près 3 ans.

Certaines personnes n'y arrivent jamais. Vous n'avez aucune chance à moins que vous n'acceptiez que l'on vous apprenne et que vous soyez motivé. Un minimum de réceptivité signifie que vous devez être capable de reconnaître quand vous vous êtes trompé. Un minimum de motivation signifie que vous devez être disposé à investir quelques heures supplémentaires (Il est nettement plus facile d'apprendre quelques nouveautés que de modifier votre paradigme [par ex., de changer votre façon de penser, la notion du bien, etc....])

Il y a 2 choses que vous devriez faire :

  • trouver un mentor, un guide
  • fournir 2 livres à vos élèves : un pour leur expliquer ce qui est légal, l'autre pour ce qui est moral.
et 2 que vous ne devriez pas faire
  • considérer le C comme un passage obligé pour apprendre le C++
  • considérer SmallTalk comme un passage obligé pour apprendre le C++


Dois-je apprendre le C avant le C++ ?
Mise à jour le 17/03/2008[haut]
auteur : LFE
Il s'agit sûrement de la question la plus posée et pour laquelle la réponse est sujette à une controverse interminable.

Il n'est pas nécessaire ni obligatoire de connaître le C pour faire du C++. Il est tout à fait possible et raisonnable d'apprendre le C++ directement.

Le C et le C++ sont deux langages différents qui n'ont pas la même notion d'abstraction : le C reste relativement proche de la logique de la machine et introduit des notions de gestion manuelle de la mémoire (entre autre) qui peuvent être particulièrement compliquées pour les néophytes; le C++ se suffit à lui même pour l'apprentissage des concepts fondamentaux.

Ainsi si vous ne connaissez pas encore la programmation et que vous souhaitez apprendre le C++, il est préférable d'apprendre à utiliser le C++ directement.



Consultez les autres F.A.Q.


Valid XHTML 1.0 TransitionalValid CSS!

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2008 Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.

Contacter le responsable de la rubrique C++

Partenaire : Hébergement Web