Le language de programmation C
-C est un langage de programmation impératif - généraliste, de bas niveau. Inventé au début des années 1970 - pour réécrire Unix, C est devenu un des langages les plus utilisés, - encore de nos jours. De nombreux langages plus modernes comme C++, C#, - Java et PHP ou JavaScript ont repris une syntaxe similaire au C et - reprennent en partie sa logique. C offre au développeur une - marge de contrôle importante sur la machine - (notamment sur la gestion de la mémoire) et est de ce fait utilisé - pour réaliser les « fondations » (compilateurs, - interpréteurs…) de ces langages plus modernes.
- + +C est un langage de programmation impératif + généraliste, de bas niveau. Inventé au début des années 1970 + pour réécrire Unix, C est devenu un des langages les plus utilisés, + encore de nos jours. De nombreux langages plus modernes comme C++, C#, + Java et PHP ou JavaScript ont repris une syntaxe similaire au C et + reprennent en partie sa logique. C offre au développeur une + marge de contrôle importante sur la machine + (notamment sur la gestion de la mémoire) et est de ce fait utilisé + pour réaliser les « fondations » (compilateurs, + interpréteurs…) de ces langages plus modernes.
+Histoire
+Le langage C a été inventé au cours de l'année 1972 dans les + Laboratoires Bell. Il était développé en même temps qu'Unix par + Dennis Ritchie et Kenneth Thompson. Kenneth Thompson avait développé + le prédécesseur direct de C, le langage B, qui est lui-même + largement inspiré de BCPL. Dennis Ritchie a fait évoluer le langage + B dans une nouvelle version suffisamment différente, en ajoutant + notamment les types, pour qu'elle soit appelée C1. + + Bien que C soit directement dérivé de B, Ritchie relève aussi des influences de + PL/I, FORTRAN et ALGOL 68. En outre, Ritchie signale que l'équipe + était convaincue du bien-fondé de l'idée d'écrire un système + d'exploitation dans un langage de plus haut niveau que l'assembleur, + un aspect pionnier de Multics, écrit en PL/I. + + Par la suite, Brian Kernighan aida à populariser le langage C. Il procéda aussi + à quelques modifications de dernière minute. En 1978, Kernighan fut + le principal auteur du livre The C Programming Language décrivant le + langage enfin stabilisé ; Ritchie s'était occupé des appendices et + des exemples avec Unix. On appelle aussi ce livre « le K&R », et + l'on parle de C traditionnel ou de C K&R lorsqu'on se réfère au + langage tel qu'il existait à cette époque.
+Qualités et défauts
+-
+
- il existe depuis longtemps, le début des années 1970 ; +
- il est fondé sur un standard ouvert ; +
- de nombreux informaticiens le connaissent ; +
- il permet la minimisation de l'allocation mémoire nécessaire, son contrôle complet et la maximisation de la performance, notamment par l'utilisation de pointeurs ; +
- il permet la construction de structures de données complexes et ad-hoc, au plus près des besoins ; +
- des compilateurs et bibliothèques logicielles existent sur la plupart des architectures ; +
- il a influencé de nombreux langages plus récents dont C++, Java, C# et PHP ; sa syntaxe en particulier est largement reprise ; +
- il met en œuvre un nombre restreint de concepts, ce qui facilite sa maîtrise et l'écriture de compilateurs simples et rapides ; +
- il ne spécifie pas rigidement le comportement du fichier exécutable produit, ce qui aide à tirer parti des capacités propres à chaque ordinateur ; +
- il permet, par la compilation directe vers le langage machine (via l'assembleur), l'écriture de logiciels qui n'ont besoin d'aucun support à l'exécution (ni bibliothèque logicielle ni machine virtuelle), au comportement prévisible en temps d'exécution comme en consommation de mémoire vive, comme des noyaux de système d'exploitation et des logiciels embarqués. +
- le peu de vérifications offertes par les compilateurs d'origine (K&R C), et l'absence de vérifications à l'exécution, ce qui fait que des erreurs qui auraient pu être automatiquement détectées lors du développement ne l’étaient qu’à l'exécution, donc au prix d’un plantage du logiciel ;
+
-
+
- sous UNIX, on pouvait utiliser les utilitaires lint et cflow pour éviter de tels mécomptes, +
- des vérifications sont ajoutées avec le temps, mais elles restent partielles, +
+ - son approche de la modularité restée au niveau de ce qui se faisait au début des années 1970, et largement dépassée depuis par d'autres langages :
+
-
+
- il ne facilite pas la programmation orientée objet, +
- il ne permet pas de créer des espaces de noms, +
+ - la gestion d'exceptions très sommaire ; +
- le support très limité de la généricité, malgré l’introduction des expressions à type générique en C11 ; +
- les subtilités de l'écriture de programmes portables, car le comportement exact des exécutables dépend de l'ordinateur cible ; +
- le support minimaliste de l'allocation de mémoire et des chaînes de caractères, ce qui oblige les programmeurs à s'occuper de détails fastidieux et sources de bugs ; il n'y a notamment pas de ramasse-miettes standard ; +
- les bugs graves qui peuvent être causés par un simple manque d'attention du développeur ; tel le dépassement de tampon qui constitue une faille de sécurité informatique exploitable par les logiciels malveillants ; +
- certaines erreurs ne peuvent être détectées automatiquement qu'à l'aide d'outils supplémentaires et non standardisés, comme lint et Valgrind ; +
- la faible productivité du langage par rapport aux langages plus récents[réf. souhaitée]. +
Principale qualitées
+Principaux inconvénients
+LangProg - C++
+ +Le language de programmation C
-C++ est un langage de programmation compilé permettant la - programmation sous de multiples paradigmes, dont la programmation - procédurale, la programmation orientée objet et la programmation - générique. Ses bonnes performances, et sa compatibilité avec le C en - font un des langages de programmation les plus utilisés dans les - applications où la performance est critique.
-Créé initialement par Bjarne Stroustrup dans les années 1980, le - langage C++ est aujourd'hui normalisé par l'ISO. Sa première - normalisation date de 1998 (ISO/CEI 14882:1998), ensuite amendée par - l'erratum technique de 2003 (ISO/CEI 14882:2003). Une importante mise - à jour a été ratifiée et publiée par l'ISO en septembre 2011 sous le - nom de ISO/IEC 14882:2011, ou C++113. Depuis, des mises à jour sont - publiées régulièrement : en 2014 (ISO/CEI 14882:2014, ou C++144), en - 2017 (ISO/CEI 14882:2017, ou C++175) puis en 2020 (ISO/IEC 14882:2020, - ou C++206).
-Le language de programmation C++
+ +C++ est un langage de programmation compilé + permettant la programmation sous de multiples paradigmes, + dont la programmation procédurale, la programmation orientée + objet et la programmation générique. Ses bonnes + performances, et sa compatibilité avec le C en font un des langages + de programmation les plus utilisés dans les applications où la + performance est critique.
Créé initialement par Bjarne + Stroustrup dans les années 1980, le langage C++ est aujourd'hui + normalisé par l'ISO. Sa première normalisation date de 1998 (ISO/CEI + 14882:1998), ensuite amendée par l'erratum technique de 2003 + (ISO/CEI 14882:2003). Une importante mise à jour a été ratifiée et + publiée par l'ISO en septembre 2011 sous le nom de ISO/IEC + 14882:2011, ou C++113. Depuis, des mises à jour sont publiées + régulièrement : en 2014 (ISO/CEI 14882:2014, ou C++144), en 2017 + (ISO/CEI 14882:2017, ou C++175) puis en 2020 (ISO/IEC 14882:2020, ou + C++206).
+LangProg - C#
+ +Le language de programmation C
-C# est un langage de programmation orientée objet, - fortement typé, dérivé de C et de C++, ressemblant au langage Java. Il - est utilisé pour développer des applications web, - ainsi que des applications de bureau, des services web, des - commandes, des widgets ou des bibliothèques de classes. En - C#, une application est un lot de classes où une des classes comporte - une méthode Main, comme cela se fait en Java.
-C# est destiné à développer sur la plateforme .NET, une pile - technologique créée par Microsoft pour succéder à - COM.
Les exécutables en C# sont subdivisés en assemblies, en - namespaces, en classes et en membres de classe4. Un - assembly est la forme compilée, qui peut être un - programme (un exécutable) ou une bibliothèque de classes (une dll). Un - assembly contient le code exécutable en MSIL, ainsi que les symboles. - Le code MSIL est traduit en langage machine au moment de l'exécution - par la fonction just-in-time de la plateforme .NET4. -
-Le language de programmation C#
+ +C# est un langage de programmation orientée objet, + fortement typé, dérivé de C et de C++, ressemblant au langage Java. Il + est utilisé pour développer des applications web, + ainsi que des applications de bureau, des services web, des + commandes, des widgets ou des bibliothèques de classes. En + C#, une application est un lot de classes où une des classes comporte + une méthode Main, comme cela se fait en Java.
+C# est destiné à développer sur la plateforme .NET, une pile + technologique créée par Microsoft pour succéder à + COM.
Les exécutables en C# sont subdivisés en assemblies, en + namespaces, en classes et en membres de classe4. Un + assembly est la forme compilée, qui peut être un + programme (un exécutable) ou une bibliothèque de classes (une dll). Un + assembly contient le code exécutable en MSIL, ainsi que les symboles. + Le code MSIL est traduit en langage machine au moment de l'exécution + par la fonction just-in-time de la plateforme .NET4. +
+