Les programmes informatiques: de la machine à l'humain
Les langages d'ordinateurs
Un programme informatique est une liste d'instruction destinée à un ordinateur et dont le but est d'accomplir une tâche donnée.
Bah, dans ce cours, il y a aussi plein de listes d'instructions. Chaque fois qu'il y a le logo
, on a droit à une liste d'instructions. Et ce ne sont pas des programmes, que je sache.
Et pourtant, en quelques sortes, on pourrait dire qu'il s'agit de programmes. A la différence que ceux-ci sont rédigés en français et destinés à des humains.
L'ordinateur est donc capable d'exécuter ces instructions à ma place? Bonne nouvelle! Enfin un peu de repos.
Malheureusement, il y a un petit détail qui bloque tout: l'ordinateur est incapable de comprendre une liste d'instructions rédigées en français courant.
Puisque les ordinateurs ne comprennent pas des listes d'instructions en français, voyons comment on peut se faire comprendre d'eux.
Le problème est un peu technique.
Le langage machine
Les seules informations que puisse stocker un ordinateur sont des séries de 0 et de 1. Les données qu'il peut traiter doivent donc être codées sous cette forme.
00110110 11010101 10100011 00111001 10011000 10101100
00100101 01011010 01110110 11011010 10110111 10101101
Dans cette illustration, chaque groupe de 8 bits correspond
- à une instruction (copier, additionner, déplacer,... une donnée) ou
- à une donnée
On ne peut, bien sûr, donner que des instructions connues de l'ordinateur. Pour programmer, il faut donc savoir quelle série de bits correspond à quelle instruction. Ensuite, il faut être capable d'utiliser toutes ces instructions simples pour réaliser des tâches complexes.
Si je comprends bien, programmer, c'est apprendre à faire des choses très complexes à un idiot de première catégorie?
Ce n'est pas tout à fait faux. C'est un exercice dans lequel il faut être intelligent à la place de l'ordinateur.
Les premiers ordinateurs se programmaient dans ce langage : le langage binaire encore appelé langage machine.
L'assembleur et les langages de haut niveau
L'assembleur
Le premier langage inventé fut l'assembleur qui permet de représenter les instructions connues du processeur par des mots très courts (add, mov,...). L'avantage est qu'il ne faut plus connaître les instructions du processeur en termes de 0 et de 1.
Ah oui, superbe idée! Mais, en attendant, l'ordinateur attend toujours sa pâtée de 0 et de 1. Et rien d'autre. Ou alors, je n'ai rien compris à ce qui est indiqué un peu plus haut.
C'est bien correct, l'ordinateur attend bien des 0 et des 1. Et rien d'autre.
On va donc embaucher un traducteur. Et le traducteur sera simplement... un ordinateur.
On va donc embaucher un traducteur. Et le traducteur sera simplement... un ordinateur.
Dans ce processus, l'ordinateur est muni d'un programme appelé compilateur dont le but est de traduire les instructions écrites en assembleur vers le langage machine composé de 0 et de 1.
Quand la traduction est terminée, le code binaire obtenu peut éventuellement être enregistré, confié à un autre ordinateur et exécuté.
On ne peut qu'apprécier le progrès. Mais, pour ma part, je trouve que cela ressemble fort à du martien, ce code "assembleur". Je me demande si je ne vais pas étudier la philosophie plutôt que la programmation...
La philosophie est une belle discipline. Mais les progrès ne se sont pas arrêtés au langage assembleur. Il existe des langages "de haut niveau" qui sont un peu plus proches du langage humain.
Les langages de haut niveau
Dans les langages de haut niveau, on permet au programmeur de donner des instructions qui sont plus complexes que celles du langage machine. Du type "calcule la racine cubique du nombre qui se trouve dans telle case de la mémoire".
A nouveau, il faut disposer d'un programme capable de transformer ces instructions "complexes" en code binaire, compréhensible par l'ordinateur.
- L'avantage des langages de haut niveau pour le programmeur est que le texte des programmes est plus facile à comprendre.
- En contre-partie, il est nécessaire qu'un ordinateur intervienne pour les traduire en langage machine.
Quelques exemples
Un programme qui écrit « Salut tout le monde » à l'écran
En langage C
#include <stdio.h> #include <stdlib.h> int main(void) { printf("Salut tout le monde!\n"); return EXIT_SUCCESS; }
En langage Pascal
Program salut ; Begin Writeln ('Salut tout le monde') ; End.
En langage Python
#! /usr/bin/python print "Salut tout le monde"
D'autres exemples de langages informatique sont illustrés dans l'encyclopédie Wikipedia. Vérifie, pour quelques langages, qu'il s'agit bien d'un moyen terme entre le langage humain et un langage de machine (vois les rubriques Smalltalk, Perl, C++, Cobol,...).