- Le language de programmation C
+ 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
+
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,
@@ -43,48 +92,48 @@
- 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
+
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
+ 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
+ qualités et défauts
- Principale qualitées
+ principale qualitées
- 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 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.
- Principaux inconvénients
- - 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 ;
+
principaux inconvénients
+ - 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,
+ - 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,
@@ -95,11 +144,11 @@
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 ;
+ 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 ;
+ 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].
@@ -107,10 +156,8 @@