L'histoire du développement du langage C. §1 Informations générales sur la langue. Étapes de la conception du programme. Modèles de cycle de vie des applications. Langage C et UNIX

C++ (prononcé c-plus-plus) est un langage de programmation compilé, à typage statique et à usage général qui peut être utilisé pour créer des programmes de n'importe quel niveau de complexité.
Depuis plus de 20 ans, ce langage figure parmi les trois langages de programmation les plus populaires et les plus demandés. (Cela peut être vérifié en visitant le site Web de TIOBE).
Le langage est né au début des années 1980, lorsque l'employé des Bell Labs, Björn Stroustrup, a proposé un certain nombre d'améliorations au langage C pour ses propres besoins.

Bjarne Stroustrup - créateur du langage C++

Stroustrup a décidé d'étendre le langage C avec les fonctionnalités disponibles dans le langage Simula. Le langage C, étant le langage de base du système UNIX sur lequel les ordinateurs de Bell fonctionnaient, est rapide, riche en fonctionnalités et portable. Stroustrup y a ajouté la possibilité de travailler avec des classes et des objets. De ce fait, les problèmes pratiques de modélisation se sont révélés accessibles à 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 rapidité de C).
Voici comment le développeur du langage lui-même le dit :



En 1998, la première norme de langage, connue sous le nom de C++98, a été publiée par un comité de normalisation. C++ continue d'évoluer pour répondre aux exigences modernes. L'un des groupes qui développe le langage C++ et envoie des suggestions au comité des normes C++ pour l'améliorer est Renforcer, qui traite, 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 se fera pas attendre et devrait apparaître en 2020.
Personne ne détient les droits sur le langage C++, il est gratuit. En mars 2016, le groupe de travail WG21 C++ a été créé en Russie. Le groupe a été organisé pour recueillir des propositions pour la norme C++, les soumettre au 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 - un style d'écriture de programmes informatiques), qui comprend un large éventail de styles et de technologies de programmation différents. Il est souvent qualifié de langage orienté objet, mais, à proprement parler, ce n'est pas le cas. Au cours du travail, le développeur obtient une liberté absolue dans le choix des outils afin que le problème résolu à l'aide de l'une ou l'autre approche soit résolu le plus efficacement 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++ possède une riche bibliothèque standard qui comprend des conteneurs et des algorithmes communs, des E/S, des expressions régulières, la prise en charge du multithreading, etc. C++ a influencé de nombreux langages de programmation, notamment : Java, C#, D. Puisque C++ appartient à la famille des langages basés sur la syntaxe du langage C, d'autres langages de programmation de cette famille peuvent être facilement maîtrisés : 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, des mythes stables ont été fixés pour le langage C++, qui sont facilement réfutés (voir ici : Partie 1 et Partie 2)

L'histoire de la langue et la publication des normes

1983

Créateur de langage - Bjorn Stroustrup, aux Bell Labs, a introduit une première version de C++ (« C avec classes »)

1985

Première version commerciale de C++, le langage prend un nom moderne

1986

Sortie de la première édition de The C++ Programming Language, un livre C++ écrit par Bjorn Stroustrup

1998

La norme internationale du langage C++ a été ratifiée : ISO/IEC 14882:1998 "Standard for the C++ Programming Language"

2003
2005

Publication du rapport technique de bibliothèque 1 (TR1). Bien que ne faisant pas officiellement partie de la norme, le rapport décrivait 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 ; la nouvelle norme comprenait des ajouts au cœur du langage et une extension de la bibliothèque standard, y compris une grande partie de TR1

2014

Publication 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 de C++11, contenant principalement des corrections de bogues et des améliorations mineures.

2017

La version de la nouvelle norme est C++1z (C++17). Cette norme a apporté de nombreuses modifications et ajouts. Par exemple, STD comprenait des bibliothèques de la norme C11, un système de fichiers basé sur boost :: filesystem et la plupart de la bibliothèque expérimentale TS I.

2020

C++20 est le nom informel de la norme ISO/IEC pour le langage de programmation C++, qui est attendue après C++17. Projet de norme N4800.

Philosophie C++

