Année d'introduction du langage de programmation c. §1 Informations générales sur la langue. Étapes de conception du programme. Modèles de cycle de vie des applications. Compilateurs et environnements de développement

C++ (lire c-plus-plus) est un langage de programmation généraliste compilé et typé statiquement dans lequel vous pouvez créer des programmes de n'importe quel niveau de complexité.
Depuis plus de 20 ans, ce langage fait partie des trois langages de programmation les plus populaires et les plus demandés. (Vous pouvez le vérifier en visitant le site Web TIOBE).
Le langage est né au début des années 1980, lorsque Björn Stroustrup, employé des Bell Labs, a proposé un certain nombre d'améliorations au langage C sous propres besoins.

Bjarne Stroustrup – créateur du langage C++

Stroustrup a décidé d'étendre le langage C avec les capacités du langage Simula. C, étant le langage de base du système UNIX sur lequel fonctionnaient les ordinateurs Bell, est rapide, riche en fonctionnalités et portable. Stroustrup a ajouté la possibilité de travailler avec des classes et des objets. En conséquence, des problèmes pratiques de modélisation se sont avérés possibles à résoudre à la fois en termes de temps de développement (grâce à l'utilisation de classes de type Simula) et en termes de temps de calcul (grâce à la vitesse du C).
Voici comment le développeur du langage lui-même en parle :



