Environnement d'exécution

{{#ifeq:||Un article de Ziki, l'encyclopédie libre.|Une page de Ziki, l'encyclopédie libre.}}

Un environnement d'exécution ou runtime est un logiciel responsable de l'exécution des programmes informatiques écrits dans un langage de programmation donné<ref name="zimmerman">{{#invoke:Langue|indicationDeLangue}} Christoph Zimmermann,Advances in Object-Oriented Metalevel Architectures and Reflection,CRC Press - 1996,Modèle:ISBN</ref>. Un runtime offre des services d'exécution de programmes<ref name="Menaker">{{#invoke:Langue|indicationDeLangue}} Yevgeny Menaker - Michael Saltzman et Robert J. Oberg,Programming Perl in the .NET Environment,Prentice Hall Professional - 2002, Modèle:ISBN</ref> 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<ref name="springer">Modèle:Lien web</ref>.

Contrairement à un logiciel de développement permettant de programmer et développer son application, un runtime ne permet que l'exécution d'un programme. 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<ref name="zimmerman"/>.

La définition est informelle<ref name="zimmerman"/>, par exemple le livre IWarp anatomy définit un runtime comme suit : Modèle:Citation<ref>{{#invoke:Langue|indicationDeLangue}} Thomas Gross, IWarp: Anatomy of a Parallel Computing System,MIT Press - 1998,Modèle:ISBN</ref>.

Technique

Un runtime met en œuvre un langage de programmation en permettant l'exécution des programmes écrits dans ce langage<ref name="zimmerman"/>. 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-miettes<ref name="springer" />.

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 utilisations des fonctions du runtime. Cette construction permettait de diminuer la taille du programme en langage machine<ref>{{#invoke:Langue|indicationDeLangue}}Morris Rubinoff,ADVANCES IN COMPUTERS, Volume 12,Academic Press - 1972,Modèle:ISBN</ref>.

Langages interprétés

Le runtime est l'interpréteur : il interprète le code source, manipule les variables, réserve de la mémoire et prend 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-miettes des langages de programmation orientés objet<ref name="zimmerman"/>.

Exemples

Traditionnellement différents langages de programmation utilisent différents runtimes, par exemple la bibliothèque standard du C, l'environnement d'exécution Java, et le Common Language Runtime<ref name="Menaker"/>. Le runtime peut être accompagné d'une bibliothèque standard à disposition du programmeur<ref name="springer" />. Le runtime met en œuvre les fonctionnalités élémentaires du langage, tandis que la bibliothèque standard est typiquement écrite dans le langage lui-même<ref name="springer" />.

La bibliothèque standard du 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<ref> {{#invoke:Langue|indicationDeLangue}}Peter A. Darnell,C A Software Engineering Approach: A Software Engineering Approach,Springer Science & Business Media - 1996,Modèle:ISBN</ref>.

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 tous les langages et ils sont mis en œuvre par le même logiciel: le Common Language Runtime accompagné d'une bibliothèques de classes de plus de 2500 modules<ref name="Menaker"/>.

Dans les langages de programmation Lisp, Smalltalk, ML et Prolog, l'essentiel des fonctionnalités du langage sont offertes par le runtime accompagné d'une bibliothèque standard à disposition du programmeur<ref name="springer" />.

Notes et références

Modèle:Références

Voir aussi

Modèle:PaletteModèle:Portail

he:סיבוכיות זמן ja:ランタイムライブラリ ko:런타임 라이브러리