Les ordinateurs de première génération étaient programmés en langage machine. Les secondes avec langage d'assemblage. Les troisième et quatrième sont programmés en langage de haut niveau. Ceux de la génération quintana seront programmés avec un langage proche du langage naturel.
Donc, pour programmer un ordinateur actuel, il est nécessaire de maîtriser un langage de haut niveau (BASIC, FORTRAN, COBOL, PASCAL...) et en utilisant ce langage comme outil, nous rédigerons des programmes qui résoudront nos problèmes. Dans tous les cas, sur un ordinateur spécifique, et plus encore sur un micro, nous ne pouvons pas utiliser n'importe quel langage, mais un de ceux que notre ordinateur a mis en œuvre dans son système d'exploitation.
L'utilisation de langages de haut niveau n'exclut pas le langage machine et surtout le langage d'assemblage (assembler). Ces options, au moins l'assemblage, sont parfois très adaptées.
Le but de cet article est d’expliquer quand et pourquoi le langage d’assemblage (ASSEMBLER) et les langages supérieurs doivent être utilisés.
Les commandes exécutées ou exécutées directement par un ordinateur sont celles écrites en langage machine. Les commandes en langage machine sont connues et exécutées par l'unité de contrôle du processeur. Ces commandes adhèrent à l'ordinateur et sont relativement simples, dont chacune représente une seule opération arithmétique ou logique normale. Le langage machine est exprimé en codes binaires par 0 et 1.
Programmer en binaire est très lourd, laissant de côté les autres tracas. C'est pourquoi des langages symboliques ont été créés, d'abord des langages d'assemblage puis supérieurs.
Les programmes écrits en langage symbolique ne peuvent pas être exécutés directement. Les programmes écrits en langage machine ne peuvent être exécutés directement. Le but des traducteurs est de surmonter cette objection.
Un programme traducteur prend comme donnée le programme écrit en langage symbolique et à la suite de son exécution crée un programme équivalent écrit en langage machine. Par conséquent, le programme que nous effectuons lorsque nous le programmons en langage symbolique ne peut pas être exécuté directement, car avant de l'exécuter il faut effectuer un processus de traduction.
C'est pourquoi nous avons dit que sur un ordinateur on ne peut pas programmer dans n'importe quelle langue, parce que pour programmer dans un langage il faut son réveil. Les programmes traducteurs sont écrits en langage machine et font partie du système d'exploitation, c'est-à-dire que les utilisateurs ne doivent pas les programmer et constituent l'une des principales parties du logiciel auxiliaire incorporant l'ordinateur.
Le programme qui traduit automatiquement du langage de programmation à un autre langage que la machine comprend directement, le langage machine, s'appelle traducteur. Dans les traducteurs, on distingue différents types; d'autre part, les assembleurs, pour traduire des programmes de langage assembleur, et d'autre part, les compilateurs et les interprètes pour traduire des langages supérieurs.
Lorsque les compilateurs traduisent un programme, ils obtiennent un programme équivalent en langage machine (appelé programme objet), et sont prêts à exécuter ce programme objet (voir figure 1).
Au contraire, les interprètes ne traduisent pas entièrement le programme source, mais le lisent de manière ordonnée, le traduisent et l'exécutent. Ils ne correspondent donc pas à la deuxième phase indépendante (traduction et exécution), car les deux sont unifiées (voir figure 2).
Pour traduire un langage de haut niveau, vous pouvez utiliser un compilateur ou un interprète. Pour les cas de BASIC, PASCAL et d'autres sont généralement offerts les deux, compilateur et interprète. Quand le traducteur est très complexe et long, une mise en œuvre interprétative n'est pas commode. Et c'est que pour réaliser le programme, l'interprète doit être tout le temps à la momorité, prenant pour lui une partie trop grande. La plupart des langages complexes utilisent donc des compilateurs. C'est pourquoi il n'y a pas d'interprètes pour COBOL ou FORTRAN, au moins sur les ordinateurs normaux.
Quand il y a deux options pour revenir, lequel choisir?, Interprétation ou compilation ?
Avant de répondre à cette question, il faut analyser les deux principales différences que génère son utilisation:
Donc, pour répondre à la question précédente, il faut différencier deux cas: Pour développer un nouveau programme, l'idéal est d'utiliser un interprète, car les tests générés par les corrections peuvent être effectués immédiatement. Lorsque le programme est testé et fonctionne correctement, il est préférable d'obtenir par le compilateur un programme d'objets équivalent et d'utiliser le programme d'objets dans toutes les exécutions ultérieures, de sorte que le temps d'exécution a été inférieur, car il n'est pas nécessaire de traduire.
Par conséquent, quand il ya deux options pour un langage donné, le meilleur dans la phase de développement est d'utiliser l'interprète, mais une fois vérifié que le programme est correct. Le compilateur permet d'obtenir un programme d'objets à utiliser dans la phase d'exploitation.
Cependant, il n'est souvent pas disponible car le système d'exploitation n'en offre qu'un. Dans la plupart des micro, seuls les interprètes sont offerts pour le langage BASIC. Les programmes qui traduisent le langage d'assemblage sont appelés machihembradores (ASSEMBLY), même s'ils sont similaires aux compilateurs. Les assembleurs, étant le langage d'origine correspondant au langage d'assemblage, présentent une caractéristique particulière: leur traduction est très rapide en obtenant un seul ordre de machine de chaque source. Le processus de traduction est donc beaucoup plus simple que celui des compilateurs.
En dehors des différences intrinsèques impliquant l'utilisation d'un ou d'un autre type de traducteurs dans un certain langage, chaque langage de programmation a ses propres caractéristiques qui limitent son utilisation.
Tout d'abord, les langages de programmation pourraient être classés en deux types : le langage de haut niveau et les langages d'assemblage comparent ensuite les caractéristiques des deux types :
Pour la même raison, les programmes écrits en langage supérieur sont plus compréhensibles et lisibles que les écrits en langage d'assemblage.
Les caractéristiques des paragraphes a) et b) sont favorables à l'utilisation des toiles supérieures et celles des paragraphes c) et d) contre. En définitive, l'utilisation de langages de haut niveau génère des programmes plus universels, faciles, fiables et compréhensibles, mais avec des temps d'exécution plus lents et un plus grand accueil de mémoire.
Certaines des caractéristiques mentionnées ci-dessus seront analysées par un exemple. L'exemple présente un programme qui, une fois calculé les premiers mille nombres premiers, est rédigé 1000 avec trois langages différents : le langage d'assemblage, le FORTRAN et le PASCAL (voir figure 3). Dans les trois cas, le même algorithme et le mode de programmation (appelé programmation structurée) ont été suivis, mis en œuvre dans le miniputateur appelé VAX 750.
En suivant l'exemple, les commandes du programme écrites en langage d'assemblage ne sont pas comprises si le langage d'assemblage de l'ordinateur VAX 11 n'est pas connu. Les deux autres peuvent être comprises si FORTAN ou PASCAL est connu de n'importe quel ordinateur.
Dans le programme écrit avec un langage d'assemblage, bien que les commandes soient comprises une par une, il est très difficile de comprendre dans son intégralité et de faire quelque changement. Dans les deux autres cas, surtout dans celui de PASCAL, l'intelligibilité du programme est beaucoup plus grande.
Afin de donner une idée plus claire des caractéristiques exposées au paragraphe c) ci-dessus, les exemples ont traduit et exécuté les 3 programmes en obtenant les résultats affichés dans le tableau 1.
En analysant le Tableau 1, on constate qu'en utilisant des langages de haut niveau, on crée des programmes de plus grande réception et de moindre lenteur. Ainsi, dans ce cas, la partie mémo occupant les ordres des programmes écrits en langage de haut niveau est (environ) 50% plus grande que la partie correspondante au programme de langage d'assemblage, atteignant 100% pour les données. En ce qui concerne le temps d'exécution, le programme de langage d'assemblage est 50% plus rapide que celui de FORTRAN et 100% plus rapide que celui de PASCAL. Ces mesures sont assez généralisées, bien que dans le cas de l'adoption du memori de cet exemple il y ait trop de différences.
En général, on peut affirmer que les programmes réalisés en langage de haut niveau sont 50% plus lents et plus élevés que ceux réalisés en langage d'assemblage.
Après avoir vu et analysé les caractéristiques ci-dessus, il est temps de répondre à la question principale. Quand utiliser un langage d'assemblage et quand un niveau élevé ?
La réponse est maintenant évidente. Dans la plupart des cas, les langages de haut niveau et le langage d'assemblage ne seront utilisés que dans les deux cas suivants.
Cependant, lorsque nous utilisons un langage de haut niveau, quel langage choisir ? Ce n'est pas l'objet de cet article de répondre à cette question, mais pour la prise de décision, les trois caractéristiques suivantes seront prises en compte:
Le tableau 1 permet de comparer la vitesse d'un programme PASCAL et celle d'un programme FORTRAN. Le PASCAL est 25% plus lent, mais comme on peut le voir dans la figure 3, le programme PASCAL est mieux lu que celui de FORTRAN. En outre, le compilateur PASCAL effectue beaucoup plus de vérifications, de sorte que les erreurs sont trouvées avant de réduire le temps d'essai.
Les langages mentionnés ici sont conventionnels, c'est-à-dire impératifs; les langages fonctionnels (LISP et similaires) et explicatifs (PROLOG) qui ont actuellement un grand développement n'ont pas été mentionnés.
Les langages développés pour des applications spécifiques (statistiques GPSS, simulation SIMULA, etc.) ne sont pas non plus mentionnés.
Les critères à prendre en compte lors de la sélection du langage de programmation sont: