Abonnez-vous à Universalis pour 1 euro

PROGRAMMATION

Les systèmes informatiques ont considérablement évolué, depuis les machines d'origine. On peut le mesurer à l'aune des puissances de calcul vertigineuses offertes par les ordinateurs modernes, qui s'expriment en teraflops (un teraflop représente un millier de milliards d'opérations arithmétiques par seconde). Mais il ne s'agit là que d'un aspect somme toute mineur de cette évolution. D'une part, avec les progrès en miniaturisation, des programmes ont été introduits dans de nombreux objets de la vie quotidienne, à vocation aussi bien ludique qu'utilitaire : transports, électroménager, cartes de paiement, appareils médicaux... D'autre part, ces systèmes programmés ne sont généralement pas isolés, mais fonctionnent en réseau : nous avons donc affaire à des programmes qui communiquent entre eux, voire se déplacent ou sont modifiés en cours d'exécution. Qu'y a-t-il de commun entre de tels programmes et ceux que l'on mettait au point sur les machines d'après guerre ? Beaucoup de choses en réalité. Nous allons donc commencer par passer en revue les aspects conceptuels, fondamentaux, qui caractérisent toute activité de programmation, avant d'aborder des aspects plus spécifiques des problématiques posées par les gros logiciels. La seconde partie de cet article est consacrée à l'utilisation de formalismes logiques pour concevoir des programmes sûrs et vérifier qu'ils se comportent conformément aux attentes exprimées.

Programmes informatiques

Programme, interpréteur et compilateur

Un programme est tout d'abord un texte, c'est-à-dire une séquence de symboles. Pour prendre son sens en tant que programme, ce texte doit être mis en présence d'un mécanisme capable de le décoder et de produire un certain nombre de transformations. Ce mécanisme est appelé un interpréteur et l'ensemble des symboles utilisés est appelé le vocabulaire. Toutes les séquences de symboles ne forment pas des programmes : elles doivent respecter des règles de syntaxe, et celles-ci définissent le langage de programmation utilisé. Il s'agit là d'une description très générale pouvant se décliner de manières extrêmement variées, selon la nature du texte (vocabulaire, syntaxe) et de l'interpréteur (électronique, électromécanique voire mécanique, comme dans les pianos mécaniques, chimique dans le cas des cellules vivantes, ou logiciel). Du point de vue du programmeur, il est évidemment préférable que le langage de programmation soit riche et aisé à manipuler. Mais cela complique considérablement la réalisation de l'interpréteur : le décodage même du texte en symboles structurés conformément à la syntaxe devient un problème ardu, hors de portée d'une réalisation électronique. En pratique, dans les systèmes informatiques, les interpréteurs les plus primitifs sont précisément des processeurs électroniques, dont les langages correspondants (langages machine) se réduisent à des blocs de 8, 16, 32 ou 64 bits (appelés mots machine) placés consécutivement. Il n'y a donc pas véritablement de syntaxe, en revanche les mots sont assez élaborés et une bonne part du travail effectué par le processus consiste à reconnaître leur structure, pour déterminer par exemple s'il s'agit d'une instruction arithmétique, de branchement ou d'une donnée. Un programme présenté sous cette forme est incompréhensible à un œil humain – rien ne ressemble plus à une suite de 0 et de 1 qu'une autre suite de 0 et de 1. On utilise à ce niveau un langage d'assemblage, sorte de syntaxe mnémonique codifiée en correspondance biunivoque avec le langage machine (et, comme ce dernier, propre à chaque type de processeur) : les instructions sont donc les mêmes, par exemple « ajouter 3 au contenu du mot mémoire placé à tel endroit ». Un programme[...]

La suite de cet article est accessible aux abonnés

  • Des contenus variés, complets et fiables
  • Accessible sur tous les écrans
  • Pas de publicité

Découvrez nos offres

Déjà abonné ? Se connecter

Écrit par

  • : professeur des Universités, professeur à l'université de Grenoble-I-Joseph-Fourier

Classification

Autres références

  • ALGORITHME

    • Écrit par et
    • 5 919 mots
    • 4 médias
    ...langage utilisé et de la représentation des données. Ainsi, il est possible d’écrire un programme calculant les éléments de la suite de Fibonacci dans deux langages de programmation différents, comme Python et C, tout en considérant qu’ils sont des réalisations, ou mieux, des implantations du même algorithme....
  • BREVET DU PREMIER ROBOT INDUSTRIEL

    • Écrit par
    • 290 mots

    Un inventeur indépendant, George C. De Vol, développe et brevette aux États-Unis, en 1954, un système d'enregistrement magnétique capable de commander les opérations d'une machine. Pour le vendre, il crée, avec l'ingénieur Joseph F. Engelberger, la première entreprise de robotique, Unimation Inc....

  • COBOL (common business oriented language)

    • Écrit par
    • 332 mots

    Langage de programmation de haut niveau spécialement conçu pour des applications commerciales et des applications de gestion. Cobol autorise le traitement des gros fichiers sur supports séquentiels ou sélectifs à l'aide d'un vocabulaire et d'une syntaxe censés rappeler l'anglais courant....

  • FORTRAN (FORmula TRANslation)

    • Écrit par
    • 314 mots

    Historiquement, Fortran peut être décrit comme l'un des premiers langages de programmation de haut niveau ayant permis d'écrire de manière complète et détaillée des procédures de calcul ou des algorithmes complexes sans faire appel au langage d'assemblage. Sa syntaxe proche de celle du langage...

  • Afficher les 16 références