Environnement d'exécution

Un article de Wikipédia, l'encyclopédie libre.
(Redirigé depuis Moteur d'exécution)
Aller à : navigation, rechercher

Est appelé environnement d'exécution ou runtime le logiciel responsable de l'exécution des programmes écrits dans un langage de programmation donné[1]. Un runtime offre des services d'exécution de programmes[2] tels que les entrées-sorties, l'arrêt des processus, l'utilisation des services du système d'exploitation, le traitement des erreurs de calcul, la génération d'événements, l'utilisation de services offerts dans un autre langage de programmation, le débogage, le profilage et le ramasse-miette[3].

Un runtime peut être vu comme une machine virtuelle: de la même manière qu'un code natif est exécuté par le processeur, un code objet est exécuté par le runtime. Le runtime sert alors à exécuter du code objet en mettant le code natif ad hoc à disposition du processeur pour exécution[1].

La définition est informelle[1], par exemple le livre IWarp anatomy définit un runtime comme suit: « nous définissons le runtime comme étant le composant logiciel responsable de l'exécution des programmes sur les systèmes iWarp, il facilite l'exécution des programmes en cachant les détails bassement matériels de la machine. »[4].

Technique[modifier | modifier le code]

Un runtime met en oeuvre un langage de programmation en permettant l'exécution des programmes écrits dans ce langage[1]. Il offre des services tels que les entrées-sorties, l'arrêt des processus, l'utilisation des services du système d'exploitation, le traitement des erreurs de calcul, la génération d'événements, l'utilisation de services offerts dans un autre langage de programmation, le débogage, le profilage et le ramasse-miette[3].

langages interprétés

le runtime c'est l'interpréteur: il interprète le code source, manipule les variables, réserve de la mémoire et prends en charge les erreurs d'exécution.

langages compilés

Les limites du runtime sont moins nettes: le code est exécuté directement par le processeur, cependant ce code peut parfois avoir besoin de certaines fonctionnalités mises à disposition par le runtime; par exemple la création d'objets, le contrôle des types et le ramasse-miette des langages de programmation orientés objet[1].

Un runtime peut être vu comme une machine virtuelle: de la même manière qu'un code natif est exécuté par le processeur, un code objet est exécuté par le runtime. Le runtime sert alors à exécuter du code objet en mettant du code natif à disposition du processeur pour exécution[1].

Un des premiers langages de programmation fonctionnant avec un runtime a été PL/1 en 1972. Lors de la compilation du programme, les instructions simples en langage PL/1 étaient traduites en les instructions correspondantes en langage machine, tandis que les instructions complexes étaient traduites en des utilisation des fonctions du runtime. Cette construction permettait de diminuer la taille du programme en langage machine[5].

Exemples[modifier | modifier le code]

Traditionnellement différents langages de programmation utilisent différents runtimes, par exemple la bibliothèque standard de C, l'environnement d'exécution Java, et le Common Language Runtime[2]. Le runtime peut être accompagné d'une bibliothèque standard à disposition du programmeur[3]. Le runtime met en oeuvre les fonctionnalités élémentaires du langage, tandis que la bibliothèque standard est typiquement écrite dans le langage lui-même[3].

La bibliothèque standard de C est un runtime normalisé par ANSI et largement inspiré du système d'exploitation Unix. Avant la normalisation chaque compilateur du langage C offrait sa propre bibliothèque de fonctions, et les programmes écrits pour un compilateur donné ne pouvait pas être compilé avec un autre compilateur, bien qu'il soit dans le même langage de programmation[6].

Le Common Language Runtime contrôle l'exécution des programmes dans différents langages de programmation et fournit des services. Les services sont exposés de manière différente selon le langage de programmation concerné, cependant la palette de fonctions est la même dans tout les langages et ils sont mis en oeuvre pas le même logiciel: le Common Language Runtime accompagné d'une bibliothèques de classes de plus de 2500 modules[2].

Dans les langages de programmation Lisp, Smalltalk, ML et Prolog, l'essentiel des fonctionalités du langage sont offertes par le runtime accompagné d'une bibliothèque standard à disposition du programmeur[3].

Notes et références[modifier | modifier le code]

  1. a, b, c, d, e et f (en)Christoph Zimmermann,Advances in Object-Oriented Metalevel Architectures and Reflection,CRC Press - 1996,(ISBN 9780849326639)
  2. a, b et c (en)Yevgeny Menaker - Michael Saltzman et Robert J. Oberg,Programming Perl in the .NET Environment,Prentice Hall Professional - 2002, (ISBN 9780130652065)
  3. a, b, c, d et e (en)« A runtime system »
  4. (en)Thomas Gross, IWarp: Anatomy of a Parallel Computing System,MIT Press - 1998,(ISBN 9780262071833)
  5. (en)Morris Rubinoff,ADVANCES IN COMPUTERS, Volume 12,Academic Press - 1972,(ISBN 9780080566443)
  6. (en)Peter A. Darnell,C A Software Engineering Approach: A Software Engineering Approach,Springer Science & Business Media - 1996,(ISBN 9780387946757)

Voir aussi[modifier | modifier le code]