[annonce_1]
Origines du C et du C++
Dennis Ritchie des Bell Labs a conçu le C , un langage de programmation informatique à usage général en 1972 pour une utilisation avec UNIX, un système d’exploitation de l’époque. C est principalement utilisé pour la programmation de logiciels système, mais il est également très utile pour créer des logiciels d’application généraux. Certains des adjectifs utilisés pour décrire le C sont un langage structuré par blocs, impératif et procédural.
C++ (à l’origine nommé « C avec classes » et encore connu comme la superstructure du C dans les cercles informatiques) a été développé comme une amélioration du C par Bjarne Stroustrup en 1983 aux Bell Labs. Stroustrup, en 1979, a commencé par ajouter des classes , des fonctions virtuelles, une surcharge d’opérateurs, un héritage multiple, des modèles, la gestion des exceptions, etc. La norme de langage de programmation C++ a été ratifiée comme ISO/IEC 14882:1998 en 1998 et la version actuelle est la version 2003, ISO/IEC 14882:2003 qui est en fait la version corrigée du C++ 1998. Le « Library Technical Report 1 », publié en 2005 donne des détails sur les extensions de la bibliothèque standardsans faire partie de la version standard. Une nouvelle version de la norme (officiellement connue sous le nom de C++0x) est en cours de développement. C++ est un langage de programmation commercial très réussi depuis 1990. Bien que C++ soit libre de droits, sa documentation n’est pas disponible gratuitement.
Utilisation du C par rapport au C++
C s’est avéré très utile pour exécuter des applications codées en langage assembleur en raison de ses atouts tels qu’un simple compilateur, des niveaux d’accès inférieurs à la mémoire, une prise en charge de la durée d’exécution inférieure et un langage de construction efficace qui était synchronisé avec les instructions matérielles. Un autre de ses mérites est qu’il s’agit d’un outil hautement portable (compatible avec une variété de systèmes d’exploitation et de plates-formes) avec des changements de code source très minimes requis. Ainsi, il a permis des opérations à distance et une indépendance vis-à-vis du matériel. C est également conforme à une variété de normes, ce qui lui permet de fonctionner avec tout.
C++ est connu comme un langage de niveau intermédiaire. En raison du fait que le C++ comprend à la fois des fonctionnalités de langage de haut niveau et de bas niveau. Certains des adjectifs utilisés pour décrire le C++ sont de type statique , de forme libre, multi-paradigmes et prenant en charge la programmation procédurale.
Stroustrup, lors de la programmation de sa thèse de doctorat, a découvert que le langage Simula avait des fonctionnalités de haut niveau utiles pour le développement de grands logiciels, mais était trop lent pour une utilisation pratique, tandis que le BCPL (langage) était rapide, mais trop bas niveau et donc inadapté au développement de grands logiciels. Dans les laboratoires Bell, il a dû analyser le noyau UNIX par rapport à l’informatique distribuée, ce qui a créé d’autres problèmes et il a entrepris d’améliorer le C (en raison de sa nature ultra portable) avec des fonctionnalités de la Simula. C++ a été créé en 1983 avec des fonctionnalités supplémentaires telles que des fonctions virtuelles, le nom de la fonction et l’ opérateursurcharge, références, constantes, mémoire libre contrôlée par l’utilisateur, vérification de type améliorée et commentaires sur une seule ligne avec deux barres obliques (//). Le Cfront (version commerciale) a été publié en 1985 avec les fonctionnalités de classe, de classe dérivée, de vérification de type forte, d’inline et d’argument par défaut. 1985 a également vu la sortie du langage de programmation C++, une référence importante au langage en l’absence de norme officielle. Cela a été suivi par la sortie du C++ 2.0 en 1989 avec des fonctionnalités telles que l’héritage multiple, les classes abstraites, les fonctions membres statiques, les fonctions membres const et les membres protégés. Des fonctionnalités telles que les modèles, les exceptions, les espaces de noms, les nouvelles distributions et le type booléen ont été ajoutées après 1990.
Parallèlement au langage, sa bibliothèque a également évolué, avec plusieurs ajouts comme la bibliothèque d’E/S de flux, la bibliothèque de modèles standard, etc.
Les premières éditions du livre K & R écrit par Dennis Ritchie & Brian Kernighan (nom original : The C Programming Language) décrivent leur version de C comme le K & RC avec des spécifications complètes, tandis que les éditions ultérieures incluent l’ANSI (American National Standards Institut) Normes C. Certaines des principales caractéristiques décrites sont l’introduction de divers types de données, la suppression de plusieurs ambiguïtés sémantiques, l’omission d’autres déclarations de fonction, etc. Même après l’introduction de l’ANSI C, le K & RC est resté le langage de programmation le plus portable pour les programmeurs. en raison de ses compatibilités plus larges.
Les déclarations de fonction K&R n’incluaient aucune information sur les arguments de fonction conduisant à la non-exécution des vérifications de type de paramètre de fonction, bien que certains compilateurs aient émis un message d’avertissement si une fonction locale était appelée avec le mauvais nombre d’arguments ou si plusieurs appels à une fonction externe étaient utilisés nombres d’arguments différents. Des outils tels que l’utilitaire Lint d’UNIX ont été créés pour vérifier la cohérence des fonctions utilisées dans plusieurs fichiers source.
Caractéristiques linguistiques
Caractéristiques de C
Certaines des caractéristiques importantes de C sont les suivantes :
- Installations de programmation structurées
- Confirmation aux traditions ALGOL
- Évaluation de court-circuit – utilisation d’un seul opérande si le résultat peut être déterminé avec lui seul
- Système de frappe statique pour éviter les opérations involontaires
- Valeur transmise aux paramètres pertinents pour le passage de la valeur du pointeur
- Combinaison et manipulation de données hétérogènes
- Mots-clés réservés et texte source au format libre
- Plus grand nombre d’opérateurs composés, tels que +=, ++
- Capacité de masquage variable énorme, bien que les définitions de fonction ne soient pas emboîtables
- Caractère – utilisation d’entiers similaire au langage assembleur
- Accès de bas niveau à la mémoire de l’ordinateur via des adresses de machine et des pointeurs dactylographiés
- Les pointeurs de fonction permettent des formes rudimentaires de fermetures et d’exécution polymorphe
- Indexation des tableaux définie par arithmétique de pointeur (notion secondaire)
- Processeur standardisé pour la définition de macros, y compris les fichiers de code source et les compilations conditionnelles
- Fonctions d’entrée/sortie et mathématiques complexes avec délégation cohérente aux routines de la bibliothèque
- Syntaxe identique à « B » (prédécesseur de C) mais différente d’ ALGOL, par exemple : { … } remplacé begin … end, && et || remplacé et & ou, qui
- Tandis que B utilisait & et | dans les deux sens, C les a rendus syntaxiquement distincts des opérateurs au niveau du bit
- Similitudes avec Fortran, par exemple : le signe égal pour l’affectation (copie) et deux signes égaux consécutifs pour tester l’égalité (comparer à EQ) ou le signe égal en BASIC )
Les autres fonctionnalités non officielles ajoutées avec le temps étaient :
- fonctions vides
- Fonctions renvoyant des types struct ou union au lieu de pointeurs
- Affectations activées pour les types de données struct
- qualificateur const pour rendre un objet en lecture seule
- Types énumérés
- Création d’outil pour éviter les problèmes inhérents à la langue
Bientôt, le C est devenu suffisamment puissant pour que le noyau UNIX (écrit dans un langage d’assemblage) soit réécrit, ce qui en fait l’un des premiers noyaux de système d’exploitation écrits dans un langage différent des langages d’assemblage.
Caractéristiques du C++
- C++ est conçu pour être un langage généraliste à typage statique aussi efficace et portable que le C
- C++ est conçu pour prendre en charge directement et complètement plusieurs styles de programmation (programmation procédurale, abstraction de données, programmation orientée objet et programmation générique)
- C++ est conçu pour donner le choix au programmeur, même si cela permet au programmeur de choisir de manière incorrecte
- C++ est conçu pour être aussi compatible que possible avec C, offrant ainsi une transition en douceur depuis C
- C++ évite les fonctionnalités spécifiques à la plate-forme ou non générales
- C++ n’entraîne pas de surcharge pour les fonctionnalités qui ne sont pas utilisées
- C++ est conçu pour fonctionner sans environnement de programmation sophistiqué
Le polymorphisme , l’une des principales qualités du C++, permet de nombreuses implémentations avec une seule interphase et pour que les objets agissent selon les circonstances. C++ prend en charge les polymorphismes statiques (à la compilation) et dynamiques (à l’exécution). Le polymorphisme au moment de la compilation ne permet pas certaines décisions au moment de l’exécution, tandis que le polymorphisme au moment de l’exécution entraîne généralement une pénalité de performance. C++, bien que considéré comme un sur-ensemble de C, il existe quelques différences qui font que certains codes C valides sont invalides en C++ ou se comportent différemment en C++. Des problèmes tels que le C++ définissant de nouveaux mots-clés, à savoir new & class, qui sont utilisés comme identifiants en C. Les codes C et C++ peuvent être mélangés en déclarant tout code C qui doit être appelé depuis/utilisé en C++ avec une liaison C et en le plaçant dans un bloc externe « C » { /* C code */ }.
Développements dans les deux langues
Avec le temps, la standardisation est devenue de plus en plus importante en raison d’un grand nombre d’extensions et d’une bibliothèque aléatoire avec une popularité croissante du langage et le manque d’implémentation précise des compilateurs selon les spécifications. L’un des objectifs du processus de normalisation C était de produire un sur-ensemble de K&R C, incorporant de nombreuses fonctionnalités non officielles introduites par la suite. Cependant, le comité des normes a inclus plusieurs nouvelles fonctionnalités telles que des prototypes de fonctions, des pointeurs vides, la prise en charge des jeux de caractères internationaux et des paramètres régionaux et un préprocesseur plus performant. La syntaxe des déclarations de paramètres a également été augmentée. Après les années 1970, C a remplacé BASIC en tant que langage leader pour la programmation de microprocesseurs et est devenu populaire grâce à sa collaboration avec les PC IBM. Pendant ce temps, Bjarne Stroustrup et d’autres de Bell Labs ont commencé à travailler sur la création du C++, qui a ajouté des constructions de langage de programmation orienté objet à C. De plus, l’ANSI a formé un comité en 1983 appelé X3J11, pour établir une spécification standard de C et en 1989, la norme a été ratifié comme ANSI X3.159-1989 « Programming Language C. » Il s’agit de la version de C qui est souvent appelée ANSI C, Standard C ou C89. C90, introduit en 1990, était le même que C89 à quelques changements mineurs près. Alors que le C++ a évolué rapidement, le C est resté statique jusqu’en 1995, date à laquelle l’Amendement normatif 1 a créé une nouvelle norme qui a subi une révision supplémentaire, conduisant à la publication de l’ISO 9899:1999 en 1999. Cette norme est communément appelée « C99 ». Elle a été adoptée en tant que norme ANSI en mars 2000. Certaines des fonctions les plus récentes sont mentionnées ci-dessous : qui a ajouté des constructions de langage de programmation orienté objet à C. De plus, l’ANSI a formé un comité en 1983 appelé X3J11, pour établir une spécification standard de C et en 1989, la norme a été ratifiée comme ANSI X3.159-1989 « Programming Language C ». Il s’agit de la version de C qui est souvent appelée ANSI C, Standard C ou C89. C90, introduit en 1990, était le même que C89 à quelques changements mineurs près. Alors que le C++ a évolué rapidement, le C est resté statique jusqu’en 1995, date à laquelle l’Amendement normatif 1 a créé une nouvelle norme qui a subi une révision supplémentaire, conduisant à la publication de l’ISO 9899:1999 en 1999. Cette norme est communément appelée « C99 ». Elle a été adoptée en tant que norme ANSI en mars 2000. Certaines des fonctions les plus récentes sont mentionnées ci-dessous : qui a ajouté des constructions de langage de programmation orienté objet à C. De plus, l’ANSI a formé un comité en 1983 appelé X3J11, pour établir une spécification standard de C et en 1989, la norme a été ratifiée comme ANSI X3.159-1989 « Programming Language C ». Il s’agit de la version de C qui est souvent appelée ANSI C, Standard C ou C89. C90, introduit en 1990, était le même que C89 à quelques changements mineurs près. Alors que le C++ a évolué rapidement, le C est resté statique jusqu’en 1995, date à laquelle l’Amendement normatif 1 a créé une nouvelle norme qui a subi une révision supplémentaire, conduisant à la publication de l’ISO 9899:1999 en 1999. Cette norme est communément appelée « C99 ». Elle a été adoptée en tant que norme ANSI en mars 2000. Certaines des fonctions les plus récentes sont mentionnées ci-dessous : ANSI a formé un comité en 1983 appelé X3J11, pour établir une spécification standard de C et en 1989, la norme a été ratifiée comme ANSI X3.159-1989 « Programming Language C ». Il s’agit de la version de C qui est souvent appelée ANSI C, Standard C ou C89. C90, introduit en 1990, était le même que C89 à quelques changements mineurs près. Alors que le C++ a évolué rapidement, le C est resté statique jusqu’en 1995, date à laquelle l’Amendement normatif 1 a créé une nouvelle norme qui a subi une révision supplémentaire, conduisant à la publication de l’ISO 9899:1999 en 1999. Cette norme est communément appelée « C99 ». Elle a été adoptée en tant que norme ANSI en mars 2000. Certaines des fonctions les plus récentes sont mentionnées ci-dessous : ANSI a formé un comité en 1983 appelé X3J11, pour établir une spécification standard de C et en 1989, la norme a été ratifiée comme ANSI X3.159-1989 « Programming Language C ». Il s’agit de la version de C qui est souvent appelée ANSI C, Standard C ou C89. C90, introduit en 1990, était le même que C89 à quelques changements mineurs près. Alors que le C++ a évolué rapidement, le C est resté statique jusqu’en 1995, date à laquelle l’Amendement normatif 1 a créé une nouvelle norme qui a subi une révision supplémentaire, conduisant à la publication de l’ISO 9899:1999 en 1999. Cette norme est communément appelée « C99 ». Elle a été adoptée en tant que norme ANSI en mars 2000. Certaines des fonctions les plus récentes sont mentionnées ci-dessous : Il s’agit de la version de C qui est souvent appelée ANSI C, Standard C ou C89. C90, introduit en 1990, était le même que C89 à quelques changements mineurs près. Alors que le C++ a évolué rapidement, le C est resté statique jusqu’en 1995, date à laquelle l’Amendement normatif 1 a créé une nouvelle norme qui a subi une révision supplémentaire, conduisant à la publication de l’ISO 9899:1999 en 1999. Cette norme est communément appelée « C99 ». Elle a été adoptée en tant que norme ANSI en mars 2000. Certaines des fonctions les plus récentes sont mentionnées ci-dessous : Il s’agit de la version de C qui est souvent appelée ANSI C, Standard C ou C89. C90, introduit en 1990, était le même que C89 à quelques changements mineurs près. Alors que le C++ a évolué rapidement, le C est resté statique jusqu’en 1995, date à laquelle l’Amendement normatif 1 a créé une nouvelle norme qui a subi une révision supplémentaire, conduisant à la publication de l’ISO 9899:1999 en 1999. Cette norme est communément appelée « C99 ». Elle a été adoptée en tant que norme ANSI en mars 2000. Certaines des fonctions les plus récentes sont mentionnées ci-dessous : Cette norme est communément appelée « C99 ». Elle a été adoptée en tant que norme ANSI en mars 2000. Certaines des fonctions les plus récentes sont mentionnées ci-dessous : Cette norme est communément appelée « C99 ». Elle a été adoptée en tant que norme ANSI en mars 2000. Certaines des fonctions les plus récentes sont mentionnées ci-dessous :
- Fonctions en ligne
- Possibilité de déclarer des variables n’importe où, au lieu de seulement après une autre déclaration ou au début d’une instruction composée
- Nouveaux types de données comme long long int, types entiers étendus facultatifs, type de données booléen explicite et type complexe pour désigner des nombres complexes
- Les longueurs des tableaux peuvent être variables
- Commentaires d’une ligne commençant par // pris en charge
- Fonctions de bibliothèque comme snprintf
- Nouveaux fichiers d’en-tête, tels que stdbool.h et inttypes.h
- Fonctions mathématiques de type générique (tgmath.h)
- Prise en charge améliorée de la virgule flottante IEEE
- Initialiseurs désignés
- Littéraux composés
- Prise en charge des macros variadiques (macros d’arité variable)
C++, tout en continuant à évoluer pour répondre aux exigences du futur, une version plus récente appelée C++0x indiquant qu’elle devrait être publiée avant 2010 est actuellement en cours de développement. Des indications suggèrent que le C++ continuera à capitaliser sur sa nature multi-paradigme et des améliorations notables peuvent être la prise en charge native des threads et des concepts, facilitant ainsi le travail avec les templetes. De manière plus controversée, l’ajout de la collecte des ordures fait actuellement l’objet de vives discussions. Un groupe appelé Boost.org, qui conseille le comité des normes C++ sur les bonnes fonctionnalités et les améliorations requises, travaille intensivement pour développer C++ dans sa forme actuelle avec des capacités fonctionnelles et de métaprogrammation étendues.
Dans La conception et l’évolution du C++ (1994), Bjarne Stroustrup décrit quelques règles qu’il a utilisées pour concevoir le C++. Connaître les règles aide à comprendre pourquoi le C++ est ainsi. Beaucoup plus de détails peuvent être trouvés dans La conception et l’évolution du C++.
Influences
L’influence de C peut être attribuée à des travaux comme awk, csh, C++, C#, D, Objective-C, Concurrent-C, BitC, Java et JavaScript , Limbo, Perl, PHP, etc. Certaines des principales implémentations de C incluent le Borland C, Watcom C, GCC et MSVC. C++, à son actif, a influencé d’autres travaux comme D, C#, ADA 95, Aikido, Java & PHP.
Critiques de C contre C++
Malgré sa popularité, C a été critiqué pour avoir des opérations souhaitables trop difficiles à réaliser et des opérations indésirables trop faciles à invoquer accidentellement, impliquant ainsi plus de compétences, d’expérience, d’effort et d’attention aux détails que les autres langages de programmation pour une utilisation sûre et efficace. de la langue.
Lorsque les langages orientés objet sont devenus populaires, C++ était une extension de C qui offrait des capacités orientées objet avec C++ initialement implémenté en tant que préprocesseur – le code source était traduit en C, puis compilé avec un compilateur C.
Le C++ étant dérivé du C, il hérite également de la plupart des critiques adressées au C. Mais comme le langage est en fait une composition de deux langages différents, ainsi que la charge de programmes énormes, finissent souvent par rendre la compilation énorme et inappropriée en termes de taille pure. Lorsque ce problème est tenté d’être évité, en désactivant certains des codes marginaux, il a de nouveau été critiqué pour avoir perdu plusieurs utilitaires importants. Le créateur de C++ estime également que C++ est justifié d’être un langage complexe puisque les exigences de programmation modernes ont également augmenté de manière considérable par rapport aux années précédentes.
Les références
[annonce_2]