next up previous contents index
Next: Le choix du langage Up: Du fonctionnement et de Previous: Architecture et fonctionnement de   Contents   Index

Du programme-source au module exécutable

L'utilisation de certains langages interprétés pendant l'enseignement de l'informatiques aux étudiants en mathématiques durant les premier et second cycles tendC.2à faire occulter certains aspects essentiels de la programmation. Parfois, certains programmes écrits par nos étudiants à la fin du second cycle, quoique mathématiquement corrects et même parfois irréprochables, sont des monuments d'inefficacité algorithmique.

Dans le schéma suivant on esquisse les différentes étapes subies par un programme pour créer un module exécutable.

unit=5mm (22,6) (5mm,5mm) (0,1)(5,5) (10,1)(14,5) (18,1)(22,5) (2.5,4)aProgramme (2.5,2)bsource (12,4)cModule (12,2)dobjet (20,4)eModule (20,2)fexécutable (7.5,3.5)gCompilateur (16,3.8)hÉditeur (16,2.2)ides liens ->(5,3)(10,3) ->(14,3)(18,3)

Tout programme-source, écrit dans un langage de haut niveau (C, PASCAL, FORTRAN), portable d'un ordinateur à un autre, doit être compilé, c'est-à-dire traduit par un programme (le compilateur) en une suite des instructions élémentaires -- très semblables aux instructions du langage assembleur -- que l'on appelle module objet. À ce niveau, les erreurs de syntaxe éventuels sont détectées et signalées par le compilateur.

Le module objet, écrit en termes d'opérations élémentaires pour un processeur donné, n'est plus portable d'un ordinateur à un autre ; il dépend en effet du jeu d'instructions de chaque processeur spécifique. En outre, ce module n'est pas encore exécutable ; ce programme sait quelles opérations faut-il faire sur les variables et quelles procédures doit-il appeler mais ignore les adresses précises où logent ces variables et commencent ces procédures -- il n'a pas encore résolu les références externes.

La résolution des références externes se fait à l'aide d'un autre programme, appelé éditeur des liens. Ce programme fournit les adresses-mémoire physiques de toutes les variables et toutes les procédures pour créer un module exécutable. À ce niveau sont détectées les omissions de définition des variables et des procédures ou les dépassements des tableaux et ces erreurs sont signalées.

Heureusement, sur chaque ordinateur existent des macro-commandes qui permettent d'effectuer les tâches de compilation, d'édition des liens et de chargement des bibliothèques de programmes sans avoir à appeler tous ces programmes. Si on évoque ici leur existence et leur fonction c'est pour rendre l'utilisateur attentif aux répercussions que peuvent avoir sur le module exécutable des modifications mathématiquement anodines sur le programme-source.

Bien garder à l'esprit que chaque duplication gratuite d'une variable, chaque appel non-justifié à une procédure, chaque stockage intermédiaire inutile entraîne, par la multiplication des adresses à manipuler, un ralentissement du programme exécutable. Les programmes de simulation Monte Carlo réalistes comportent parfois plusieurs milliards d'itérations ; quelques microsecondes perdues à chaque itération se mesurent en heures de temps de calcul final ! Si, par exemple, ce calcul simule l'évolution des turbulences atmosphériques, on bascule de la prédiction météorologique précieuse à une simulation, extrêmement coûteuse et totalement inutile car postérieure à l'observation primaire.


next up previous contents index
Next: Le choix du langage Up: Du fonctionnement et de Previous: Architecture et fonctionnement de   Contents   Index
Dimitri Petritis 2003-07-03