En 1998, le premier standard de langage, connu sous le nom de C++98, a été publié par un comité de normalisation. Le C++ continue d'évoluer pour répondre aux demandes actuelles. L'un des groupes développant le langage C++ et soumettant des propositions pour l'améliorer au Comité des normes C++ est Booster, qui s'occupe, entre autres, d'améliorer les capacités du langage en y ajoutant des fonctionnalités de métaprogrammation. La dernière norme a été publiée en 2017 et s'appelle C++17. La prochaine norme ne tardera pas à arriver et devrait apparaître en 2020.
Personne ne possède les droits sur le langage C++ ; il est gratuit. En mars 2016, la Russie a été créée groupe de travail RG21C++. Le groupe était organisé pour collecter des propositions pour le standard C++, les envoyer à un comité et les défendre lors des assemblées générales de l'Organisation internationale de normalisation.
C++ est un langage multi-paradigmes (du mot paradigme - style d'écriture programmes informatiques), comprenant un large éventail de styles et de technologies de programmation différents. Il est souvent classé comme langage orienté objet, mais ce n’est pas le cas à proprement parler. Au cours du processus de travail, le développeur bénéficie d'une liberté absolue dans le choix des outils afin que le problème résolu à l'aide d'une approche particulière soit résolu aussi efficacement que possible. En d’autres termes, C++ n’oblige pas le programmeur à adhérer à un seul style de développement de programme (par exemple, orienté objet).
C++ dispose d'une riche bibliothèque standard qui comprend des conteneurs et des algorithmes courants, des E/S, expressions régulières, prise en charge du multithreading et d'autres fonctionnalités. Le C++ a influencé de nombreux langages de programmation, notamment : Java, C#, D. Le C++ appartenant à une famille de langages basés sur la syntaxe du langage C, vous pouvez facilement maîtriser d'autres langages de programmation de cette famille : JavaScript, PHP , Perl, Objective-C et bien d'autres . etc., y compris la langue mère elle-même - C. ()
Au cours de son existence, le langage C++ a acquis des mythes tenaces qui sont facilement réfutés (voir ici : Partie 1 et Partie 2)

Historique du langage et publication des standards

1983

Le créateur du langage est Björn Stroustrup, un employé des Bell Labs, a présenté une première version du langage C++ (« C avec classes »)

1985

Première version commerciale du C++, le langage prend son nom moderne

1986

Sortie de la première édition de The C++ Programming Language - un livre dédié au C++ écrit par Björn Stroustrup

1998

La norme internationale pour le langage C++ a été ratifiée : ISO/IEC 14882:1998 « Standard pour le langage de programmation C++ »

2003
2005

Le rapport technique de la bibliothèque 1 (TR1) a été publié. Bien qu'il ne fasse pas officiellement partie de la norme, le rapport décrit les extensions de la bibliothèque standard qui devraient être incluses dans la prochaine version du langage C++.

2011

Publication d'une nouvelle norme – C++11 ou ISO/IEC 14882:2011 ; nouvelle norme inclus des ajouts au noyau du langage et une extension de la bibliothèque standard, y compris la plupart des TR1

2014

Sortie de la norme C++14 (« International Standard ISO/IEC 14882:2014(E) Programming Language C++ ») ; C++14 peut être considéré comme une petite extension par rapport à C++11, contenant principalement des corrections de bugs et des améliorations mineures.

2017

La sortie d'un nouveau standard – C++1z (C++17). Cette norme a introduit de nombreux changements et ajouts. Par exemple, STD incluait des bibliothèques de la norme C11, système de fichiers, basé sur boost::filesystem, une grande partie de la bibliothèque expérimentale TS I.

2020

C++20 est le nom non officiel de la norme ISO/IEC pour le langage de programmation C++, qui devrait suivre C++17. Projet de norme N4800.

Philosophie C++

Dans son livre The Design and Evolution of C++ (2007), Björn Stroustrup décrit les principes qu'il a suivis lors de la conception du C++ (en abrégé) :

  • Obtenez un langage généraliste avec des types de données statiques, l'efficacité et la portabilité du langage C.
  • Prend en charge directement et complètement une variété de styles de programmation.
  • Donnez au programmeur la liberté de choix, même si cela lui donne la possibilité de faire un mauvais choix.
  • Maintenez autant que possible la compatibilité avec C, rendant ainsi possible une transition facile depuis la programmation C.
  • Évitez les divergences entre C et C++ : toute construction valide dans les deux langages doit signifier la même chose dans chacun d'eux et conduire au même comportement du programme.
  • Évitez les fonctionnalités qui dépendent de la plate-forme ou qui ne sont pas universelles.
  • "Ne payez pas pour ce que vous n'utilisez pas" - aucune fonctionnalité linguistique ne devrait entraîner une diminution des performances des programmes qui ne l'utilisent pas.
  • Ne nécessite pas un environnement de programmation trop compliqué.

C et C++

La syntaxe du C++ est héritée du langage C. Bien que, formellement, l'un des principes du C++ reste le maintien de la compatibilité avec le langage C, dans les faits, les groupes de normalisation de ces langages n'interagissent pas et les modifications qu'ils apportent ne le sont pas. seulement ils ne sont pas corrélés, mais se contredisent souvent fondamentalement sur le plan idéologique. Ainsi, les éléments que les nouvelles normes C ajoutent au noyau se trouvent dans les éléments standard C++ de la bibliothèque standard et ne sont pas du tout dans le noyau, par exemple les tableaux dynamiques, les tableaux à limites fixes, les fonctions de traitement parallèle. Selon Stroustrup, combiner le développement de ces deux langues serait très bénéfique, mais il est peu probable que cela soit possible pour des raisons politiques. La compatibilité pratique entre C et C++ va donc progressivement se perdre.
DANS dans cet exemple, selon le compilateur utilisé, « C++ » ou « C » sera affiché :

Programme 9.1

#inclure int main() ( printf("%s\n", (sizeof("a") == sizeof(char)) ? "C++" : "C"); return 0; )

Cela est dû au fait que les constantes de caractères en C sont de type int et qu'en C++ elles sont de type char , mais les tailles de ces types sont différentes.

Modèles de cycle de vie des applications

Cycle de vie logiciel- c'est la période qui commence à partir du moment où une décision est prise sur la nécessité de créer produit logiciel et se termine au moment de sa mise hors service complète. Ce cycle est le processus de création et de développement de logiciels. Il existe plusieurs modèles de cycle de vie.
Modèle en cascade Le cycle de vie (modèle anglais en cascade) a été proposé en 1970 par Winston Royce. Il prévoit la mise en œuvre séquentielle de toutes les étapes du projet dans un ordre strictement fixé. Le passage à l'étape suivante signifie l'achèvement complet des travaux de l'étape précédente. Les exigences définies au stade de la formation des exigences sont strictement documentées sous la forme termes de référence et sont enregistrés pendant tout le développement du projet. Chaque étape aboutit à la publication d'un ensemble complet de documentation suffisant pour permettre la poursuite du développement par une autre équipe de développement.
Étapes du projet selon le modèle en cascade :

  1. Formation des exigences ;
  2. Conception;
  3. Mise en œuvre;
  4. Essai;
  5. Mise en œuvre;
  6. Exploitation et entretien.

Dans le modèle en cascade, le passage d'une phase du projet à une autre suppose que le résultat de la phase précédente soit tout à fait correct. Dans les grands projets, cela est presque impossible à réaliser. Ce modèle ne convient donc que pour développer un petit projet. (W. Royce lui-même n'a pas adhéré à ce modèle et a utilisé un modèle itératif).
Modèle itératif
Une alternative au modèle en cascade est le modèle de développement itératif et incrémental (IID), reçu de T. Gilb dans les années 70. nom du modèle évolutif. Le modèle IID implique de diviser le cycle de vie du projet en une séquence d'itérations, dont chacune ressemble à un « mini-projet », incluant tous les processus de développement appliqués à la création de fonctionnalités plus petites par rapport au projet dans son ensemble. Le but de chaque itération est d'obtenir une version fonctionnelle système logiciel, y compris la fonctionnalité définie par le contenu intégré de toutes les itérations précédentes et actuelles. Le résultat de l'itération finale contient toutes les fonctionnalités requises du produit. Ainsi, à la fin de chaque itération, le produit reçoit un incrément - un incrément - de ses capacités, qui évoluent donc de manière évolutive.


Diverses variantes de l'approche itérative sont mises en œuvre dans la plupart des méthodologies de développement modernes :

Processus de développement - Processus rationnel unifié (RUP)