Dans The Design and Evolution of C++ (2007), Bjorn Stroustrup décrit les principes qu'il a suivis lors de la conception de C++ (donnés sous forme abrégée) :

  • Obtenez un langage universel avec des types de données statiques, l'efficacité et la portabilité du C.
  • Prise en charge directe et complète d'une variété de styles de programmation.
  • Donnez au programmeur la liberté de choix, même si cela lui donne la possibilité de choisir de manière incorrecte.
  • Gardez la compatibilité avec C autant que possible, permettant ainsi de passer facilement de la programmation au C.
  • Evitez toute confusion entre C et C++ : toute construction autorisée dans les deux langages doit signifier la même chose dans chacun d'eux et conduire au même comportement de 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é de langage ne devrait entraîner une dégradation des performances des programmes qui ne l'utilisent pas.
  • Ne nécessite pas d'environnement de programmation trop compliqué.

C et C++

La syntaxe C++ est héritée du langage C. Bien que, formellement, l'un des principes du C++ reste de maintenir la compatibilité avec le langage C, dans les faits, les groupes de normalisation de ces langages n'interagissent pas, et les changements qu'ils font non seulement qu'ils ne sont pas corrélés, mais qu'ils se contredisent souvent fondamentalement idéologiquement. Ainsi, les éléments que les nouvelles normes C ajoutent au noyau sont des éléments de la bibliothèque standard de la norme C ++ et sont généralement absents du noyau, par exemple, des tableaux dynamiques, des tableaux à limites fixes, des fonctionnalités de traitement parallèle. Combiner le développement des deux langues serait très bénéfique, dit Stroustrup, mais c'est peu probable pour des raisons politiques. Ainsi, la compatibilité pratique entre C et C++ sera progressivement perdue.
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 en C++ elles sont de type char , mais les tailles de ces types diffèrent.

Modèles de cycle de vie des applications

