Initiation au langage C


précédentsommairesuivant

I. Introduction

I-A. Historique

L'histoire du langage C est intimement liée à celle du système d'exploitation UNIX. En 1969, Ken Thompson, qui travaillait pour Bell Laboratories, mit au point sur un DEC PDP-7 un système d'exploitation semblable à Multics mais plus simple et plus modeste. Ce système reçut par la suite le nom d'Unics (Uniplexed Information and Computing System) qui ne tarda pas à être définitivement changé en UNIX.

A l'époque, le seul langage vraiment adapté à l'écritute de systèmes d'exploitation était le langage d'assemblage. Ken Thompson développa alors un langage de plus haut niveau (c'est-à-dire plus proche du langage humain), le langage B (dont le nom provient de BCPL, un sous-ensemble du langage CPL, lui-même dérivé de l'Algol, un langage qui fut populaire à l'époque), pour faciliter l'écriture d'UNIX. C'était un langage faiblement typé (un langage non typé, par opposition à un langage typé, est un langage qui manipule les objets sous leur forme binaire, sans notion de type (caractère, entier, réel, ...)) et trop dépendant du PDP-7 pour permettre de porter UNIX sur d'autres machines. Alors Denis Ritchie et Brian Kernighan, de Bell Laboratories également, améliorèrent le langage B pour donner naissance au langage C. En 1973, UNIX fut réécrit entièrement en langage C. Pendant 5 ans, le langage C fut limité à l'usage interne de Bell jusqu'au jour ou Brian Kernighan et Denis Ritchie publièrent une première définition du langage dans un ouvrage intitulé The C Programming Language. Ce fut le début d'une révolution dans le monde de l'informatique.

Grâce à sa puissance, le langage C devint rapidement très populaire et en 1983, l'ANSI (American National Standards Institute) décida de le normaliser en ajoutant également quelques modifications et améliorations, ce qui donna naissance en 1989 au langage tel que nous le connaissons aujourd'hui. L'année suivante, le langage C a été adopté par l'ISO (International Organization for Standardization) et actuellement, par l'ISO et l'IEC (International Electrotechnical Commission), et a connu au fil du temps certaines révisions (dans l'immense majorité des cas toujours compatibles avec les versions antérieures) dont les plus importantes sont celles de 1990 (adoption par l'ISO), de 1995 (amélioration du support du développement de programmes internationnaux) et de 1999 (ajout d'un nombre important de nouvelles fonctionnalités). La version de 1999 est cependant actuellement encore peu diffusée c'est pourquoi dans ce document, nous nous placerons dans l'apprentissage des versions de 1990 et 1995.

I-B. Caractéristiques du langage C

I-B-1. Universalité

Langage de programmation par excellence, le C n'est pas confiné à un domaine particulier d'applications. En effet, le C est utilisé dans l'écriture

  • de systèmes d'exploitations (comme Windows, UNIX et Linux) ou de machines virtuelles (JVMs, Runtimes et Frameworks .NET, logiciels de virtualisation, etc.)
  • de logiciels de calcul scientifique, de modélisation mathématique ou de CFAO (Matlab, R, Labview, Scilab, etc.)
  • de bases de données (MySQL, Oracle, etc.)
  • d'applications en réseau (applications intranet, internet, etc.)
  • de jeux vidéo (notamment avec OpenGL ou la SDL et/ou les différents moteurs (de jeu, physique ou 3D) associés))
  • d'assembleurs, compilateurs, débogueurs, interpréteurs, de logiciels utilitaires et dans bien d'autres domaines encore.

Oui, le C permet tout simplement de tout faire, ce qui lui a valu, à juste titre, l'appelation courante "the God's programming language" (le langage de programmation de Dieu). A cause de son caractère proche du langage de la machine, le C est cependant peu productif, ce qui signifie qu'il faut souvent écrire beaucoup pour faire peu. C'est donc le prix à payer pour l'utilisation de ce langage surpuissant !

I-B-2. Concision, souplesse

C'est un langage concis, très expressif, et les programmes écrits dans ce langage sont très compacts grâce à un jeu d'opérateurs puissant.

I-B-3. Puissance

Le C est un langage de haut niveau mais qui permet d'effectuer facilement des opérations de bas niveau et d'accéder aux fonctionnalités du système, ce qui est la plupart du temps impossible ou difficile à réaliser dans les autres langages de haut niveau. C'est d'ailleurs ce qui fait l'originalité du C, et aussi la raison pour laquelle il est autant utilisé dans les domaines où la performance est cruciale comme la programmation système, le calcul numérique ou encore l'informatique embarquée.

I-B-4. Portabilité

C'est un langage qui ne dépend d'aucune plateforme matérielle ou logicielle, c'est-à-dire qui est entièrement portable. De plus, de par sa simplicité, écrire un compilateur C pour un processeur donné n'est pas beaucoup plus compliqué que d'écrire un assembleur pour ce même processeur. Ainsi, là où l'on dispose d'un assembleur pour programmer, on dispose aussi généralement d'un compilateur C, d'où l'on dit également que le C est un "assembleur portable".

I-B-5. Omniprésence

La popularité du langage mais surtout l'élégance des programmes écrits en C est telle que son style et sa syntaxe ont influencé de nombreux langages :

  • C++ et Objective C sont directement descendus du C (on les considère souvent comme des extensions du C)
  • C++ a influencé Java
  • Java a influencé JavaScript
  • PHP est un mélange de C et de langage de shell-scripting sous Linux
  • C# est principalement un mix de C++ et de Java, deux langages de style C, avec quelques influences fonctionnelles d'autres langages comme Delphi et Visual Basic (le # de C# vient-il dit-on de deux "++" superposés)
  • Et on risque d'y passer la journée ...


Connaître le C est donc très clairement un atout majeur pour quiconque désire apprendre un de ces langages.

I-C. A propos de ce document

Ce document contient des cours et des exercices. Chaque fois que vous tombez sur des exercices, traitez-les avant de passer au chapitre ou au paragraphe suivant.

I-D. Remerciements

J'adresse un remerciement tout particulier à JagV12 pour sa relecture très attentive de cet article ainsi qu'à Franck.h pour ses conseils et son soutien.


précédentsommairesuivant

  

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2008 Melem. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.