Processus rationnel unifié (RUP)(processus rationnel unifié) est une méthodologie de développement logiciel maintenue par Rational Software (IBM). La méthodologie fournit des recommandations pour toutes les étapes de développement : de la modélisation commerciale aux tests et à la mise en service du programme fini. Le langage de modélisation unifié (UML) est utilisé comme langage de modélisation.
Le cycle de vie complet du développement d'un produit se compose de quatre phases, chacune comprenant une ou plusieurs itérations.

  • Étape initiale (Début)
  • Détermination de la portée et de la portée du projet ressources nécessaires. Les exigences de base, les limitations et les fonctionnalités clés du produit sont déterminées. Les risques sont évalués. Planification des actions. À la fin de la phase initiale, l'atteinte du jalon de l'objectif du cycle de vie est évaluée, ce qui présuppose un accord entre les parties prenantes pour poursuivre le projet.

  • Clarification
  • Documenter les exigences. Conception, mise en œuvre et tests d'architecture exécutable. Clarification des conditions et des coûts. Réduire les principaux risques. La réussite de la phase de développement signifie atteindre le jalon de l'architecture du cycle de vie.

  • Construction
  • Dans la phase « Build », l’essentiel des fonctionnalités du produit est implémenté : le design de l’application est terminé, code sourceécrit. La phase de construction se termine avec la première version externe du système et le jalon de capacité opérationnelle initiale.

  • Introduction
  • Dans la phase « Implémentation », la version finale du produit est créée et transférée du développeur au client. Cela comprend un programme de tests bêta, une formation des utilisateurs et la détermination de la qualité du produit. Dans le cas où la qualité ne répond pas aux attentes des utilisateurs ou aux critères définis lors de la phase de démarrage, la phase de mise en œuvre est répétée à nouveau. Atteindre tous les objectifs signifie atteindre l’étape de sortie du produit et terminer le cycle de développement complet.



« Informatique. Ingénierie système et logiciel. Processus du cycle de vie du logiciel". Cette norme a été adoptée par l'Agence fédérale de réglementation technique et de métrologie de la Fédération de Russie et est similaire à la norme internationale ISO/IEC 12207:2008. Cette norme établit structure générale processus du cycle de vie du logiciel, qui peuvent être guidés dans l'industrie du logiciel. La norme n'offre pas modèle spécifique cycle de vie. Ses dispositions sont communes à tous les modèles de cycle de vie, méthodes et technologies de création de logiciels. Il décrit la structure des processus du cycle de vie sans préciser comment mettre en œuvre ou réaliser les activités et les tâches incluses dans ces processus.

Présentation de la leçon
Sujets des messages
  • Fondation du logiciel libre (FSF)
  • Licences de logiciels libres
  • Logiciels Libres et Open Source
  • Histoire du développement des langages de programmation
  • L'histoire du langage C et C++.
  • Histoire
  • Critique du C++
  • Histoire d'UNIX
  • Modèle de cycle de vie logiciel en spirale
  • UML (langage de modélisation unifié) langue unifiée modélisation)
  • Cadre de solutions Microsoft
  • IDE pour la programmation C/C++ sous Windows
  • Compilateurs C/C++
  • Création d'une application console sous Windows
Questions
  1. Pourquoi le modèle en cascade de développement logiciel n'est-il pas utilisé dans les grands projets ?
  2. Quelle est la différence entre les modèles de développement en cascade et itératifs ?
  3. Lister les étapes de développement logiciel dans la méthodologie Rational Unified Process (RUP)

Langage de programmation C++

Dernière mise à jour : 28/08/2017

Le langage de programmation C++ est un langage de programmation de haut niveau, compilé, à usage général et typé statiquement, adapté à la création d'une grande variété d'applications. Aujourd’hui, le C++ est l’un des langages les plus populaires et les plus répandus.

Il trouve ses racines dans le langage C, développé entre 1969 et 1973 aux Bell Labs par le programmeur Dennis Ritchie. Au début des années 1980, le programmeur danois Bjarne Stroustrup, qui travaillait alors aux Bell Labs, a développé le C++ comme extension du langage C. En fait, au début, C++ complétait simplement le langage C avec quelques capacités de programmation orientée objet. Et c’est pourquoi Stroustrup lui-même l’a initialement appelé « C avec classes ».

Par la suite, la nouvelle langue a commencé à gagner en popularité. De nouvelles fonctionnalités y ont été ajoutées, ce qui en fait non seulement un ajout au C, mais un tout nouveau langage de programmation. En conséquence, « C avec classes » a été renommé C++. Et à partir de ce moment-là, les deux langues ont commencé à se développer indépendamment l’une de l’autre.

C++ est un langage puissant, héritant des riches capacités de mémoire du C. Par conséquent, le C++ trouve souvent son utilisation dans la programmation système, notamment lors de la création de systèmes d'exploitation, de pilotes, de divers utilitaires, d'antivirus, etc. À propos, le système d’exploitation Windows est principalement écrit en C++. Mais uniquement une application de programmation système de cette langue pas limité. Le C++ peut être utilisé dans des programmes de tout niveau où la vitesse et les performances sont importantes. Il est souvent utilisé pour créer applications graphiques, divers programmes d'application. Il est également particulièrement souvent utilisé pour créer des jeux avec une visualisation riche et riche. De plus, la direction mobile a récemment pris de l'ampleur, où le C++ a également trouvé son application. Et même dans le développement Web, vous pouvez également utiliser C++ pour créer des applications Web ou certains services de support qui servent des applications Web. En général, C++ est un langage largement utilisé dans lequel vous pouvez créer presque n’importe quel type de programme.

C++ est un langage compilé, ce qui signifie que le compilateur traduit le code source C++ en fichier exécutable, qui contient un ensemble d'instructions machine. Mais les différentes plates-formes ont leurs propres caractéristiques, de sorte que les programmes compilés ne peuvent pas simplement être transférés d'une plate-forme à une autre et y être exécutés. Cependant, au niveau du code source, les programmes C++ sont largement portables à moins que certaines fonctions spécifiques au système d'exploitation ne soient utilisées. Et la disponibilité de compilateurs, de bibliothèques et d'outils de développement pour presque toutes les plateformes courantes vous permet de compiler le même code source C++ dans des applications pour ces plateformes.

Contrairement au C, le langage C++ vous permet d'écrire des applications dans un style orienté objet, représentant un programme comme un ensemble de classes et d'objets interagissant les uns avec les autres. Ce qui simplifie la création de grandes applications.

Principales étapes de développement

En 1979-80, Bjarne Stroustrup a développé une extension du langage C : « C with Classes ». En 1983, le langage a été renommé C++.

En 1985, la première version commerciale du langage C++ est sortie, ainsi que la première édition du livre "The C++ Programming Language", qui représente la première description de ce langage en l'absence de norme officielle.

A été libéré en 1989 nouvelle version Langage C++ 2.0, qui inclut un certain nombre de nouvelles fonctionnalités. Par la suite, la langue s’est développée relativement lentement jusqu’en 2011. Mais parallèlement, en 1998, la première tentative de normalisation du langage a été faite par l'ISO (Organisation internationale de normalisation). La première norme s'appelait ISO/IEC 14882:1998, ou C++98 en abrégé. Par la suite, en 2003, une nouvelle version du standard C++03 a été publiée.

En 2011, la nouvelle norme C++11 a été publiée, qui contient de nombreux ajouts et enrichit le langage C++ d'un grand nombre de nouvelles fonctionnalités. Suite à cela, un petit ajout à la norme, également connu sous le nom de C++14, a été publié en 2014. Et une autre version clé du langage est prévue pour 2017.

Compilateurs et environnements de développement

Pour développer des programmes en C++, vous avez besoin d'un compilateur : il traduit le code source en C++ en un fichier exécutable que vous pouvez ensuite exécuter. Mais dans moment présent il existe de nombreux compilateurs différents. Ils peuvent différer sur divers aspects, notamment dans la mise en œuvre des normes. Une liste de base des compilateurs pour C++ peut être trouvée sur Wikipédia. Il est recommandé pour le développement de choisir les compilateurs qui développent et mettent en œuvre toutes les dernières normes. Ainsi, tout au long de ce tutoriel, nous utiliserons principalement le compilateur g++ disponible gratuitement développé par le projet GNU.

Vous pouvez également utiliser des IDE tels que Visual Studio, Netbeans, Eclipse, Qt, etc. pour créer des programmes.

Balises : Historique de la normalisation C, ANSI C, ISO C, C99, C11, ISO/IEC C, C.

Origines

C et est un « produit dérivé » dérivé de la création du système d'exploitation UNIX, développé aux Laboratoires Bell par Ken Thompson, Denis Ritchie et co. Thompson a écrit à lui seul la version originale d'UNIX, qui fonctionnait sur le DEC PDP-7, l'un des premiers mini-ordinateurs dotés de seulement 8 000 mots de mémoire principale (c'était en 1969, après tout).

Comme les autres systèmes d'exploitation de l'époque, UNIX a été écrit en langage assembleur. Le débogage de programmes en langage assembleur est très pénible et difficile à améliorer, et UNIX ne fait pas exception. Thompson a décidé qu'un langage était nécessaire pour développer davantage le système d'exploitation haut niveau et a proposé un petit langage que B. Thompson a basé sur BCPL, un langage de programmation système développé au milieu des années 60. BCPL, quant à lui, provient d'ALGOL 60, l'une des langues les plus anciennes (et les plus influentes).

Ritchie a rapidement rejoint le projet UNIX et a commencé à écrire en B. En 1970, les Bell Labs ont acheté un PDP-11 pour le projet. Puisque B était prêt à fonctionner sur le PDP-11, Thompson a réécrit une partie d'UNIX en B. En 1971, il est devenu clair que B n'était pas tout à fait adapté au PDP-11, alors Ritchie a commencé à créer une version étendue de B. Au début, il l'appelait NB (New B), mais lorsque le langage est devenu très différent de B, le nom a été changé en C. En 1973, le langage était devenu suffisamment stable pour qu'UNIX puisse y être réécrit. Le passage au C offrait un avantage important : la portabilité. En écrivant un compilateur C pour chacune des machines des Bell Labs, l'équipe de développement a pu y porter UNIX.

