next up previous contents index
Next: Un exemple Up: No Title Previous: Table des matières

Programmes et algorithmes

      

La définition rigoureuse de ce qu'est un algorithme est du ressort de l'informatique théorique, laquelle fait appel à des notions de logique mathématique ; ce n'est pas l'objet de ce cours. N'importe quel dictionnaire en donne une définition intuitive, et nous en verrons suffisamment d'exemples pour affiner cette intuition. Disons simplement que l'algorithme est la forme que revêtent les solutions que l'informatique sait donner aux problèmes qui lui sont posés.

 

Certains algorithmes sont implémentés directement par des circuits électroniques numériques : c'est le cas de ceux qui réalisent les opérations arithmétiques, et d'algorithmes beaucoup plus élaborés comme la transformée de Fourier rapide. C'est aussi le rôle de certains circuits que l'on trouve sur des objets courants (carte à puce, appareil photo, téléphone portable) dont l'usage est bien délimité et non modifiable.

Un ordinateur ne diffère guère de ces objets courants, puisqu'il contient des circuits implémentant un (unique) algorithme dont l'usage est tout aussi délimité et non modifiable : << exécuter des programmes >>. La description de cet algorithme étant le sujet d'un cours d'architecture des machines, et non de ce cours, nous ne pouvons ici qu'énoncer son caractère universel : l'algorithme implémenté par les circuits d'un ordinateur est capable de simuler n'importe quel autre algorithme. Les instructions nécessaires à cette simulation forment un programme , qu'il suffit d'exécuter.

Du modèle d'architecture conçu par von Neumann, Wilkes, Goldstine et Burks, dans les années 44-46, retenons qu'instructions et données sont représentées d'une même façon, par une suite d'éléments binaires. Les premiers ordinateurs construits suivant ce modèle furent programmés directement en binaire. On utilisa peu après des langages d'assemblage , qui forment une notation textuelle des instructions. Depuis la fin des années 50, on utilise des langages de programmation . Fortran et Lisp, qui furent parmi les premiers, existent encore ; C, plus récent, sera utilisé dans ce cours.

Au moyen de ces langages, un programme est écrit sous la forme d'un texte, c'est-à-dire d'une suite de caractères, humainement lisible, appelé programme-source , qui n'est pas directement exécutable. Une des techniques employées pour faire exécuter ce programme est de le traduire en instructions de la machine, au moyen d'un compilateur ; on obtient ainsi le programme-objet . Celui-ci peut alors être soumis à la machine pour exécution.

Le langage C a été conçu et implémenté par Dennis M. Ritchie. Le Turing Award 1983 lui était décerné, conjointement avec Ken L. Thomson pour le développement et l'implémentation du système d'exploitation Unix. Sa définition, désormais qualifiée << Kernighan-Ritchie >>, a été clarifiée et modernisée au cours de sa normalisation  ANSI, publiée en 1988, et qui a adopté certaines évolutions consacrées par l'usage. C'est cette version qui est utilisée dans ce cours : C signifiera désormais C ANSI, et par programme, on entendra programme-source en C ANSI. Il ne sera plus fait aucune mention de la version antérieure du langage C.


next up previous contents index
Next: Un exemple Up: No Title Previous: Table des matières
R.Lalement (Cermics)