Différences entre versions de « C++ »

De Didaquest
Aller à la navigationAller à la recherche
Ligne 47 : Ligne 47 :
 
<!-- *************** Commercez les modifications *******************-->
 
<!-- *************** Commercez les modifications *******************-->
  
*'''Le C++ est le langage de programmation''' le plus utilisé par les développeurs, notamment en ce qui concerne les applications.
+
<span style="color:#000000;">'''Date de première version&nbsp;: </span>[https://fr.wikipedia.org/wiki/20_février 20]<span style="color:#000000;">&nbsp;</span>[https://fr.wikipedia.org/wiki/Février_1991 février]<span style="color:#000000;">&nbsp;</span>[https://fr.wikipedia.org/wiki/1991 19]<span style="color:#000000;">9</span>[https://fr.wikipedia.org/wiki/C++_(langage)#cite_note-1 1]
* Il permet d'aborder le développement sous plusieurs paradigmes : programmation générique, procédurale et orientée objet.  
+
 
* C'est un langage compilé, ce qui signifie que le code source est traduit en code objet, ou binaire pour que la machine puisse l'exécuter.
+
[https://fr.wikipedia.org/wiki/Paradigme_(programmation) Paradigmes]<span style="color:#000000;">&nbsp;:</span>[https://fr.wikipedia.org/wiki/Programmation_orientée_objet Objet]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Programmation_impérative impératif]<span style="color:#000000;">&nbsp;et&nbsp;</span>[https://fr.wikipedia.org/wiki/Langage_interprété interprété]
 +
 
 +
<span style="color:#000000;">'''Auteur&nbsp;:</span>[https://fr.wikipedia.org/wiki/Guido_van_Rossum Guido van Rossum]
 +
 
 +
<span style="color:#000000;">'''Développeurs&nbsp;: </span>[https://fr.wikipedia.org/wiki/C++_Software_Foundation C++ Software Foundation]
 +
 
 +
[https://fr.wikipedia.org/wiki/Version_d%27un_logiciel Dernière version]<span style="color:#000000;">: 3.</span><span style="color:#000000;">8.3 (20 mai 2020)'''</span>
 +
 
 +
<span style="color:#000000;">'''Typage&nbsp;: </span>[https://fr.wikipedia.org/wiki/Typage_fort Fort]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Typage_dynamique dynamique]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Duck_typing duck typing]
 +
 
 +
<span style="color:#000000;">'''Influencé par&nbsp;: </span>[https://fr.wikipedia.org/wiki/Typage_fort Fort]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Typage_dynamique dynamique]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Duck_typing duck typing]
 +
 
 +
<span style="color:#000000;">'''Implémentations&nbsp;: </span>[https://fr.wikipedia.org/wiki/CC++ CC++]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Jython Jython]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/IronC++ IronC++]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/PyPy PyPy]
 +
 
 +
<span style="color:#000000;">'''Écrit</span><span style="color:#000000;"> en&nbsp;: '''</span>[https://fr.wikipedia.org/wiki/C_(langage) C]<span style="color:#000000;">'''&nbsp;pour CC++,&nbsp;'''</span>[https://fr.wikipedia.org/wiki/Java_(langage) Java]<span style="color:#000000;">'''&nbsp;pour Jython,&nbsp;'''</span>[https://fr.wikipedia.org/wiki/C_sharp C#]<span style="color:#000000;">'''&nbsp;pour IronC++ et en C++ lui-même pour PyPy'''</span>
 +
 
 +
<div style="color:#000000;">'''Système d’exploitation&nbsp;: Multiplate-forme'''</div>
 +
 
 +
<div style="color:#000000;">'''Licence&nbsp;: licence libre C++ Software Foundation'''</div>
 +
 
 +
<span style="color:#000000;">'''Site web&nbsp;: </span>[http://www.C++.org/ www.C++.org]
 +
 
 +
<div style="color:#000000;">'''Extension de fichier&nbsp;: py, pyc, pyd, pyo, pyw et pyz'''</div>
 +
 
 +
 
 +
{| style="border-spacing:0;margin:auto;width:17cm;"
 +
|-
 +
||
 +
|-
 +
|| <span style="color:#000000;">'''Date de première version&nbsp;: </span>[https://fr.wikipedia.org/wiki/20_février 20]<span style="color:#000000;">&nbsp;</span>[https://fr.wikipedia.org/wiki/Février_1991 février]<span style="color:#000000;">&nbsp;</span>[https://fr.wikipedia.org/wiki/1991 19]<span style="color:#000000;">9</span>[https://fr.wikipedia.org/wiki/C++_(langage)#cite_note-1 1]
 +
 
 +
[https://fr.wikipedia.org/wiki/Paradigme_(programmation) Paradigmes]<span style="color:#000000;">&nbsp;:</span>[https://fr.wikipedia.org/wiki/Programmation_orientée_objet Objet]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Programmation_impérative impératif]<span style="color:#000000;">&nbsp;et&nbsp;</span>[https://fr.wikipedia.org/wiki/Langage_interprété interprété]
 +
 
 +
<span style="color:#000000;">'''Auteur&nbsp;:</span>[https://fr.wikipedia.org/wiki/Guido_van_Rossum Guido van Rossum]
 +
 
 +
<span style="color:#000000;">'''Développeurs&nbsp;: </span>[https://fr.wikipedia.org/wiki/C++_Software_Foundation C++ Software Foundation]
 +
 
 +
[https://fr.wikipedia.org/wiki/Version_d%27un_logiciel Dernière version]<span style="color:#000000;">: 3.</span><span style="color:#000000;">8.3 (20 mai 2020)'''</span>
 +
 
 +
<span style="color:#000000;">'''Typage&nbsp;: </span>[https://fr.wikipedia.org/wiki/Typage_fort Fort]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Typage_dynamique dynamique]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Duck_typing duck typing]
 +
 
 +
<span style="color:#000000;">'''Influencé par&nbsp;: </span>[https://fr.wikipedia.org/wiki/Typage_fort Fort]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Typage_dynamique dynamique]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Duck_typing duck typing]
 +
 
 +
<span style="color:#000000;">'''Implémentations&nbsp;: </span>[https://fr.wikipedia.org/wiki/CC++ CC++]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/Jython Jython]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/IronC++ IronC++]<span style="color:#000000;">,&nbsp;</span>[https://fr.wikipedia.org/wiki/PyPy PyPy]
 +
 
 +
<span style="color:#000000;">'''Écrit</span><span style="color:#000000;"> en&nbsp;: '''</span>[https://fr.wikipedia.org/wiki/C_(langage) C]<span style="color:#000000;">'''&nbsp;pour CC++,&nbsp;'''</span>[https://fr.wikipedia.org/wiki/Java_(langage) Java]<span style="color:#000000;">'''&nbsp;pour Jython,&nbsp;'''</span>[https://fr.wikipedia.org/wiki/C_sharp C#]<span style="color:#000000;">'''&nbsp;pour IronC++ et en C++ lui-même pour PyPy'''</span>
 +
 
 +
<div style="color:#000000;">'''Système d’exploitation&nbsp;: Multiplate-forme'''</div>
 +
 
 +
<div style="color:#000000;">'''Licence&nbsp;: licence libre C++ Software Foundation'''</div>
 +
 
 +
<span style="color:#000000;">'''Site web&nbsp;: </span>[http://www.C++.org/ www.C++.org]
 +
 
 +
<div style="color:#000000;">'''Extension de fichier&nbsp;: py, pyc, pyd, pyo, pyw et pyz'''</div>
 +
|-
 +
|}
 +
<div style="color:#000000;">[https://fr.wikipedia.org/wiki/C++_(langage)#cite_note-1 ]</div>
 +
 
 +
 
 +
 
 +
* C++ est un [[langage de script de haut niveau]], structuré et [[open source]]. Il est multiplateformes, multi-paradigme et multi-usage.
 +
* Conçu pour être [[langage de programmation orientée objet| orientée objet]], il n'en dispose pas moins d'outils permettant de se livrer à la [[langage de programmation fonctionnelle |programmation fonctionnelle]] ou [[langage de programmation impérative |impérative]]; c'est d'ailleurs une des raisons qui lui vaut son appellation de « langage agile ».
 +
* Il est également apprécié par certains pédagogues qui y trouvent un langage où la syntaxe, clairement séparée des mécanismes de bas niveau, permet une initiation aisée aux concepts de base de la programmation.
 +
 
 +
* C++ est un [[langage de programmation interprété]], [[langage de programmation portable | portable]], [[langage de programmation dynamique| dynamique]], [[langage de programmation extensible| extensible]], [[langage de programmation gratuit| gratuit]], qui permet (sans l'imposer) une approche [[Programmation modulaire | modulaire]] et [[langage de programmation orientée objet| orientée objet]] de la programmation.  
  
  
Ligne 57 : Ligne 121 :
 
|Typologie= <!------------------------------------ Ne pas Modifier  -->
 
|Typologie= <!------------------------------------ Ne pas Modifier  -->
 
<!-- ****************** Commercez les modifications ****************-->
 
<!-- ****************** Commercez les modifications ****************-->
'''Le C++ est un langage de programmation''' permettant la programmation sous de multiples paradigmes comme la programmation procédurale, la programmation orientée objet et la programmation générique.  
+
* C++ est développé depuis 1989 par [[Guido van Rossum]] et de nombreux contributeurs bénévoles.
*'''C++''' est actuellement le 3e langage le plus utilisé au monde.
+
* C++ favorise la programmation impérative structurée, fonctionnelle et orientée objet. Il est doté d'un typage dynamique fort, d'une gestion automatique de la mémoire par ramasse-miettes et d'un système de gestion d'exceptions ; il est ainsi similaire à [[Perl]], [[Ruby]], [[Scheme]], [[Smalltalk]] et [[Tcl]].
* '''Le langage C++''' n'appartient à personne et par conséquent n'importe qui peut l'utiliser sans besoin d'une autorisation ou obligation de payer pour avoir le droit d'utilisation.
+
* Le langage C++ est placé sous une licence libre proche de la licence BSD et fonctionne sur la plupart des plates-formes informatiques, des supercalculateurs aux ordinateurs centraux, de Windows à Unix avec notamment GNU/Linux en passant par macOS, ou encore Android, iOS, et aussi avec Java ou encore .NET. Il est conçu pour optimiser la productivité des programmeurs en offrant des outils de haut niveau et une syntaxe simple à utiliser.
 +
{{@}} '''Caractéristiques'''
 +
Les principales caractéristiques du langage C++ et de ses deux implantations actuelles:
 +
* C++ est un langage de haut niveau, dont la traduction en codes binaires est complexe et prend donc toujours un certain temps. Cela pourrait paraître un inconvénient. En fait, les avantages que présentent les langages de haut niveau sont énormes : il est beaucoup plus facile d'écrire un programme dans un langage de haut niveau; l'écriture du programme prend donc beaucoup moins de temps ; la probabilité d'y faire des fautes est nettement plus faible ; la maintenance (c'est-à-dire l'apport de modifications ultérieures) et la recherche des erreurs (les « bugs ») sont grandement facilitées. De plus, un programme écrit dans un langage de haut niveau sera souvent portable, c'est-à-dire que l'on pourra le faire fonctionner sans guère de modifications sur des machines ou des systèmes d'exploitation différents. Un programme écrit dans un langage de bas niveau ne peut jamais fonctionner que sur un seul type de machine : pour qu'une autre l'accepte, il faut le réécrire entièrement.
 +
* C++ est portable, c'est à dire qu'il peut fonctionner sous différents systèmes d'exploitation, non seulement sur les différentes variantes d'UNiX, mais aussi sur les OS propriétaires: MacOS, BeOS, NeXTStep, M$-DOS et les différentes variantes de Window. Un nouveau compilateur, baptisé JC++, est écrit en Java et génère du bytecode Java.
 +
* C++ est gratuit, mais on peut l'utiliser sans restriction dans des projets commerciaux.
 +
* C++ convient aussi bien à des scripts d'une dizaine de lignes qu'à des projets complexes de plusieurs dizaines de milliers de lignes.
 +
* La syntaxe de C++ est très simple et, combinée à des types de données évolués (listes, dictionnaires,...), conduit à des programmes à la fois très compacts et très lisibles. A fonctionnalités égales, un programme C++ (abondament commenté et présenté selon les canons standards) est souvent de 3 à 5 fois plus court qu'un programme C ou C++ (ou même Java) équivalent, ce qui représente en général un temps de développement de 5 à 10 fois plus court et une facilité de maintenance largement accrue.
 +
* C++ gère ses ressources (mémoire, descripteurs de fichiers...) sans intervention du programmeur, par un mécanisme de comptage de références (proche, mais différent, d'un garbage collector).
 +
* Il n'y a pas de pointeurs explicites en C++.
 +
* C++ est (optionnellement) multi-threadé.
 +
* C++ est orienté-objet. Il supporte l'héritage multiple et la surcharge des opérateurs. Dans son modèle objets, et en reprenant la terminologie de C++, toutes les méthodes sont virtuelle.
 +
* C++ intègre, comme Java ou les versions récentes de C++, un système d'exceptions, qui permettent de simplifier considérablement la gestion des erreurs.
 +
* C++ est dynamique (l'interpréteur peut évaluer des chaînes de caractères représentant des expressions ou des instructions C++), orthogonal (un petit nombre de concepts suffit à engendrer des constructions très riches), reflectif (il supporte la métaprogrammation, par exemple la capacité pour un objet de se rajouter ou de s'enlever des attributs ou des méthodes, ou même de changer de classe en cours d'exécution) et introspectif (un grand nombre d'outils de développement, comme le debugger ou le profiler, sont implantés en C++ lui-même).
 +
* Comme Scheme ou SmallTalk, C++ est dynamiquement typé. Tout objet manipulable par le programmeur possède un type bien définit à l'exécution, qui n'a pas besoin d'être déclaré à l'avance.
 +
* C++ possède actuellement deux implémentations.
 +
:- L'une, interprétée, dans laquelle les programmes C++ sont compilés en instructions portables, puis exécutés par une machine virtuelle (comme pour Java, avec une différence importante: Java étant statiquement typé, il est beaucoup plus facile d'accélérer l'exécution d'un programme Java que d'un programme C++).
 +
:- L'autre, génère directement du bytecode Java.
 +
* C++ est extensible: comme Tcl ou Guile, on peut facilement l'interfacer avec des librairies C existantes. On peut aussi s'en servir comme d'un langage d'extension pour des systèmes logiciels complexes.
 +
* La librairie standard de C++, et les paquetages contribués, donnent accès à une grande variété de services: chaînes de caractères et expressions régulières, services UNIX standard (fichiers, pipes, signaux, sockets, threads...), protocoles Internet (Web, News, FTP, CGI, HTML...), persistence et bases de données, interfaces graphiques.
 +
* C++ est un langage qui continue à évoluer, soutenu par une communauté d'utilisateurs enthousiastes et responsables, dont la plupart sont des supporters du logiciel libre. Parallèlement à l'interpréteur principal, écrit en C et maintenu par le créateur du langage, un deuxième interpréteur, écrit en Java, est en cours de développement.
 +
 
 
}}<!-- ******** Fin Fiche Didactique Définition ******************* -->
 
}}<!-- ******** Fin Fiche Didactique Définition ******************* -->
  

Version du 11 mai 2022 à 13:47


Autres Fiches Conceptuelles
Posez une Question


(+)

Target Icon.pngVotre Publicité sur le Réseau Target Icon.png

Puce-didaquest.png Traduction


More-didaquest.png Traductions


Puce-didaquest.png Définition

Domaine, Discipline, Thématique


More-didaquest.png Justification


Définition écrite


  • C++ est développé depuis 1989 par Guido van Rossum et de nombreux contributeurs bénévoles.
  • C++ favorise la programmation impérative structurée, fonctionnelle et orientée objet. Il est doté d'un typage dynamique fort, d'une gestion automatique de la mémoire par ramasse-miettes et d'un système de gestion d'exceptions ; il est ainsi similaire à Perl, Ruby, Scheme, Smalltalk et Tcl.
  • Le langage C++ est placé sous une licence libre proche de la licence BSD et fonctionne sur la plupart des plates-formes informatiques, des supercalculateurs aux ordinateurs centraux, de Windows à Unix avec notamment GNU/Linux en passant par macOS, ou encore Android, iOS, et aussi avec Java ou encore .NET. Il est conçu pour optimiser la productivité des programmeurs en offrant des outils de haut niveau et une syntaxe simple à utiliser.


Blue-circle-target.png Caractéristiques Les principales caractéristiques du langage C++ et de ses deux implantations actuelles:

  • C++ est un langage de haut niveau, dont la traduction en codes binaires est complexe et prend donc toujours un certain temps. Cela pourrait paraître un inconvénient. En fait, les avantages que présentent les langages de haut niveau sont énormes : il est beaucoup plus facile d'écrire un programme dans un langage de haut niveau; l'écriture du programme prend donc beaucoup moins de temps ; la probabilité d'y faire des fautes est nettement plus faible ; la maintenance (c'est-à-dire l'apport de modifications ultérieures) et la recherche des erreurs (les « bugs ») sont grandement facilitées. De plus, un programme écrit dans un langage de haut niveau sera souvent portable, c'est-à-dire que l'on pourra le faire fonctionner sans guère de modifications sur des machines ou des systèmes d'exploitation différents. Un programme écrit dans un langage de bas niveau ne peut jamais fonctionner que sur un seul type de machine : pour qu'une autre l'accepte, il faut le réécrire entièrement.
  • C++ est portable, c'est à dire qu'il peut fonctionner sous différents systèmes d'exploitation, non seulement sur les différentes variantes d'UNiX, mais aussi sur les OS propriétaires: MacOS, BeOS, NeXTStep, M$-DOS et les différentes variantes de Window. Un nouveau compilateur, baptisé JC++, est écrit en Java et génère du bytecode Java.
  • C++ est gratuit, mais on peut l'utiliser sans restriction dans des projets commerciaux.
  • C++ convient aussi bien à des scripts d'une dizaine de lignes qu'à des projets complexes de plusieurs dizaines de milliers de lignes.
  • La syntaxe de C++ est très simple et, combinée à des types de données évolués (listes, dictionnaires,...), conduit à des programmes à la fois très compacts et très lisibles. A fonctionnalités égales, un programme C++ (abondament commenté et présenté selon les canons standards) est souvent de 3 à 5 fois plus court qu'un programme C ou C++ (ou même Java) équivalent, ce qui représente en général un temps de développement de 5 à 10 fois plus court et une facilité de maintenance largement accrue.
  • C++ gère ses ressources (mémoire, descripteurs de fichiers...) sans intervention du programmeur, par un mécanisme de comptage de références (proche, mais différent, d'un garbage collector).
  • Il n'y a pas de pointeurs explicites en C++.
  • C++ est (optionnellement) multi-threadé.
  • C++ est orienté-objet. Il supporte l'héritage multiple et la surcharge des opérateurs. Dans son modèle objets, et en reprenant la terminologie de C++, toutes les méthodes sont virtuelle.
  • C++ intègre, comme Java ou les versions récentes de C++, un système d'exceptions, qui permettent de simplifier considérablement la gestion des erreurs.
  • C++ est dynamique (l'interpréteur peut évaluer des chaînes de caractères représentant des expressions ou des instructions C++), orthogonal (un petit nombre de concepts suffit à engendrer des constructions très riches), reflectif (il supporte la métaprogrammation, par exemple la capacité pour un objet de se rajouter ou de s'enlever des attributs ou des méthodes, ou même de changer de classe en cours d'exécution) et introspectif (un grand nombre d'outils de développement, comme le debugger ou le profiler, sont implantés en C++ lui-même).
  • Comme Scheme ou SmallTalk, C++ est dynamiquement typé. Tout objet manipulable par le programmeur possède un type bien définit à l'exécution, qui n'a pas besoin d'être déclaré à l'avance.
  • C++ possède actuellement deux implémentations.
- L'une, interprétée, dans laquelle les programmes C++ sont compilés en instructions portables, puis exécutés par une machine virtuelle (comme pour Java, avec une différence importante: Java étant statiquement typé, il est beaucoup plus facile d'accélérer l'exécution d'un programme Java que d'un programme C++).
- L'autre, génère directement du bytecode Java.
  • C++ est extensible: comme Tcl ou Guile, on peut facilement l'interfacer avec des librairies C existantes. On peut aussi s'en servir comme d'un langage d'extension pour des systèmes logiciels complexes.
  • La librairie standard de C++, et les paquetages contribués, donnent accès à une grande variété de services: chaînes de caractères et expressions régulières, services UNIX standard (fichiers, pipes, signaux, sockets, threads...), protocoles Internet (Web, News, FTP, CGI, HTML...), persistence et bases de données, interfaces graphiques.
  • C++ est un langage qui continue à évoluer, soutenu par une communauté d'utilisateurs enthousiastes et responsables, dont la plupart sont des supporters du logiciel libre. Parallèlement à l'interpréteur principal, écrit en C et maintenu par le créateur du langage, un deuxième interpréteur, écrit en Java, est en cours de développement.

More-didaquest.png C++ - Historique (+)


Définition graphique


Ing-connaissance.png Carte conceptuelle : C++






Puce-didaquest.png Concepts ou notions associés


More-didaquest.png C++ - Glossaire / (+)



Puce-didaquest.png Exemples, applications, utilisations




Puce-didaquest.png Erreurs ou confusions éventuelles



Puce-didaquest.png Questions possibles



Puce-didaquest.png Liaisons enseignements et programmes

Idées ou Réflexions liées à son enseignement



Aides et astuces



Education: Autres liens, sites ou portails




Puce-didaquest.png Bibliographie