Standardisation

Le C a continué d'évoluer dans les années 70, notamment entre 1977 et 1979, lorsque le premier livre sur le C a été publié. The C Programming Language, écrit par Brian Kernighan et Denis Ritchie et publié en 1978, est devenu la bible des programmeurs C. En l’absence de standard officiel, ce livre – également connu sous le nom de K&R, ou le « Livre blanc » comme aiment l’appeler les fans de C – est devenu le standard de facto. Dans les années 70, il y avait peu de programmeurs C et la plupart d’entre eux utilisaient UNIX. Cependant, dans les années 1980, le langage C s'est étendu au-delà des limites étroites du monde UNIX. Les compilateurs C sont devenus disponibles sur une variété de machines exécutant différents systèmes d'exploitation. En particulier, C a commencé à se répandre sur la plate-forme IBM PC en développement rapide.

Cette popularité croissante est accompagnée de problèmes. Les programmeurs qui ont écrit de nouveaux compilateurs ont pris comme base le langage décrit dans K&R. Malheureusement, dans K&R, certaines fonctionnalités du langage étaient décrites de manière vague, de sorte que les compilateurs les interprétaient souvent à leur propre discrétion. De plus, le livre ne faisait pas de distinction claire entre ce qui est une fonctionnalité du langage et ce qui est une fonctionnalité du système d'exploitation UNIX. Ce qui a aggravé la situation, c'est qu'après la publication de K&R, C a continué à se développer : de nouvelles fonctionnalités y ont été ajoutées et les anciennes ont été supprimées. Bientôt, le besoin d’une description complète, précise et moderne de la langue s’est fait sentir. Sans une telle norme, des dialectes de la langue ont commencé à apparaître, ce qui a interféré avec la portabilité - la plus grande force de la langue.

Le développement de la norme américaine C a commencé en 1983 sous les auspices de l’American National Standards Institute (ANSI). Après de nombreuses révisions, la norme a été finalisée en 1988 et officiellement adoptée en décembre 1989 sous le nom d'ANSI X3.159-1989. En 1990, elle a été approuvée par l'Organisation internationale de normalisation (ISO) comme norme internationale ISO/IEC 9899:1990. Cette version du langage est généralement appelée C89 ou C90, pour éviter toute confusion avec la version originale du C, généralement appelée K&R C.

Le langage a subi des modifications mineures en 1995 (les modifications sont décrites dans un document communément appelé Amendement 1). Des changements plus importants se sont produits en 1999, lorsque la norme ISO/IEC 9899:1999 a été publiée. Le langage décrit dans cette norme est généralement appelé C99. Les termes « ANSI C », « ANSI/ISO C » et « ISO C », autrefois utilisés pour décrire C99, ont deux significations en raison de l'existence de deux normes.

En 2011, parallèlement à la révision du langage C++, la norme C11 a été publiée. Malgré l'existence du standard '11, de nombreux compilateurs ne prennent toujours pas entièrement en charge les versions C99, c'est pourquoi l'utilisation du standard C11 sera explicitement indiquée.

Histoire de la création

Le langage est né au début des années 1980, lorsque Björn Stroustrup, employé des Bell Labs, a proposé un certain nombre d'améliorations au langage C pour ses propres besoins. Lorsque Stroustrup a commencé à travailler aux Bell Labs à la fin des années 1970 sur des problèmes liés à la théorie des files d'attente (appliquée à la modélisation des appels téléphoniques), il a constaté que les tentatives d'utilisation des langages de modélisation alors existants étaient inefficaces et que l'utilisation de langages machine hautement efficaces ​​était trop difficile à mettre en œuvre en raison de leur expressivité limitée. Ainsi, le langage Simula possède des fonctionnalités qui seraient très utiles pour développer de gros logiciels, mais est trop lent, et le langage BCPL est assez rapide, mais est trop proche des langages de bas niveau et n'est pas adapté au développement de gros logiciels.

Rappelant l'expérience de sa thèse, Stroustrup a décidé de compléter le langage C (successeur de BCPL) avec les capacités disponibles dans le langage Simula. C, étant le langage de base du système UNIX sur lequel fonctionnaient les ordinateurs Bell, est rapide, riche en fonctionnalités et portable. Stroustrup a ajouté la possibilité de travailler avec des classes et des objets. En conséquence, des problèmes pratiques de modélisation se sont avérés possibles à résoudre à la fois en termes de temps de développement (grâce à l'utilisation de classes de type Simula) et en termes de temps de calcul (grâce à la vitesse du C). Tout d'abord, des classes (avec encapsulation), l'héritage de classe, une vérification de type renforcée, des fonctions en ligne et des arguments par défaut ont été ajoutés au C. Premières versions Ce langage, initialement appelé « C avec classes », est devenu disponible en 1980.