Cycle de la vie le logiciel est une période de temps qui commence à partir du moment où une décision est prise sur la nécessité de créer un produit logiciel et se termine au moment de son retrait complet de l'exploitation. Ce cycle est le processus de construction et de développement de logiciels (SW). Il existe plusieurs modèles de cycle de vie.
Modèle en cascade cycle de vie (modèle anglais de 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 fixe. Le passage à l'étape suivante signifie l'achèvement complet des travaux à l'étape précédente. Les exigences définies lors de l'étape de formation des exigences sont strictement documentées sous forme de termes de référence et fixées pour toute la durée de développement du projet. Chaque étape aboutit à la publication d'un ensemble complet de documentation suffisant pour que le développement soit poursuivi par une autre équipe de développement.
Etapes du projet selon le modèle cascade :

  1. Formation des exigences ;
  2. Concevoir;
  3. Mise en œuvre;
  4. Essai;
  5. la mise en oeuvre;
  6. Opération et maintenance.

Dans le modèle en cascade, le passage d'une phase du projet à une autre suppose l'exactitude complète du résultat de la phase précédente. Dans les grands projets, cela est presque impossible à réaliser. Par conséquent, un tel modèle ne convient que pour le développement d'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. le nom du modèle évolutif. Le modèle IID décompose le cycle de vie d'un projet en une séquence d'itérations, dont chacune ressemble à un "mini-projet", comprenant tous les processus de développement appliqués à la création de plus petits morceaux de fonctionnalité, par rapport au projet dans son ensemble. Le but de chaque itération est d'obtenir une version de travail du 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 se développent 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 - Rational Unified Process (RUP)

Processus unifié rationnel (RUP)(Rational Unified Process) est une méthodologie de développement logiciel gérée 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 (création)
  • Déterminer la portée du projet et le montant des ressources nécessaires. Les principales exigences, restrictions et fonctionnalités clés du produit sont déterminées. Les risques sont évalués. Plan d'action. À la fin de la phase de démarrage, la réalisation du jalon de l'objectif du cycle de vie de l'objectif est évaluée, ce qui implique un accord entre les parties prenantes pour poursuivre le projet.

  • Élaboration
  • Documentation des exigences. Conception, implémentation et test de l'architecture exécutable. Spécification des conditions et des coûts. Réduction des principaux risques. La réussite de la phase de développement signifie l'atteinte du jalon de l'architecture du cycle de vie.

  • Construction
  • Dans la phase "Build", la plupart des fonctionnalités du produit sont implémentées : la conception de l'application est terminée, le code source est écrit. La phase de construction se termine avec la première version externe du système et le jalon de la capacité opérationnelle initiale.

  • Mise en œuvre (transition)
  • 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 test bêta, la formation des utilisateurs et l'assurance qualité des produits. Si la qualité ne répond pas aux attentes des utilisateurs ou aux critères définis dans la phase de démarrage, la phase de mise en œuvre est à nouveau répétée. Atteindre tous les objectifs signifie atteindre le jalon du produit fini (sortie du produit) et terminer le cycle de développement complet.



"Informatique. Génie 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 un cadre général pour les processus du cycle de vie du logiciel qui peut être utilisé comme guide dans l'industrie du logiciel. La norme ne propose pas de modèle de cycle de vie spécifique. 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 exécuter les activités et les tâches incluses dans ces processus.

Présentation pour le cours
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
  • Histoire de C. C et C++
  • Histoire
  • Critique du C++
  • Histoire d'UNIX
  • Modèle de cycle de vie du logiciel Spiral
  • UML (English Unified Modeling Language - langage de modélisation unifié)
  • Cadre de solutions Microsoft
  • IDE pour la programmation C/C++ sous Windows
  • Compilateurs C/C++
  • Création d'une application console sous Windows
Des questions
  1. Pourquoi le modèle de développement logiciel en cascade 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 compilé de haut niveau à usage général, à typage statique, qui convient à la création d'une grande variété d'applications. C++ est l'un des langages les plus populaires et les plus répandus aujourd'hui.

Il a ses racines dans le langage C, qui a été développé en 1969-1973 aux Bell Labs par le programmeur Dennis Ritchie. Au début des années 1980, le programmeur danois Bjarne Stroustrup, alors chez Bell Labs, a développé le C++ comme une extension du langage C. En fait, au début, C++ a simplement complété le langage C avec quelques fonctionnalités de programmation orientée objet. Et donc Stroustrup lui-même l'a d'abord appelé "C avec classes" ("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 a fait non seulement un ajout à C, mais un tout nouveau langage de programmation. En conséquence, "C avec classes" a été renommé en C++. Et depuis lors, les deux langues ont commencé à se développer indépendamment l'une de l'autre.

C++ est un langage puissant, héritant des capacités de mémoire riches de C. Par conséquent, C++ trouve souvent son application dans la programmation système, en particulier lors de la création de systèmes d'exploitation, de pilotes, d'utilitaires divers, d'antivirus, etc. Au fait, Windows est principalement écrit en C++. Mais l'utilisation de ce langage ne se limite pas à la programmation système. 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 des applications graphiques, divers programmes d'application. Il est également particulièrement souvent utilisé pour créer des jeux avec des visuels riches et riches. De plus, la direction mobile a récemment pris de l'ampleur, où 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 une sorte de services auxiliaires qui servent les applications Web. En général, C++ est un langage largement utilisé dans lequel vous pouvez écrire presque n'importe quel type de programme.

C++ est un langage compilé, ce qui signifie que le compilateur traduit le code source C++ en un fichier exécutable contenant un ensemble d'instructions machine. Mais 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 pour la plupart portables, à moins que certaines fonctionnalités 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 plates-formes courantes permet de compiler le même code source C++ dans des applications pour ces plates-formes.

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

Jalons de développement

En 1979-80, Bjarne Stroustrup a développé une extension du langage C - "C avec 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ésentait la première description de ce langage en l'absence de standard officiel.

En 1989, une nouvelle version du langage C++ 2.0 a été publiée, qui comprenait un certain nombre de nouvelles fonctionnalités. Après cela, la langue s'est développée relativement lentement jusqu'en 2011. Mais en même temps, en 1998, la première tentative de standardisation du langage est faite par l'ISO (International Organization for Standardization). La première norme s'appelait ISO/IEC 14882:1998 ou C++98 en abrégé. Plus tard en 2003, une nouvelle version de la norme C++03 a été publiée.

En 2011, la nouvelle norme C++11 a été publiée, qui contenait de nombreux ajouts et enrichit le langage C++ avec un grand nombre de nouvelles fonctionnalités. Cela a été suivi en 2014 par un ajout mineur à la norme, également connu sous le nom de C++14. 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 C++ en un fichier exécutable, qui peut ensuite être exécuté. Mais pour le moment, 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 wikipedia. Il est recommandé pour le développement de choisir les compilateurs qui développent et implémentent toutes les dernières normes. Par exemple, tout au long de ce didacticiel, le compilateur g++ disponible gratuitement, développé par le projet GNU, sera principalement utilisé.

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

Langage C et UNIX

Langage de programmation À PARTIR DE(prononcé "C") a été créé au début des années 70 lorsque Ken Thompson et Dennis Ritchie de Bell Labs développaient le système d'exploitation UNDC. Ils ont d'abord créé la partie compilateur À PARTIR DE, puis utilisé pour compiler le reste du compilateur À PARTIR DE et finalement utilisé le compilateur résultant pour compiler UNIX. Le système d'exploitation UNIX était à l'origine distribué sous forme de codes sources sur À PARTIR DE parmi les universités et les laboratoires, et le destinataire pourrait compiler le code source dans la langue À PARTIR DE au code natif à l'aide d'un compilateur approprié À PARTIR DE.

La distribution du code source a rendu le système d'exploitation UNIX unique; le programmeur pourrait changer le système d'exploitation et le code source pourrait être porté d'une plate-forme matérielle à une autre. Aujourd'hui, la norme POSIX définit l'ensemble standard d'appels système UNIX disponibles dans À PARTIR DE, qui doit être implémenté sur 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, MAIS Et DANS.

Langage d'assemblage mobile C

Par rapport au langage antérieur - BCPL, le langage À PARTIR DE a été amélioré en ajoutant des types de données de longueur spécifiques. Par exemple, le type de données int peut être utilisé pour créer une variable avec un certain nombre 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 plus de bits (généralement 32). Contrairement à d'autres langages de haut niveau, À PARTIR DE pourrait travailler avec des adresses mémoire directement en utilisant des pointeurs et des références. Dans la mesure où À PARTIR DE a conservé la possibilité d'accéder directement au matériel, il est souvent appelé langage de niveau intermédiaire ou appelé en plaisantant "langage d'assemblage mobile".

C - langage de programmation structuré

En ce qui concerne la grammaire et la syntaxe, À PARTIR DE est un langage de programmation structuré. Alors que de nombreux programmeurs modernes pensent en termes de classes et d'objets, les programmeurs À PARTIR DE penser en termes de procédures et de fonctions. DANS À PARTIR DE 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 d'entiers (énumérations) et donner d'autres noms aux types de données existants à l'aide du mot-clé typedef. Dans ce sens À PARTIR DE est un langage structurel avec les germes de la programmation orientée objet.

Normalisation du langage C

Langage répandu C sur différents types d'ordinateurs (parfois appelés plates-formes matérielles) a malheureusement conduit à de nombreuses variantes du langage. Ils étaient similaires mais incompatibles entre eux. C'était un problème majeur pour les développeurs de logiciels qui avaient besoin d'écrire des programmes compatibles pouvant s'exécuter sur plusieurs plates-formes. Il est devenu clair qu'une version standard était nécessaire C. En 1983 L'ANSI (American National Standards Committee) a formé le comité technique X3J11 pour créer une norme de langage C(pour "fournir une définition de langage non ambiguë 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 internationalement; 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 développeurs de compilateurs.

Naissance du C++

Bjorn Stroustrup libère le potentiel orienté objet À PARTIR DE en transférant des fonctionnalités de classe Simule 67 dans À PARTIR DE. Initialement, le nouveau langage s'appelait "C avec classes" et ce n'est qu'alors qu'il a commencé à s'appeler C++. Langue C++ a gagné en popularité en étant développé chez Bell Labs, plus tard, il a été transféré à d'autres industries et sociétés. 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 À PARTIR DE.

Confessions de Bjorn Stroustrup

Bjorn Stroustrup : "J'ai trouvé C++, a écrit sa définition originale et a fait la première implémentation. J'ai choisi et formulé des critères de conception C++, a développé ses principales caractéristiques et a été responsable du sort des propositions d'extension linguistique au sein du comité de normalisation C++", - écrit l'auteur du langage de programmation le plus populaire. - "Langage C++ doit beaucoup à la langue C, et la langue C reste un sous-ensemble Langage C++(mais C++ corrige plusieurs failles sérieuses dans le système de type C). J'ai aussi gardé des fonds C, qui sont suffisamment de bas niveau pour gérer les tâches système les plus critiques. Langue C, à son tour, doit beaucoup à son prédécesseur, BCPL ; au fait, le style de commentaire // a été tiré de C++ de BCPL. L'autre grande source d'inspiration était la langue Simula67. Le concept de classes (avec classes dérivées et fonctions virtuelles) lui a été emprunté. Les moyens de surcharge des opérateurs et la possibilité de placer des déclarations partout où une instruction peut être écrite rappellent Algol68. "

Pourquoi C++

Nom C++ inventé par Rick Massitti. Le nom indique la nature évolutive de la transition vers elle de C. "++" est une opération d'incrémentation dans C. Nom un peu plus 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 Trouve ça C++ pire que ++C. Titres le langage ne l'a pas compris car c'est une extension de C et il n'essaie pas de résoudre les problèmes en supprimant des fonctionnalités.

Pourquoi C++ était 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 de rendre l'écriture de bons programmes plus facile et plus agréable pour le programmeur individuel. Plan de développement C++ jamais été sur papier; le projet, la documentation et la mise en œuvre ont été déplacés en même temps. Bien sûr, 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++". Voilà pourquoi C++ développé et continue de se développer dans tous les sens pour faire face aux difficultés rencontrées par les utilisateurs, ainsi que dans les discussions de l'auteur avec 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 : encapsulation, héritage et polymorphisme. Encapsulation dans C++ pris en charge par 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++ appelé à juste titre une continuation À PARTIR DE et tout programme exploitable dans la langue À PARTIR DE sera pris en charge par le compilateur C++, lors du déplacement de À PARTIR DE pour C++ un saut significatif a été fait. Langue C++ profité de sa parenté avec la langue À PARTIR DE au fil des ans, car de nombreux programmeurs ont découvert que pour tirer pleinement parti de Langage C++, ils doivent abandonner certaines de leurs connaissances antérieures et en acquérir de nouvelles, à savoir : apprendre une nouvelle façon de conceptualiser et de résoudre des problèmes de programmation. Avant de commencer à apprendre C++, Stroustrup et la plupart des autres programmeurs qui utilisent C++ envisager l'apprentissage des langues À PARTIR DE optionnel.

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

Littérature

Sources:

  • HMDeitel, PJDeitel "Comment programmer en C++"
  • Bjorn 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 "Cours de programmation DirectX, C++"

Mots clés: Historique de la normalisation C, ANSI C, ISO C, C99, C11, ISO/IEC C, C.

origines

C et est un "co-produit" de la création du système d'exploitation UNIX, qui a été 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 avec 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 d'assemblage. Le débogage des programmes en langage assembleur est une vraie galère et difficile à améliorer, et UNIX n'a ​​pas fait exception. Thompson a décidé qu'un langage de haut niveau était nécessaire pour le développement ultérieur du système d'exploitation et a proposé un petit langage B. Thompson a pris comme base le langage BCPL, un langage de programmation système développé au milieu des années 60. BCPL, à son tour, 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, Bell Labs a 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. Il l'a d'abord appelé 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 suffisamment stable pour qu'UNIX puisse y être réécrit. Le passage à C a fourni 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, date de publication du premier livre C. Le langage de programmation C, écrit par Brian Kernighan et Denis Ritchie et publié en 1978, est devenu la bible des programmeurs C. En l'absence d'une norme officielle, ce livre - également connu sous le nom de K&R, ou "Livre blanc" comme les fans de C aiment l'appeler - est devenu la norme de facto. Il y avait peu de programmeurs C dans les années 70 et la plupart d'entre eux étaient des utilisateurs UNIX. Cependant, dans les années 80, le C a dépassé les limites étroites du monde UNIX. Les compilateurs C sont devenus disponibles sur diverses machines exécutant divers systèmes d'exploitation. En particulier, C a commencé à se répandre sur la plate-forme IBM PC en développement rapide.

Parallèlement à la montée en popularité, des problèmes se sont posés. 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 discrétion. De plus, le livre ne faisait pas de distinction claire entre ce qui est une caractéristique du langage et ce qui est une caractéristique du système d'exploitation UNIX. Pour aggraver les choses, 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 en ont été supprimées. Bientôt, il y eut un besoin évident d'une description complète, précise et à jour de la langue. Sans une telle norme, des dialectes de la langue ont commencé à apparaître qui ont interféré avec la portabilité, le côté le plus fort 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é achevée en 1988 et officiellement adoptée en décembre 1989 sous le nom ANSI X3.159-1989. En 1990, elle a été approuvée par l'Organisation internationale de normalisation (ISO) en tant que norme internationale ISO/IEC 9899:1990. Cette version du langage est communément appelée C89 ou C90 pour éviter toute confusion avec la version originale de C, communément appelée K&R C.

Le langage a subi des changements mineurs en 1995 (les changements sont décrits 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 communément appelé C99. Les termes "ANSI C", "ANSI/ISO C" et "ISO C", autrefois utilisés pour décrire C99, sont ambigus 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é la présence de la norme 11, de nombreux compilateurs ne prennent toujours pas entièrement en charge même les versions C99, de sorte que l'utilisation de la norme C11 sera explicitement indiquée.

C++ est un langage de programmation compilé à usage général qui combine les fonctionnalités des langages de programmation de haut niveau et de bas niveau. Par rapport à son prédécesseur, le langage de programmation C, l'accent a été mis sur la prise en charge de la programmation orientée objet et générique. Le nom "langage de programmation C++" vient du langage de programmation C, dans lequel l'opérateur unaire ++ désigne l'incrément d'une variable.

Le langage de programmation C++ est largement utilisé pour le développement de logiciels. À savoir, la création de divers programmes d'application, le développement de systèmes d'exploitation, de pilotes de périphériques, ainsi que de jeux vidéo, et bien plus encore. Il a été créé au début des années 1980 par Bjorn Stroustrup. Il a proposé un certain nombre d'améliorations au langage de programmation C pour son propre usage. celles. Initialement, il n'était pas prévu de créer le langage de programmation C++.

Il prend en charge des paradigmes de programmation tels que la programmation procédurale, la programmation orientée objet, la programmation générique, fournit la modularité, la compilation séparée, la gestion des exceptions, l'abstraction des données, la déclaration des types d'objets (classes), les fonctions virtuelles.

Le nom de langage résultant provient de l'opérateur d'incrémentation de suffixe unaire C++ (incrémentant la valeur d'une variable de un). Le nom C+ n'a pas été utilisé car il s'agit d'une erreur de syntaxe en C et, de plus, le nom a été repris par un autre langage. Le langage n'a pas non plus été nommé D car "il s'agit d'une extension de C et ne tente pas de résoudre les problèmes en supprimant les éléments C".

Avantages de la langue :

1. Évolutivité. C++ est utilisé pour développer des programmes pour une variété de plates-formes et de systèmes.

2. Capacité à travailler à bas niveau avec de la mémoire, des adresses, des ports.

3. Capacité à créer des algorithmes généralisés pour différents types de données, leur spécialisation et les calculs au stade de la compilation à l'aide de modèles.

4. Multiplateforme. Les compilateurs sont disponibles pour un grand nombre de plateformes, les programmes sont développés en C++ pour une grande variété de plateformes et de systèmes.

5. Efficacité. Le langage est conçu pour donner au programmeur un contrôle maximal sur tous les aspects de la structure et de l'exécution du programme.

Inconvénients linguistiques :

1. La présence de nombreuses fonctionnalités qui violent les principes de sécurité de type conduit au fait que dans les programmes C ++, une erreur subtile peut facilement s'infiltrer.

2. Mauvaise prise en charge de la modularité. Inclure l'interface d'un module externe via l'insertion par le préprocesseur d'un fichier d'en-tête (#include) ralentit sérieusement la compilation lorsqu'un grand nombre de modules sont inclus.

3. Le langage C++ est difficile à apprendre et à compiler.

4. Certaines conversions de type ne sont pas intuitives. En particulier, l'opération sur les nombres non signés et signés produit un résultat non signé.

5. Certains considèrent que l'absence d'un système de récupération de place intégré est un inconvénient du langage C++. D'autre part, C++ dispose de suffisamment d'outils pour presque éliminer l'utilisation de pointeurs dangereux, et il n'y a pas de problèmes fondamentaux dans l'implémentation et l'utilisation de la récupération de place (au niveau des bibliothèques, pas du langage). L'absence de ramasse-miettes intégré permet à l'utilisateur de choisir une stratégie de gestion des ressources.