Le 05/01/2016 11:21, Pierre TOUZEAU a écrit :
Bon je m'arrête là, je suis déjà trop compliqué sans doute ;-)
puisqu'on semble reprendre les bases, je me permet d'intervenir.
Un programme est composé de deux parties: une suite d'instructions
destinées à l'ordinateur et une autre suite d'instructions destinées à
l'utilisateur, c'est une interface entre l'homme et la machine.
La partie communication avec l'homme est souvent la plus longue à mettre
au point et la moins "mécanisable", c'est là que les langages de haut
niveau (C, Pascal...) sont le plus utile.
Mais ces parties sont exécutées à la vitesse de l'homme: très lentement!
Aucun besoin d'optimisation en terme de vitesse, là.
Les instructions destinées à l'ordinateur sont essentiellement la
traduction en binaire d'équations mathématiques, si les équations sont
connues, leur programmation n'est généralement pas difficile, il existe
même des bibliothèques ("libraries") qui font le travail. L'optimisation
est déjà faite.
Si on doit programmer une bibliothèque soi-même, On va se retrouver
devant deux types d'éléments de programmes: les éléments utilisés une
fois, qu'on peut optimiser mais le gain est minime, et ceux utilisés
souvent, "les boucles" dans lesquels un gain, même minime, devient par
la répétition très important.
Ce sont ces boucles qu'il faut optimiser.
Un compilateur se contente d'assembler les différents morceaux pour
qu'ils aillent bien ensemble. Il peut compter le nombre d'usages de
chaque partie pour voir s'il est utile de l'optimiser. Surtout tous les
ordinateurs ne sont pas faits pareil, n'ont pas la même mémoire, le même
processeur.
Un compilateur peut créer un code optimisé pour chaque variante de
processeur, chaque variante de matériel.
Programmer en langage machine permet d'optimiser le code pour un
matériel particulier, pas pour un grand nombre de matériels différents.
reste qu'un compilateur ne sait pas à quoi sert le programme. Par
exemple, si on fait un programme de contrôle de température, les
paramètres seront différents selon qu'il s'agit d'un four ou d'un frigo.
Si vous écrivez une application nouvelle, il vous faudra donc sans doute
optimiser à la main certains aspects, ceux qui sont inconnus du
compilateur...
j'ai beaucoup simplifié, les spécialistes m'excuseront :-)
jdd