Concepts en C

Cohérence, logique et fonctionnement du C


précédentsommaire

X. Conclusion

Les choix fondamentaux effectués par les concepteurs du langage C résultent (probablement) d'un compromis entre deux objectifs quelque peu contradictoires :

  • avoir un langage capable de manipuler des données avec suffisamment d'abstraction pour permettre au programmeur d'ignorer largement les mécanismes sous-jacents impliqués dans l'interprétation et l'exécution de leur code;

  • avoir un langage permettant également une programmation bas niveau adaptée à une machine donnée, ce qui impose une connaissance détaillée du fonctionnement de celle-ci, mais aussi du comportement du compilateur.

Les concepteurs du langage ont élaboré une trame conceptuelle, permettant de résoudre le premier point, en laissant au langage suffisamment de degrés de libertés pour répondre au second. C'est cette trame que le présent document avait pour but de mettre en évidence et l'importance accordée aux grandeurs (et aux expressions) dans ce texte se justifie par l'incidence qu'elles ont sur la conception du langage.

Les nombreux degrés de libertés apportent la souplesse nécessaire au langage mais le rendent délicat à utiliser dès qu'on veut obtenir un programme portable. Les termes "comportement indéfini", "comportement déterminé par l'implémentation", etc. sont extrêmement fréquents dans la norme. Des choses qui semblent parmi les plus élémentaires peuvent varier d'un système à l'autre, comme par exemple la gamme des valeurs représentables par un entier d'un type donné ainsi que leur représentation binaire (la norme accepte trois méthodes différentes pour représenter les nombres signés !).

Le langage C a la réputation d'être un langage compliqué. Cette réputation est fondée souvent sur de bien mauvaises raisons (syntaxe mal comprise, notion d'adresse et de pointeurs mal assimilée, confusions avec les tableaux, etc.). C'est plutôt finalement un langage avec une structure de base simple mais la souplesse dont on l'a doté crée des comportements délicats qu'il faut maîtriser.

Il me semble impossible de maîtriser ce langage sans comprendre ses méthodes de raisonnement, les mécanismes sous-jacents mis en oeuvre et l'interprétation du code source par le compilateur.

Ce document avait pour but de vous y aider.


précédentsommaire

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Ce document est issu de http://www.developpez.com et reste la propriété exclusive de son auteur. La copie, modification et/ou distribution par quelque moyen que ce soit est soumise à l'obtention préalable de l'autorisation de l'auteur.