Outils d'utilisateurs

Outils du Site


qu_est-ce_que_le_c

Différences

Cette page vous donne les différences entre la révision choisie et la version actuelle de la page.

Lien vers cette vue

qu_est-ce_que_le_c [2014/04/01 21:34]
gbdivers
qu_est-ce_que_le_c [2014/04/19 14:10] (Version actuelle)
gbdivers
Ligne 1: Ligne 1:
 > **Ce cours est une mise à jour du cours C++ de OpenClassRoom pour le mettre à jour pour le C++11/14. Le cours d'origine est consultable sur la page suivante : [[http://fr.openclassrooms.com/informatique/cours/programmez-avec-le-langage-c|Programmez avec le langage C++]], par Mathieu Nebra et Matthieu Schaller. Ce cours est sous licence CC-BY-NC-SA.** > **Ce cours est une mise à jour du cours C++ de OpenClassRoom pour le mettre à jour pour le C++11/14. Le cours d'origine est consultable sur la page suivante : [[http://fr.openclassrooms.com/informatique/cours/programmez-avec-le-langage-c|Programmez avec le langage C++]], par Mathieu Nebra et Matthieu Schaller. Ce cours est sous licence CC-BY-NC-SA.**
  
-[[programmez_avec_le_langage_c|Retourner au sommaire principal]]+^ Chapitre précédant ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[les_logiciels_necessaires_pour_programmer|Chapitre suivant]] ^
  
 ====== Qu'est-ce que le C++ ? ====== ====== Qu'est-ce que le C++ ? ======
Ligne 26: Ligne 26:
 Comme vous le voyez, chacun de ces programmes est conçu dans un but précis. On pourrait aussi citer les jeux, par exemple, qui sont prévus pour s'amuser : Starcraft II (figure suivante), World of Warcraft, Worms, Team Fortress 2, etc. Chacun d'eux correspond à un programme différent. Comme vous le voyez, chacun de ces programmes est conçu dans un but précis. On pourrait aussi citer les jeux, par exemple, qui sont prévus pour s'amuser : Starcraft II (figure suivante), World of Warcraft, Worms, Team Fortress 2, etc. Chacun d'eux correspond à un programme différent.
  
-> Tous les programmes ne sont pas forcément visibles. C'est le cas de ceux qui surveillent les mises à jour disponibles pour votre ordinateur ou, dans une moindre mesure, de votre antivirus. Ils tournent tous en « tâche de fond », ils n'affichent pas toujours une fenêtre ; mais cela ne les empêche pas d'être actifs et de travailler !+<note info>Tous les programmes ne sont pas forcément visibles. C'est le cas de ceux qui surveillent les mises à jour disponibles pour votre ordinateur ou, dans une moindre mesure, de votre antivirus. Ils tournent tous en « tâche de fond », ils n'affichent pas toujours une fenêtre ; mais cela ne les empêche pas d'être actifs et de travailler !</note>
  
 {{ http://uploads.siteduzero.com/files/280001_281000/280229.jpg }} {{ http://uploads.siteduzero.com/files/280001_281000/280229.jpg }}
 +<note legende>StarCraft 2</note>
  
-> Moi aussi je veux créer des programmes ! Comment dois-je m'y prendre ?+<note question>Moi aussi je veux créer des programmes ! Comment dois-je m'y prendre ?</note>
  
 Tout d'abord, commencez par mesurer vos ambitions. Un jeu tel que Starcraft II nécessite des dizaines de développeurs à plein temps, pendant plusieurs années. Ne vous mettez donc pas en tête des objectifs trop difficiles à atteindre. Tout d'abord, commencez par mesurer vos ambitions. Un jeu tel que Starcraft II nécessite des dizaines de développeurs à plein temps, pendant plusieurs années. Ne vous mettez donc pas en tête des objectifs trop difficiles à atteindre.
Ligne 47: Ligne 48:
 … peut signifier quelque chose comme « Affiche une fenêtre à l'écran ». … peut signifier quelque chose comme « Affiche une fenêtre à l'écran ».
  
-> Ouah ! Mais c'est super compliqué ! On va être obligé d'apprendre ce langage ?+<note question>Ouah ! Mais c'est super compliqué ! On va être obligé d'apprendre ce langage ?</note>
  
 Heureusement non. Heureusement non.
Ligne 53: Ligne 54:
 S'il fallait écrire dans ce langage (qu'on appelle langage binaire), il ne faudrait pas des années pour concevoir un jeu comme Starcraft II mais plutôt des millénaires (sans rire !). S'il fallait écrire dans ce langage (qu'on appelle langage binaire), il ne faudrait pas des années pour concevoir un jeu comme Starcraft II mais plutôt des millénaires (sans rire !).
  
-Pour se simplifier la vie, les informaticiens ont créé des langages intermédiaires, plus simples que le binaire. Il existe aujourd'hui des centaines de langages de programmation. Pour vous faire une idée, vous pouvez consulter une liste des langages de programmation sur Wikipédia. Chacun de ces langages a des spécificités, nous y reviendrons.+Pour se simplifier la vie, les informaticiens ont créé des langages intermédiaires, plus simples que le binaire. Il existe aujourd'hui des centaines de langages de programmation. Pour vous faire une idée, vous pouvez consulter une [[http://fr.wikipedia.org/wiki/Liste_des_langages_de_programmation|liste des langages de programmation sur Wikipédia]]. Chacun de ces langages a des spécificités, nous y reviendrons.
  
 Tous les langages de programmation ont le même but : vous permettre de parler à l'ordinateur plus simplement qu'en binaire. Voici comment cela fonctionne : Tous les langages de programmation ont le même but : vous permettre de parler à l'ordinateur plus simplement qu'en binaire. Voici comment cela fonctionne :
Ligne 64: Ligne 65:
  
 {{ http://uploads.siteduzero.com/files/280001_281000/280235.png }} {{ http://uploads.siteduzero.com/files/280001_281000/280235.png }}
- +<note legende>La compilation</note>
-La compilation+
  
 Le fameux « programme de traduction » s'appelle en réalité le compilateur. C'est un outil indispensable. Il vous permet de transformer votre code, écrit dans un langage de programmation, en un vrai programme exécutable. Le fameux « programme de traduction » s'appelle en réalité le compilateur. C'est un outil indispensable. Il vous permet de transformer votre code, écrit dans un langage de programmation, en un vrai programme exécutable.
Ligne 72: Ligne 72:
  
 {{ http://uploads.siteduzero.com/files/280001_281000/280236.png }} {{ http://uploads.siteduzero.com/files/280001_281000/280236.png }}
 +<note legende>La compilation en détail</note>
  
-La compilation en détail+Voilà ce que je vous demande de retenir pour le moment : ce n'est pas bien compliqué mais c'est la base à connaître absolument !
  
-Voilà ce que je vous demande de retenir pour le moment : ce n'est pas bien compliqué mais c'est la base à connaître absolument !+<note question>Mais justement, comment dois-je faire pour choisir le langage de programmation que je vais utiliser ? Tu as dit toi-même qu'il en existe des centaines !
  
-> Mais justement, comment dois-je faire pour choisir le langage de programmation que je vais utiliser ? Tu as dit toi-même qu'il en existe des centaines ! +Lequel est le meilleur ? Est-ce que le C++ est un bon choix ?</note>
-Lequel est le meilleur ? Est-ce que le C++ est un bon choix ?+
  
 Les programmeurs (aussi appelés développeurs) connaissent en général plusieurs langages de programmation et non pas un seul. On se concentre rarement sur un seul langage de programmation. Les programmeurs (aussi appelés développeurs) connaissent en général plusieurs langages de programmation et non pas un seul. On se concentre rarement sur un seul langage de programmation.
Ligne 92: Ligne 92:
 ==== Le C++ : langage de haut ou de bas niveau ? ==== ==== Le C++ : langage de haut ou de bas niveau ? ====
  
-Parmi les centaines de langages de programmation qui existent, certains sont plus populaires que d'autres. Sans aucun doute, le C++ est un langage très populaire. Des sites comme langpop.com tiennent à jour un classement des langages les plus couramment utilisés, si cette information vous intéresse. Comme vous pourrez le constater, le C, le Java et le C++ occupent régulièrement le haut du classement.+Parmi les centaines de langages de programmation qui existent, certains sont plus populaires que d'autres. Sans aucun doute, le C++ est un langage très populaire. Des sites comme [[http://langpop.com/|langpop.com]] tiennent à jour un classement des langages les plus couramment utilisés, si cette information vous intéresse. Comme vous pourrez le constater, le C, le Java et le C++ occupent régulièrement le haut du classement.
  
 La question est : faut-il choisir un langage parce qu'il est populaire ? Il existe des langages très intéressants mais peu utilisés. Le souci avec les langages peu utilisés, c'est qu'il est difficile de trouver des gens pour vous aider et vous conseiller quand vous avez un problème. Voilà entre autres pourquoi le C++ est un bon choix pour qui veut débuter : il y a suffisamment de gens qui développent en C++ pour que vous n'ayez pas à craindre de vous retrouver tous seuls ! La question est : faut-il choisir un langage parce qu'il est populaire ? Il existe des langages très intéressants mais peu utilisés. Le souci avec les langages peu utilisés, c'est qu'il est difficile de trouver des gens pour vous aider et vous conseiller quand vous avez un problème. Voilà entre autres pourquoi le C++ est un bon choix pour qui veut débuter : il y a suffisamment de gens qui développent en C++ pour que vous n'ayez pas à craindre de vous retrouver tous seuls !
Ligne 98: Ligne 98:
 Bien entendu, il y a d'autres critères que la popularité. Le plus important à mes yeux est le niveau du langage. Il existe des langages de haut niveau et d'autres de plus bas niveau. Bien entendu, il y a d'autres critères que la popularité. Le plus important à mes yeux est le niveau du langage. Il existe des langages de haut niveau et d'autres de plus bas niveau.
  
-> Qu'est-ce qu'un langage de haut niveau ?+<note question>Qu'est-ce qu'un langage de haut niveau ?</note>
  
 C'est un langage assez éloigné du binaire (et donc du fonctionnement de la machine), qui vous permet généralement de développer de façon plus souple et rapide. C'est un langage assez éloigné du binaire (et donc du fonctionnement de la machine), qui vous permet généralement de développer de façon plus souple et rapide.
 Par opposition, un langage de bas niveau est plus proche du fonctionnement de la machine : il demande en général un peu plus d'efforts mais vous donne aussi plus de contrôle sur ce que vous faites. C'est à double tranchant. Par opposition, un langage de bas niveau est plus proche du fonctionnement de la machine : il demande en général un peu plus d'efforts mais vous donne aussi plus de contrôle sur ce que vous faites. C'est à double tranchant.
  
-Le C++ ? On considère qu'il fait partie de la seconde catégorie : c'est un langage dit « de bas niveau ». Mais que cela ne vous fasse pas peur ! Même si programmer en C++ peut se révéler assez complexe, vous aurez entre les mains un langage très puissant et particulièrement rapide. En effet, si l'immense majorité des jeux sont développés en C++, c'est parce qu'il s'agit du langage qui allie le mieux puissance et rapidité. Voilà ce qui en fait un langage incontournable.+__Le C++ ? On considère qu'il fait partie de la seconde catégorie : c'est un langage dit « de bas niveau ». Mais que cela ne vous fasse pas peur ! Même si programmer en C++ peut se révéler assez complexe, vous aurez entre les mains un langage très puissant et particulièrement rapide. En effet, si l'immense majorité des jeux sont développés en C++, c'est parce qu'il s'agit du langage qui allie le mieux puissance et rapidité. Voilà ce qui en fait un langage incontournable.__
  
 Le schéma ci-dessous représente quelques langages de programmation classés par « niveau » (figure suivante). Le schéma ci-dessous représente quelques langages de programmation classés par « niveau » (figure suivante).
  
 {{ http://uploads.siteduzero.com/files/273001_274000/273556.png }} {{ http://uploads.siteduzero.com/files/273001_274000/273556.png }}
- +<note legende>Les niveaux des langages</note>
-Les niveaux des langages+
  
 Vous constaterez qu'il est en fait possible de programmer en binaire grâce à un langage très basique appelé l'assembleur. Étant donné qu'il faut déployer des efforts surhumains pour coder ne serait-ce qu'une calculatrice, on préfère le plus souvent utiliser un langage de programmation. Vous constaterez qu'il est en fait possible de programmer en binaire grâce à un langage très basique appelé l'assembleur. Étant donné qu'il faut déployer des efforts surhumains pour coder ne serait-ce qu'une calculatrice, on préfère le plus souvent utiliser un langage de programmation.
  
-> En programmation, la notion de « niveau » est relative. Globalement, on peut dire que le C++ est « bas niveau » par rapport au Python, mais il est plus « haut niveau » que l'assembleur. Tout dépend de quel point de vue on se place.+<note info>En programmation, la notion de « niveau » est relative. Globalement, on peut dire que le C++ est « bas niveau » par rapport au Python, mais il est plus « haut niveau » que l'assembleur. Tout dépend de quel point de vue on se place.</note>
  
 ==== Résumé des forces du C++ ==== ==== Résumé des forces du C++ ====
  
-  * Il est très répandu. Comme nous l'avons vu, il fait partie des langages de programmation les plus utilisés sur la planète. On trouve donc beaucoup de documentation sur Internet et on peut facilement avoir de l'aide sur les forums. Il paraît même qu'il y a des gens sympas qui écrivent des cours pour débutants dessus. :-° +  * **Il est très répandu**. Comme nous l'avons vu, il fait partie des langages de programmation les plus utilisés sur la planète. On trouve donc beaucoup de documentation sur Internet et on peut facilement avoir de l'aide sur les forums. Il paraît même qu'il y a des gens sympas qui écrivent des cours pour débutants dessus.  
-  * Il est rapide, très rapide même, ce qui en fait un langage de choix pour les applications critiques qui ont besoin de performances. C'est en particulier le cas des jeux vidéo, mais aussi des outils financiers ou de certains programmes militaires qui doivent fonctionner en temps réel. +  * **Il est rapide**, très rapide même, ce qui en fait un langage de choix pour les applications critiques qui ont besoin de performances. C'est en particulier le cas des jeux vidéo, mais aussi des outils financiers ou de certains programmes militaires qui doivent fonctionner en temps réel. 
-  * Il est portable : un même code source peut théoriquement être transformé sans problème en exécutable sous Windows, Mac OS et Linux. Vous n'aurez pas besoin de réécrire votre programme pour d'autres plates-formes ! +  * **Il est portable** : un même code source peut théoriquement être transformé sans problème en exécutable sous Windows, Mac OS et Linux. Vous n'aurez pas besoin de réécrire votre programme pour d'autres plates-formes ! 
-  * Il existe de nombreuses bibliothèques pour le C++. Les bibliothèques sont des extensions pour le langage, un peu comme des plug-ins. De base, le C++ ne sait pas faire grand chose mais, en le combinant avec de bonnes bibliothèques, on peut créer des programmes 3D, réseaux, audio, fenêtrés, etc. +  * **Il existe de nombreuses bibliothèques** pour le C++. Les bibliothèques sont des extensions pour le langage, un peu comme des plug-ins. De base, le C++ ne sait pas faire grand chose mais, en le combinant avec de bonnes bibliothèques, on peut créer des programmes 3D, réseaux, audio, fenêtrés, etc. 
-  * Il est multi-paradigmes (outch !). Ce mot barbare signifie qu'on peut programmer de différentes façons en C++. Vous êtes encore un peu trop débutants pour que je vous présente tout de suite ces techniques de programmation mais l'une des plus célèbres est la Programmation Orientée Objet (POO). C'est une technique qui permet de simplifier l'organisation du code dans nos programmes et de rendre facilement certains morceaux de codes réutilisables. La partie II de ce cours sera entièrement dédiée à la POO !+  * **Il est multi-paradigmes** (outch !). Ce mot barbare signifie qu'on peut programmer de différentes façons en C++. Vous êtes encore un peu trop débutants pour que je vous présente tout de suite ces techniques de programmation mais l'une des plus célèbres est la Programmation Orientée Objet (POO). C'est une technique qui permet de simplifier l'organisation du code dans nos programmes et de rendre facilement certains morceaux de codes réutilisables. La partie II de ce cours sera entièrement dédiée à la POO !
  
-Bien entendu, le C++ n'est pas LE langage incontournable. Il a lui-même ses défauts par rapport à d'autres langages, sa complexité en particulier. Vous avez beaucoup de contrôle sur le fonctionnement de votre ordinateur (et sur la gestion de la mémoire) : cela offre une grande puissance mais, si vous l'utilisez mal, vous pouvez plus facilement faire planter votre programme. Ne vous en faites pas, nous découvrirons tout cela progressivement dans ce cours.+Bien entendu, le C++ n'est pas LE langage incontournable. Il a lui-même ses défauts par rapport à d'autres langages, sa complexité en particulier. __Vous avez beaucoup de contrôle sur le fonctionnement de votre ordinateur (et sur la gestion de la mémoire) : cela offre une grande puissance mais, si vous l'utilisez mal, vous pouvez plus facilement faire planter votre programme. Ne vous en faites pas, nous découvrirons tout cela progressivement dans ce cours.__
  
 ==== Petit aperçu du C++ ==== ==== Petit aperçu du C++ ====
Ligne 136: Ligne 135:
 int main() int main()
 { {
- cout << "Hello world!" << endl; +    cout << "Hello world!" << endl; 
- return 0;+    return 0;
 } }
 </code> </code>
Ligne 146: Ligne 145:
  
 {{ http://uploads.siteduzero.com/files/280001_281000/280249.png }} {{ http://uploads.siteduzero.com/files/280001_281000/280249.png }}
- +<note legende>Une carte perforée</note>
-Carte perforée+
  
 Autant vous dire que c'était long et fastidieux ! Autant vous dire que c'était long et fastidieux !
Ligne 157: Ligne 155:
   * 1958 : il y a longtemps, à l'époque où les ordinateurs pesaient des tonnes et faisaient la taille de votre maison, on a commencé à inventer un langage de programmation appelé l'Algol.   * 1958 : il y a longtemps, à l'époque où les ordinateurs pesaient des tonnes et faisaient la taille de votre maison, on a commencé à inventer un langage de programmation appelé l'Algol.
   * 1960-1970 : ensuite, les choses évoluant, on a créé un nouveau langage appelé le CPL, qui évolua lui-même en BCPL, puis qui prit le nom de langage B (vous n'êtes pas obligés de retenir tout ça par coeur).   * 1960-1970 : ensuite, les choses évoluant, on a créé un nouveau langage appelé le CPL, qui évolua lui-même en BCPL, puis qui prit le nom de langage B (vous n'êtes pas obligés de retenir tout ça par coeur).
-  * 1970 : puis, un beau jour, on en est arrivé à créer encore un autre langage qu'on a appelé… le langage C. Ce langage, s'il a subi quelques modifications, reste encore un des langages les plus utilisés aujourd'hui. %le plus utilisé, d'après langpop.com cité plus haut !% +  * 1970 : puis, un beau jour, on en est arrivé à créer encore un autre langage qu'on a appelé… le langage C. Ce langage, s'il a subi quelques modifications, reste encore un des langages les plus utilisés aujourd'hui. Le plus utilisé, d'après langpop.com cité plus haut ! 
-  * 1983 : un peu plus tard, on a proposé d'ajouter des choses au langage C, de le faire évoluer. Ce nouveau langage, que l'on a appelé « C++ », est entièrement basé sur le C. Le langage C++ n'est en fait rien d'autre que le langage C avec plusieurs nouveautés. Il s'agit de concepts de programmation poussés comme la programmation orientée objet, le polymorphisme, les flux… Bref, des choses bien compliquées pour nous pour le moment mais dont nous aurons l'occasion de reparler par la suite !+  * 1983 : __un peu plus tard, on a proposé d'ajouter des choses au langage C, de le faire évoluer. Ce nouveau langage, que l'on a appelé « C++ », est entièrement basé sur le C. Le langage C++ n'est en fait rien d'autre que le langage C avec plusieurs nouveautés. Il s'agit de concepts de programmation poussés comme la programmation orientée objet, le polymorphisme, les flux… Bref, des choses bien compliquées pour nous pour le moment mais dont nous aurons l'occasion de reparler par la suite !__ 
 + 
 +<note question>Une minute… Si le C++ est en fait une amélioration du C, pourquoi y a-t-il encore tant de gens qui développent en C ?</note> 
 + 
 +__Tout le monde n'a pas besoin des améliorations apportées par le langage C++. Le C est à lui seul suffisamment puissant pour être à la base des systèmes d'exploitation comme Linux, Mac OS X et Windows.
  
-> Une minute… Si le C++ est en fait une amélioration du C, pourquoi y a-t-il encore tant de gens qui développent en C ?+Ceux qui n'ont pas besoin des améliorations (mais aussi de la complexité !) apportées par le langage C++ se contentent donc très bien du langage et cemalgré son âge. Comme quoi, un langage peut être vieux et rester d'actualité.__
  
-Tout le monde n'a pas besoin des améliorations apportées par le langage C++. Le C est à lui seul suffisamment puissant pour être à la base des systèmes d'exploitation comme Linux, Mac OS X et Windows.+__A compléter : ce qu'il s'est passé depuis 1983...__
  
-Ceux qui n'ont pas besoin des améliorations (mais aussi de la complexité !apportées par le langage C++ se contentent donc très bien du langage C et ce, malgré son âge. Comme quoi, un langage peut être vieux et rester d'actualité.+  * __1998 : norme (major)__ 
 +  * __2003 : minor__ 
 +  * __2011 : major__ 
 +  * __2014 ? : minor__ 
 +  * __2017 ? : major__
  
 ==== Le concepteur ==== ==== Le concepteur ====
Ligne 173: Ligne 179:
 De nombreux langages de programmation se sont par la suite inspirés du C++. C'est notamment le cas du langage Java. De nombreux langages de programmation se sont par la suite inspirés du C++. C'est notamment le cas du langage Java.
  
-Le langage C++, bien que relativement ancien, continue à être amélioré. Une nouvelle version, appelée « C++1x », est d'ailleurs en cours de préparation. Il ne s'agit pas d'un nouveau langage mais d'une mise à jour du C++. Les nouveautés qu'elle apporte sont cependant trop complexes pour nous, nous n'en parlerons donc pas ici !+__Le langage C++, bien que relativement ancien, continue à être amélioré. Une nouvelle version, appelée « C++1x », est d'ailleurs en cours de préparation. Il ne s'agit pas d'un nouveau langage mais d'une mise à jour du C++. Les nouveautés qu'elle apporte sont cependant trop complexes pour nous, nous n'en parlerons donc pas ici !__
  
 ===== En résumé ===== ===== En résumé =====
Ligne 182: Ligne 188:
   * Le C++ est un langage de programmation très répandu et rapide. C'est une évolution du langage C car il offre en particulier la possibilité de programmer en orienté objet, une technique de programmation puissante qui sera présentée dans ce livre.   * Le C++ est un langage de programmation très répandu et rapide. C'est une évolution du langage C car il offre en particulier la possibilité de programmer en orienté objet, une technique de programmation puissante qui sera présentée dans ce livre.
  
-[[programmez_avec_le_langage_c|Retourner au sommaire principal]]+^ Chapitre précédant ^ [[programmez_avec_le_langage_c|Sommaire principal]] ^ [[les_logiciels_necessaires_pour_programmer|Chapitre suivant]] ^
  
 {{tag> Cours C++}} {{tag> Cours C++}}
qu_est-ce_que_le_c.1396380883.txt.gz · Dernière modification: 2014/04/01 21:34 par gbdivers