Tout en développant du C avec des classes, Stroustrup a écrit un programme appelé cfront, un traducteur qui convertit le code source C avec des classes en code source C brut. Cela a permis de travailler sur un nouveau langage et de l'utiliser dans la pratique, en utilisant l'infrastructure déjà disponible dans. UNIX pour le développement en C. Le nouveau langage, de manière inattendue pour l'auteur, a acquis une grande popularité parmi ses collègues et bientôt Stroustrup ne pouvait plus le soutenir personnellement, répondant à des milliers de questions.

Lors de la création du C++, Björn Stroustrup souhaitait
  • Obtenez un langage généraliste avec des types de données statiques, l'efficacité et la portabilité du langage C.
  • Prend en charge directement et complètement une variété de styles de programmation, notamment la programmation procédurale, l'abstraction de données, la programmation orientée objet et la programmation générique.
  • Donnez au programmeur la liberté de choix, même si cela lui donne la possibilité de faire un mauvais choix.
  • Maintenez autant que possible la compatibilité avec C, rendant ainsi possible une transition facile depuis la programmation C.
  • Évitez les divergences entre C et C++ : toute construction valide dans les deux langages doit signifier la même chose dans chacun d'eux et conduire au même comportement du programme.
  • Évitez les fonctionnalités qui dépendent de la plate-forme ou qui ne sont pas universelles.
  • « Ne payez pas pour ce que vous n'utilisez pas » : aucune fonctionnalité linguistique ne devrait entraîner une dégradation des performances des programmes qui ne l'utilisent pas.
  • Ne nécessite pas un environnement de programmation trop compliqué.

Le choix du C comme base pour créer un nouveau langage de programmation s'explique par le fait que le langage C :

1. est un langage polyvalent, concis et de niveau relativement bas ;
2. adapté à la résolution de la plupart des problèmes du système ;
3. joué partout et sur tout ;
4. interfaces avec l'environnement de programmation UNIX.

— B. Stroustrup. Langage de programmation C++. Article 1.6

Malgré un certain nombre de défauts connus du langage C, Stroustrup a décidé de l'utiliser comme base, car « le C a ses problèmes, mais un langage développé à partir de zéro les aurait, et nous connaissons les problèmes du C ». De plus, cela a permis d'obtenir rapidement un prototype de compilateur (cfront), qui traduisait uniquement les éléments syntaxiques ajoutés dans le langage C d'origine.

Au fur et à mesure du développement du C++, d'autres fonctionnalités ont été incluses, couvrant les capacités des constructions C, et donc la question de l'abandon de la compatibilité du langage en supprimant les constructions obsolètes a été soulevée à plusieurs reprises. Cependant, la compatibilité a été maintenue pour les raisons suivantes :

  • préservation du code actuel, initialement écrit en C et directement transféré en C++ ;
  • éliminer le besoin de recycler les programmeurs qui ont déjà étudié le C (il leur suffit d'apprendre de nouveaux outils C++) ;
  • éliminer la confusion entre les langues lorsqu'elles sont utilisées ensemble (« si deux langues sont utilisées ensemble, leurs différences doivent être soit minimes, soit si grandes qu'il est impossible de confondre les langues »).

