Français | English

La programmation

Programmer l'ordinateur consiste à disposer correctement les instructions en mémoire et aiguiller le microprocesseur sur la première instruction de notre programme. Une fois parti, notre petit robot va exécuter fidèlement ce qu'on lui a demandé de faire.

C'est donc possible de programmer un ordinateur en plaçant les bonnes combinaisons de bits en mémoire de l'ordinateur. Pour y arriver, il s'agit de connaître les combinaisons qui correspondent aux instructions du microprocesseur (données par le fabricant) et le comportement des divers périphériques ainsi que leur adresse mémoire. Mais vous aurez deviné qu'il s'agit d'une opération fastidieuse et sujette à erreurs. C'était pourtant la seule façon de programmer les premières machines, puisqu'il n'existait évidemment pas d'ordinateur à ce moment pour nous faciliter la chose.

Cette façon de programmer, dite en langage machine, n'est plus vraiment utilisée aujourd'hui. En effet, aussitôt que l'on a réussi à programmer les machines pour qu'elles réalisent des choses utiles, on s'en est servi pour aider les programmeurs à écrire leurs programmes.

Par exemple, plutôt que d'utiliser une suite de 0 et de 1 pour désigner des instructions ou des adresses, on pouvait utiliser des noms écrits dans un fichier texte. Ensuite, l'ordinateur traduisait ce texte en instructions binaires que le microprocesseur pouvait exécuter. C'est la programmation en langage assembleur. Elle est encore utilisée aujourd'hui, en particulier pour l'écriture de pilotes de périphériques (que nous verrons au chapitre sur le système d'exploitation).

Cependant, le langage assembleur demeure très près de la machine sur laquelle il est utilisé. En effet, il s'agit d'une façon commode de faire correspondre des instructions binaires à des mots plus faciles à retenir et à utiliser. Cependant, comme les différents microprocesseurs ne possèdent pas les mêmes instructions, un programme écrit en assembleur pour un microprocesseur donné ne fonctionnera pas sur une machine différente.

Pour pallier à ce problème, on a inventé les langages de programmation de haut niveau comme le Pascal et le langage C par exemple. En effet, ces langages ne font pas référence aux registres du microprocesseur ou à d'autres particularités d'une machine donnée ; ils utilisent des concepts plus généraux. Ils peuvent donc s'appliquer à des machines possédant des microprocesseurs et des périphériques physiquement différents, mais sémantiquement semblables.

Mais comme de toute façon les microprocesseurs ne comprennent que des suites binaires, ces programmes, comme ceux écrits en assembleur, doivent être traduits en suites binaires pour être exécutés par une machine donnée. C'est donc le traducteur, qui est différent d'une machine à l'autre, qui transforme le programme de haut niveau en une suite binaire appropriée à la machine sur laquelle doit s'exécuter le programme. Ce traducteur est appelé compilateur.

Alors, en utilisant le compilateur approprié, il est possible d'exécuter un même programme sur des machines ayant une architecture différente. Cependant, comme programmeur, il est important de savoir que finalement, ce ne sont que des suites binaires qui se trouvent en mémoire de l'ordinateur et c'est d'ailleurs la seule chose comprise par le microprocesseur et les périphériques.