EEIJ

Païou : Mandriva Linux depuis 2002. Aujourd'hui, c'est Mageia Linux


Sommaire


Conforme à XHTML 1.0 Strict Conforme à CSS!

On se lasse de tout, sauf de comprendre.
Attribué à Virgile.

Introduction à la programmation

Historique

29 juillet 2010 : Création de cette page sur l'ancien site de Païou.
04 septembre : correction des liens

Difficulté

Pour : tout visiteur.

 Introduction

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.

 Notions de base

 Programme

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.

 Architecture ou 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 ...

Haut

 Système d'exploitation

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

 Plateforme

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.

Haut

 Machine virtuelle

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).

Haut

 Langages de base

 Langage machine

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 Cliquez

 L'assembleur

assembleur

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 Cliquez

Haut

 Langages évolués

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.

Haut

 Langages interprétés

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 Cliquez

Haut

 Langages compilés

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 ...

Haut

 Langages intermédiaires

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 ...

Haut