Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux
On se lasse de tout, sauf de comprendre.
Attribué à Virgile.
29 juillet 2010 : Création de cette page sur l'ancien site de Païou.
04 septembre : correction des liens
Pour : tout visiteur.
Le but de cette page n'est pas de vous apprendre à programmer un microprocesseur.
Elle veut essayer de vous montrer, avec des mots simples, à quoi correspond un programme et ce qu'est un langage de programmation.
Un programme est un ensemble d'instructions qui disent à un ordinateur ce qu'il doit faire.
Le langage humain est trop ambigu pour être utilisé par un ordinateur. Il a fallu créer de nouveaux langages pour pouvoir échanger fiablement avec la machine.
Le coeur de l'ordinateur est le microprocesseur.
Un microprocesseur possède notamment des registres qui sont des petites mémoires. Les concepteurs ont prévu que le microprocesseur puisse effectuer un certain nombre d'opérations, sur les registres, entre les registres, entre registres et mémoire vive. Il existe bien sûr d'autres types d'opérations encore.
Pour réaliser ces opérations, les concepteurs ont prévu un certain jeu d'instructions, spécifique à ce processeur.
Pour dialoguer avec lui, il faut donc le faire avec ses instructions, puisque c'est ce qu'il comprend.
Les architectures courantes sont : x86, x86-64, SPARC, PPC, IA-64 ...
Pour fonctionner, l'ordinateur a besoin d'un certain nombre de programmes de base : le système d'exploitation.
Les systèmes courants sont : Linux, Unix, Windows, Mac OS X
C'est la combinaison d'une machine et d'un système d'exploitation.
Un programme informatique doit tenir compte à la fois de l'architecture du processeur, mais également du système d'exploitation avec lequel doit tourner ce programme. Il est conçu pour fonctionner sur une plate-forme bien définie, par exemple pour un processeur de la famille x86 avec un système d'exploitation Linux.
Jusqu'ici, notre plateforme était bien réelle : machine et système d'exploitation.
Voici un extrait du site de vmware : Une machine virtuelle se comporte exactement comme une ordinateur physique et contient ses propres CPU, mémoire RAM, disque dur et cartes d’interface réseau virtuels (c’est-à-dire que tout est basé sur du logiciel).
C'est un conteneur totalement isolé des autres logiciels, capable d’exécuter son propre système d’exploitation et ses applications, à l’instar d’un ordinateur physique.
Un système d’exploitation est incapable de faire la différence entre une machine virtuelle et une machine physique, il en est de même pour les applications ou d’autres ordinateurs attachés à un réseau.
Une machine virtuelle est entièrement composée de logiciels et elle ne contient aucun composant matériel quel qu’il soit.
Un premier intérêt de la machine virtuelle est qu'il devient possible d'installer plusieurs systèmes d'exploitation différents sur une même machine physique. Cela permet de tester un autre système ou une autre version du même système (par exemple pour déboguer).
Vous avez vu qu'un microprocesseur possède un certain jeu d'instructions et que ce jeu est spécifique au type ou à la famille du microprocesseur.
Les concepteurs ont prévus, pour chaque instruction du microprocesseur, un code qui lui dit ce qui doit être fait. Cet ensemble de codes s'appelle le langage machine. Il est directement compréhensible par la machine.
Par contre, il est incompréhensible par l'être humain. Exemple :
33C9permet de mettre à zéro le registre CX. On ne peut pas le deviner.
Et encore on a, ici, adopté une écriture hexadécimale pour simplifier l'écriture de l'instruction.
Quelques éléments sur le binaire, l'hexadécimal, le microprocesseur
Vous avez vu que le langage machine est plutôt indigeste pour nous. Heureusement, il existe une représentation textuelle équivalente, l'assembleur (survolez l'image de droite pour l'agrandir). L'assembleur est donc également spécifique à un type de microprocesseur.
Chaque ligne d'assembleur correspond exactement à une instruction en langage machine. L'exemple précédent devient :
XOR CX,CXelle fait un OU EXCLUSIF sur le registre lui-même, ce qui revient à tout mettre à zéro.
Un programme, également nommé assembleur, permet de convertir ce texte en langage machine.
Quelques éléments sur la programmation en assembleur
Bien que déjà plus lisible par les humains, l'assembleur n'est cependant pas très pratique.
Il a fallu concevoir des langages plus évolués. Le programme source consiste en une simple succession d'instructions, ligne après ligne, dans un langage assez facilement compréhensible. Il n'est plus question de cases mémoire ou de registres de processeur, mais de variables, de tests, de fonctions de calcul, d'affichage à l'écran ...
Ici, une ligne de programme se traduit généralement par plusieurs instructions machines.
On y distingue trois grandes familles.
Lors de l'écriture du programme, le programmeur écrit son programme source ou script :
Lors de l'exécution du programme :
Quelques exemples de langages : scripts (bash, ash ...), Basic, HTML, PHP, Perl, Python, Ruby
Quelques éléments sur les commandes et les scripts bash
Lors de l'écriture du programme, le programmeur écrit son programme source, puis le compile :
Lors de l'exécution du programme :
Quelques exemples de langages : C, C++, Cobol, Fortran, Pascal ...
Lors de l'écriture du programme, le programmeur écrit son programme source, puis le compile pour une machine fictive (machine virtuelle), tout à fait indépendante de toute architecture de machine réelle :
Lors de l'exécution du programme :
Quelques exemples de langages : Java, J-Eiffel, Talks2, Forth, Lisp ...