Fiche technique | |
---|---|
Type de produit : | Langage de programmation |
Auteur : | Dennis Ritchie |
Date de publication : | 1969 à 1973 |
Introduction
Le langage de programmation C est probablement après le langage de programmation Perl un des langages le plus «piégé» jamais inventés sous prétexte d'avoir accès à une écriture parfois beaucoup plus courte et abrégé que n'importe quel autre langage. Il est possible par exemple d'effectuer une affectation de valeur dans une comparaison. Les pointeurs sont également à employer avec prudence, car il est très permissif et on peut facilement oublier, nature humaine étant ainsi, un astérisque et avoir un programme ne fonctionnant plus. Ce genre d'exemple parmi tant d'autres montre que ce langage n'est certainement pas pour les débutants et que de ce fait on doit être très éveillé en écrivant du code. De se fait, on comprend que statistiquement ce langage augmente les probabilités d'erreur de programmation et qu'il est donc dépassé et de loin inférieur à des langages comme Java ou Ada par exemple. Pourtant, à l'origine, il avait été créé par Dennis Ritchie entre 1969 et 1973, sur la base des langages de programmation B et BCPL et en 1973, il avait réimplémenter sur le solide système d'exploitation Unix sur un PDP-11.
Bien que promu à titre de langage universel, il est très difficile de compilé de la source développer sur un PC et de le faire fonctionner sur un Mac, même si en théorie se devrait être possible, ainsi le langage Cobol ou Pascal sont autant universel que le langage C peut l'être, c'est-à-dire en sacrifiant beaucoup de temps avec des directives de compilations conditionnelles...
Enfin, la récompense pour avoir l'audace de traverser le champ de mines qu'est ce langage est un code légèrement plus rapide et parfois plus petit ainsi qu'une vénération des hautes sphères intellectuelles.
Même si ce langage est de moins en moins utilisé, je vous recommande tout de même de l'apprendre si vous êtes passionné d'informatique pour trois raisons :
- La culture est quelque chose d'important : On doit connaître son passé pour en comprendre le futur.
- Il est la base de principe de nombreux langages comme C++, Perl, PHP, J++, Java, X++, C#.
- Il amène intuitivement à comprendre les bonnes méthodes et les mauvaises méthodes de programmation, car il est très proche du processeur.
En terminant, quelques illogismes dans la syntaxe d'un programme C :
- Dans de nombreux langages comme le Cobol ou le Pascal, le type de données est situé d'un côté et le nom de la variable de l'autre, bien en C, c'est à moitié vrai. Ainsi, si c'est un tableau, on mettra les braquets de tableau après le nom et non pas après le type de données, exemple : «int variable[10];».
- Parfois les structures de données sont en majuscules (comme FILE) et parfois en minuscule (time_h), donc, ça peut créer une certaine confusion dans le code à se niveau.
Point négatif
Voici quelques points négatifs du langage de programmation C :
- Les chaînes de caractères : Certainement un des choix les plus mauvais et douteux du langage de programmation C fut d'utiliser un caractère de terminaison ASCII 0. Ainsi, les chaînes de caractères en langage de programmation C sont gérées par une terminaison avec un code ASCII 0. Par conséquent, on sacrifie un caractère pour indiquer la fin. Contrairement à d'autres langages de programmation comme le langage de programmation Pascal par exemple, lequel il utilise 1, 2 ou 4 octets au début de la chaîne de caractères pour indiquer sa longueur, le langage de programmation C doit toujours utiliser une fonction strlen pour déterminer la fin de la chaîne de caractères et calculer sa longueur. Le microprocesseur se retrouvera donc a utiliser entre 15 et 20 instructions assembleurs de plus pour effectuer le même traitement que l'autre méthode technique qu'utilise le Pascal. De plus, le traitement du C ne sera pas instantané, puisqu'il devra consulter chacune des cellules mémoires pour déterminer la fin de la chaîne de caractères. Bien que les compilateurs C soient généralement beaucoup plus rapides, ils sont sérieusement handicapés par ce très mauvais choix au niveau des chaînes de caractères. De plus, dès qu'on a un bloc de données avec un code ASCII 0 comme potentiel, on devrait systématiquement rajouter du code pour gérer cette exception. On aura rapidement un programme allant augmenter la quantité de code nécessaire dès qu'il manipulera des chaînes de caractères. Le langage de programmation C est sans nul doute le pire des langages de programmation pour gérer les chaînes de caractères et démontre nettement un manque de vision à ce niveau.
Code source
Le code source C est contient le corps des routines du programme et les fonctions secondaires. Le fichier principale contiendra une fonction ayant pour nom «main». Cette fonction peut aussi bien être situé au début, au milieu ou à la fin de n'importe quel fichier. Les définitions, bien qu'autorisé dans le fichier .c devrait se trouver dans les fichiers avec une extension .h de l'utilisateur et non pas dans le code source C (extension .c) dans la mesure du possible.
Objet
Les objets sont des fichiers généralement avec l'extension .OBJ, contenant le code compiler de chacune des routines contenu dans le code source C compilé. Les liaisons de saut pour les sauts assembleurs ne se pas effectuer dans cette partie. Le code compilé ne peut donc pas être exécuté directement. Le format de se fichier varie en fonction du fabricant, toutefois, de nombreux compilateurs tentent de rester compatible avec le format proposé par Intel avec son format .OBJ pour les plateformes DOS, OS/2 et Windows.
Bibliothèque
Une bibliothèque est généralement un fichier avec l'extension .LIB ou .A, contenant des fichiers d'objets (.OBJ) et parfois les entêtes de définitions. Elle est utilisé pour regrouper un ensemble de fonctions d'une même catégorie. Ainsi, beaucoup de compilateur utiliseront une bibliothèque par plate-forme visé, d'autres pour des parties DLL spécifiques,...
Compilation
La compilation est l'étape permettant de convertir le code source C (.c) et les fichiers d'entête (.h) en pseudo-code assembleur d'objet. Lorsqu'il aura compilé, il aura produit, soit un fichier d'objet ou une bibliothèque. Il n'est pas possible à ce point lancer un programme exécutable.
Liaison (Linker)
La liaison est l'étape où il prend le code situé dans les objets et les bibliothèques, qu'il ajuste les sauts de branchement assembleur au bonne adresse, construit un entête de fichier exécutable et copie le code exécutable dans un fichier. La liaison peut également inclure des fichiers d'objets externes créer par d'autres compilateur C ou des compilateurs de langages Assembleur et même d'autres langages de programmation.
Exécutable
L'exécutable est le résultat fini d'un fichier compilé. Il n'est plus possible de modifier le fichier à cette étape. Dépendamment du système d'exploitation ou de la destination de l'exécutable, il pourra s'agir d'un binaire pure, d'une fichier de type exécutable (extension .exe ou .o) ou d'une image mémoire.
Remarques
- Électronique : Si vous souhaitez effectuer la programmation des puces ASIC en utilisant une syntaxe proche du langage de programmation C, vous devriez envisager d'utiliser le SystemC.
- Vitesse : Bien que les compilateur C génère du code très rapide, il n'est pas toujours le plus rapide, en effet, le Prolog, dans son approche différente du langage et ses concepts d'intelligence artificielle (IA), c'est révélé beaucoup plus rapide que les programmes écrit en C durant les années 1980 pour les problèmes déterministes traditionnels. Ainsi, la grande majorité des compilateurs de C utilisent 2 passages pour générer un code rapide, toutefois, les compilateurs Prolog effectuent des multiples passages. Depuis la fin des années 1990, les compilateurs C sont redevenus plus rapide que les programmes écrit en Prolog. Mais, le plus rapide demeurera toujours le langage de programmation Assembleur, mais le temps de développement est beaucoup long.
Liste des normes
Les versions du langage de programmation C sont basés sur différentes normes et non pas ses différentes marques. Voici les normes majeurs du langage de programmation C :
Normes | Année |
---|---|
C | 1972 |
K&R C | 1978 |
C POSIX | 1988 |
ANSI C | 1989 |
ANSI X3.159-1989 | 1989 |
C89 | 1989 |
C90 | 1990 |
ISO/IEC 9899:1990 | 1990 |
C95 | 1995 |
ISO/IEC 9899:1990/AMD 1:1995 | 1995 |
C99 | 1999 |
C11 | 2011 |
C18 | 2018 |