Document 1 : algorithme et programme
Muhammad al-Khwarizmi (783 – 850), dans son ouvrage « le livre de l’addition et de la
soustraction d’après le calcul indien » présente la numération décimale dite « en base dix » et
les algorithmes permettant d’effectuer des opérations sur les nombres décimaux. Le mot
algorithme est d’ailleurs dérivé de son nom et le mot algèbre vient du titre d’un de ses livres.
Un algorithme est un procédé de résolution d’un problème donné. Il existe de très nombreux
algorithmes, comme celui de la division euclidienne, l’addition à retenue, les algorithmes de tri
par fusion ou par sélection, etc.
Le plus ancien algorithme connu date de près de 2000 ans av. J-C : il s’agit d’une procédure
des ingénieurs babyloniens pour calculer le volume d’une citerne. D’autres sont aujourd’hui
l’objet de recherches intenses pour les élaborer, concernant les nombres premiers notamment.
Un algorithme une fois mis au point théoriquement, il faut passer des étapes écrites « sur le
papier » à l’écriture d’un programme, dans un langage donné, qui exécutera l’algorithme sur
une machine. Il existe plusieurs milliers de langages de programmation possibles pour
programmer un algorithme donné.
Tablette babylonienne décrivant
un algorithme de calcul de
Document 2 : langages de bas niveau et langages de haut niveau.
A l’échelle élémentaire du transistor, le processeur d’un ordinateur exécute des opérations logiques élémentaires sur les
bits, du type NON, ET,OU, etc, et à l’échelle des portes logiques, des additions, des soustractions, etc. Ces opérations lui
sont commandées par des instructions également codées en binaire. Il est donc très malaisé de communiquer
directement avec un ordinateur dans son « langage ».
Il existe donc différents langages plus proches des langages humains. Les
langages qui manipulent directement la mémoire RAM, les registres et les
instructions de base du processeur sont dits « langages de bas niveau ». Le
langage de plus bas niveau est l’Assembleur. Il dispose d’un nombre limité
d’instructions simples. Ces instructions sont ensuite codées en langage machine,
on parle « d’assemblage ». Chaque famille de processeur possède son propre
assembleur.
A l’autre extrémité se trouvent les langages de haut niveau, comme les langages
Python3, JAVA, PHP, etc. Ils ressemblent fortement à l’anglais courant et sont
beaucoup plus clairs pour un programmeur, mais nécessitent une « traduction »
très complexe.
Exemples d’une instruction
En langage machine :
0101 0000 0000 0101
En assembleur :
MOVE #H’5, A
Pour passer des langages informatiques aux instructions codées en binaire, il faut un « traducteur ». Comme pour les
langues, il y a deux types de traductions : une traduction simultanée, appelée « interprétation » en informatique, et une
traduction différée, appelée « compilation ». Cette tâche est dédiée à des programmes, qui font la traduction du langage
de haut niveau vers l’assembleur.
Un interpréteur, un peu comme un traducteur lors d’une conversation entre un Anglais et un Japonais par exemple, va
transformer directement les phrases du locuteur Anglais en Japonais. En informatique, on dit qu’il transforme un « code
source » en « entrées-sorties » et affiche des « messages d’erreurs » s’il y a des mots qu’il ne comprend pas.
Cependant, l’interpréteur ne fait pas la traduction inverse : il ne transforme pas du japonais en anglais…
Un compilateur fonctionne tout autrement. A l’instar d’un traducteur qui traduit un livre en Anglais en un livre en Japonais,
le compilateur va transformer le code source, en JAVA par exemple, en un programme en Assembleur. Le compilateur
génère donc un autre programme, appelé « programme compilé », qui sera ensuite assemblé pour être exécuté.
Certains langages sont conçus pour être compilés : C, C++, JAVA par exemple.
D’autres sont interprétés : c’est le cas de Python ou de Javascript.
La différence majeure est qu’un programme compilé est « portable », c’est-à-dire qu’il peut être exécuté (en théorie)
directement sur n’importe quel ordinateur, alors qu’un programme interprété dépend de son interpréteur pour s’exécuter.
D’après www.wikipedia.org.