En 1983, de nouvelles fonctionnalités avaient été ajoutées au langage, telles que les fonctions virtuelles, la surcharge de fonctions et d'opérateurs, les références, les constantes, le contrôle de l'utilisateur sur la gestion de la mémoire libre, une vérification de type améliorée et un nouveau style de commentaire (//). Le langage résultant n’était plus seulement une version augmentée du C classique et a été renommé C avec classes en « C++ ». Sa première sortie commerciale a eu lieu en octobre 1985.

Le nom du langage résultant provient de l'opérateur d'incrémentation unaire postfix C++ (augmentant la valeur d'une variable de un).

Avant le début de la normalisation officielle, le langage était principalement développé par Stroustrup en réponse aux demandes de la communauté des programmeurs. La fonction de descriptions de langage standard a été remplie par celles écrites par Stroustrup ouvrages imprimés en C++ (description du langage, guide de référence et ainsi de suite).

Histoire des normes

En 1985, la première édition du langage de programmation C++ a été publiée, fournissant la première description du langage, ce qui était extrêmement important en raison de l'absence de norme officielle.


En 1989, la version 2.0 de C++ est sortie. Ses nouvelles fonctionnalités comprenaient l'héritage multiple, les classes abstraites, les fonctions membres statiques, les fonctions constantes et les membres protégés. En 1990, le « Guide de référence annoté du C++ » a été publié, qui est ensuite devenu la base de la norme. Dernières mises à jour incluait des modèles, des exceptions, des espaces de noms, de nouveaux types de conversion et le type booléen.

La bibliothèque standard C++ a également évolué avec elle. Le premier ajout à la bibliothèque standard C++ concerne les flux d'E/S, qui permettent de remplacer les fonctions traditionnelles C printf et scanf. Plus tard, le développement le plus important de la bibliothèque standard a été l’inclusion de la bibliothèque de modèles standard.

En 1998, la norme linguistique ISO/IEC 14882:1998 (connue sous le nom de C++98), développée par le comité des normes C++ (groupe de travail ISO/IEC JTC1/SC22/WG21), a été publiée. La norme C++ ne décrit pas la manière dont les objets sont nommés, certains détails de gestion des exceptions et d'autres fonctionnalités détaillées d'implémentation, ce qui rend incompatible le code objet produit par différents compilateurs. Cependant, de nombreuses normes ont été créées par des tiers pour des architectures et des systèmes d'exploitation spécifiques.

En 2005, le Library Technical Report 1 (en abrégé TR1) a été publié. Bien qu'il ne fasse pas officiellement partie du standard, le rapport décrit les extensions de la bibliothèque standard que les auteurs s'attendaient à inclure dans la prochaine version du langage C++. La prise en charge de TR1 s'améliore dans presque tous les compilateurs C++ pris en charge.

Depuis 2009, des travaux ont été menés pour mettre à jour le standard précédent ; la version préliminaire du nouveau standard était d'abord C++09, et un an plus tard C++0x, aujourd'hui C++11, qui comprenait des ajouts au noyau de le langage et une extension de la bibliothèque standard, incluant la plupart de TR1.

Le C++ continue d'évoluer pour répondre aux demandes actuelles. L'un des groupes développant le langage C++ et envoyant des propositions pour l'améliorer au comité de normalisation C++ est Boost, qui s'occupe, entre autres, d'améliorer les capacités du langage en y ajoutant des fonctionnalités de métaprogrammation.

Personne ne possède les droits sur le langage C++ ; il est gratuit. Cependant, le document standard linguistique lui-même (à l’exclusion des brouillons) n’est pas disponible gratuitement.

Langage C et UNIX

Langage de programmation AVEC(lire "C") a été créé au début des années 70, lorsque Ken Thompson et Dennis Ritchie des Bell Labs ont développé système opérateur UNDC. Ils ont d’abord créé la partie compilateur AVEC, puis je l'ai utilisé pour compiler le reste du compilateur AVEC et finalement utilisé le compilateur résultant pour compiler UNIX. Le système d'exploitation UNIX a été initialement distribué sous forme de code source pour AVEC entre universités et laboratoires, et le destinataire pourrait compiler le code source dans la langue AVEC en code machine à l'aide d'un compilateur approprié AVEC.

La distribution du code source a rendu le système d'exploitation UNIX unique ; le programmeur pourrait changer de système d'exploitation et le code source pourrait être transféré d'une plate-forme matérielle à une autre. Aujourd'hui, le standard POSIX définit un ensemble de standards appels système UNIX disponible en AVEC, qui doit être implémenté dans les versions d'UNIX compatibles POSIX. C était le troisième langage développé par Thomson et Ritchie lors de la création d'UNIX ; les deux premiers étaient, bien sûr, UN Et DANS.

Langage d'assemblage mobile C

Par rapport au langage antérieur - BCPL, langage AVEC a été amélioré en ajoutant des types de données de longueurs spécifiques. Par exemple, le type de données int peut être utilisé pour créer une variable avec un nombre spécifique de bits (généralement 16), tandis que le type de données long peut être utilisé pour créer une variable entière avec un grand nombre de bits (généralement 32). Contrairement à d'autres langages de haut niveau, AVEC pourrait fonctionner avec des adresses mémoire directement en utilisant des pointeurs et des références. Parce que AVEC conservé la possibilité d'accéder directement matériel, il est souvent classé comme langage de niveau intermédiaire ou appelé en plaisantant « langage d’assemblage mobile ».

C - langage de programmation structuré

Quant à la grammaire et à la syntaxe, alors AVEC est un langage de programmation structuré. Alors que de nombreux programmeurs modernes pensent en termes de classes et d'objets, les programmeurs AVEC penser en termes de procédures et de fonctions. DANS AVEC Vous pouvez définir vos propres types de données abstraits à l'aide du mot-clé struct. De même, vous pouvez décrire vos propres types entiers (énumérations) et donner d'autres noms types existants données utilisant mot-clé typedef En ce sens AVEC est un langage structuré avec les germes de la programmation orientée objet.

Standardisation du langage C

Langage répandu C sur différents types Les ordinateurs (parfois appelés plates-formes matérielles) ont malheureusement conduit à de nombreuses variantes du langage. Ils étaient similaires, mais incompatibles les uns avec les autres. Il s'agissait d'un problème majeur pour les développeurs de logiciels qui devaient écrire des programmes compatibles pouvant fonctionner sur plusieurs plates-formes. Il est devenu évident qu'il fallait version standard C. En 1983 L'ANSI (American National Standards Committee) a formé le comité technique X3J11 pour créer une norme linguistique C(pour "fournir une définition du langage sans ambiguïté et indépendante de la machine"). En 1989, la norme a été approuvée. L'ANSI s'est associée à l'ISO (Organisation internationale de normalisation) pour normaliser Cà l'échelle internationale ; une norme commune a été publiée en 1990 et nommée ANSI/ISO 9899:1990. Cette norme est toujours en cours d'amélioration et est prise en charge par la plupart des sociétés de développement de compilateurs.

Naissance du C++

Bjarne Stroustrup libère le potentiel de l'orientation objet AVEC en transférant les capacités de classe Simulateur 67 V AVEC. Initialement, le nouveau langage portait le nom de « C avec classes » et ce n'est qu'alors qu'il a commencé à s'appeler C++. Langue C++ A gagné en popularité après avoir été développé aux Bell Labs, il a ensuite été transféré à d'autres industries et entreprises. Aujourd'hui, c'est l'un des langages de programmation les plus populaires (et faisant autorité) au monde. C++ hérite des bons et des mauvais côtés AVEC.

Révélations de Bjarna Stroustrup

Bjarne Stroustrup : « J'ai imaginé C++, a rédigé sa définition initiale et réalisé la première implémentation. J'ai sélectionné et formulé des critères de conception C++, a développé ses principales caractéristiques et était responsable du sort des propositions d'extension du langage au sein du comité de normalisation C++», écrit l'auteur du langage de programmation le plus populaire. - « Le langage C++ doit beaucoup à la langue C et la langue C reste un sous-ensemble Langage C++(mais C++ a corrigé plusieurs défauts sérieux dans le système de types C). J'ai aussi économisé de l'argent C, qui sont suffisamment bas pour gérer les tâches système les plus critiques. Langue C, à son tour, doit beaucoup à son prédécesseur, BCPL ; À propos, le style de commentaire // est tiré de C++ de BCPL. Une autre source d'inspiration principale était la langue Simule67. Le concept de classes (avec classes dérivées et fonctions virtuelles) lui a été emprunté. Un moyen de surcharger les opérateurs et la possibilité de placer des annonces partout où une instruction peut être écrite rappelle Algol68. "

Pourquoi C++

Nom C++ inventé par Rick Massitti. Le nom indique la nature évolutive de la transition vers celui-ci de C. "++" est une opération d'incrémentation dans C. Un peu plus nom court C+ est une erreur de syntaxe ; de plus, il a déjà été utilisé comme nom d’une langue complètement différente. Experts en sémantique C trouver ça C++ pire que ++C. Titres D le langage ne l'a pas compris car il s'agit d'une extension de C et n'essaie pas de résoudre ses problèmes en supprimant diverses fonctionnalités.

Pourquoi le C++ était-il nécessaire ?

Initialement Langage de programmation C++ a été conçu pour que l'auteur et ses amis n'aient pas à programmer en assembleur, en C ou dans d'autres langages modernes de haut niveau. Son objectif principal était d'écrire bons programmes plus simple et plus agréable pour le programmeur individuel. Plan de développement C++ n’a jamais existé sur papier ; la conception, la documentation et la mise en œuvre se sont déroulées simultanément. Bien entendu, l'interface externe C++ a été écrit dans C++. Il n'y a jamais eu de « projet C++ » ou de « comité de développement C++ ». C'est pourquoi C++ a évolué et continue d'évoluer dans toutes les directions pour faire face aux défis rencontrés par les utilisateurs et au fil des échanges entre l'auteur et ses amis et collègues.

Véritable C++ orienté objet

DANS Langage C++ Les principes de la programmation orientée objet sont pleinement pris en charge, y compris les trois piliers sur lesquels elle repose : l'encapsulation, l'héritage et le polymorphisme. Encapsulation dans C++ pris en charge via la création de types de données non standard (personnalisés) appelés classes. Langue C++ prend en charge l'héritage. Cela signifie que vous pouvez déclarer un nouveau type de données (classe) qui est une extension d'un type existant.

Bien que Langage de programmation C++à juste titre appelé une suite AVEC et tout programme réalisable dans la langue AVEC sera pris en charge par le compilateur C++, lors du passage de AVECÀ C++ Un pas très important a été réalisé. Langue C++ bénéficié de son affinité avec le langage AVEC depuis de nombreuses années, car de nombreux programmeurs ont constaté que pour tirer pleinement parti de Langage C++, ils doivent abandonner certaines de leurs connaissances antérieures et en acquérir de nouvelles, à savoir : étudier nouvelle façon conceptualisation et résolution de problèmes de programmation. Avant de commencer à apprendre C++, Stroustrup et la plupart des autres programmeurs utilisant C++ envisager l'apprentissage des langues AVEC facultatif.

Langage de programmation C++ est actuellement considéré comme le langage dominant utilisé pour développer des produits commerciaux, 90 % des jeux sont écrits en C++ en utilisant DirectX.

Littérature

Sources :

  • HMDeitel, PJDeitel "Comment programmer en C++"
  • Bjarne Stroustrup "Le langage de programmation C++. 3e édition."
  • Simon Robinson, Ollie Cornes, Jay Glynn et autres "C# pour les professionnels"
  • Jess Liberty "Apprenez-vous le C++ en 21 jours"
  • Stanislav Gornakov "DirectX, cours de programmation en C++"


2024 wisemotors.ru. Comment cela marche-t-il. Fer. Exploitation minière. Crypto-monnaie.