Qu’est-ce qu’un langage de script ?

Dans les langages de programmation, les langages de script constituent une famille appréciée et permettent souvent de répondre aux exigences posées avec rapidité. À l’origine, les langages de script étaient plutôt utilisés pour les applications de niche ou servaient de langage de « collage » pour rassembler des systèmes existants. Avec l’arrivée du World Wide Web, une série de langages de script s’est établie pour l’utilisation des serveurs Web. Les langages de script simplifiant le traitement du texte, ils sont parfaits pour créer dynamiquement des pages HTML.

À l’heure actuelle, les langages de script représentent, d’après l’index TIOBE env. un tiers des langages de programmation les plus utilisés dans le monde. Côté client, JavaScript est pratiquement le seul langage de script courant dans les navigateurs. Côté serveur, les langages PHP, Python, Ruby et Perl sont toutefois également des langages de script.

Quelle est la différence entre un langage de programmation et un langage de script ?

Pour comprendre ce qui caractérise un langage de script, il est utile de connaître les différences entre ces langages et les langages de programmation comme C, C++ et Java. Dans ces langages, le programmeur écrit un code source qui est ensuite converti en code binaire lors d’une étape séparée. Deux fichiers sont par conséquent utilisés : le fichier avec le code source, dans lequel le programmeur travaille et un fichier binaire créé à partir du premier qui est exécutable directement sur l’ordinateur. Un programme spécial appelé compilateur joue le rôle de traducteur entre les fichiers.

La conversion du code source en code binaire est appelée « compilation ». Pendant la compilation, la plausibilité du code source est contrôlée : toutes les variables utilisées ont-elles été définies ? Les types d’arguments de fonctionnalités correspondent-ils à la définition des fonctionnalités ? Le programmeur a-t-il oublié un caractère quelque part ? Ce contrôle est effectué pour l’ensemble du code source lors de la compilation et peut demander un peu de temps. Le code binaire résultant de la compilation est fortement optimisé afin de travailler rapidement et sans erreur lors de l’exécution dans la mesure du possible. Les langages compilés conviennent donc tout particulièrement aux tâches nécessitant une importante puissance de calcul et pour les systèmes plus grands.

Lors de l’exécution d’un programme codé dans un langage de script, aucune compilation n’est effectuée. Par conséquent, aucun fichier binaire n’est généré à partir du code source écrit par le programmeur. De ce fait, les programmes codés dans des langages de script sont généralement moins efficaces dans leur exécution. Cette perte d’efficacité ne constitue toutefois pas véritablement un inconvénient puisqu’il s’agit d’un choix délibéré : les langages de script déchargent le programmeur en chargeant davantage le processeur. C’est la raison pour laquelle les langages de script sont particulièrement adaptés aux programmes de taille petite à moyenne.

L’idée consistant à alléger le travail du programmeur tient lieu de fil rouge dans l’architecture de nombreux langages de script. Ces derniers renoncent donc à la gestion manuelle de la mémoire, une technologie particulièrement efficace mais propice aux erreurs. Par ailleurs, dans la plupart des langages de script, il n’est pas nécessaire d’indiquer le type de variable. Les programmes codés dans des langages de script n’étant pas compilés, il n’est pas non plus nécessaire de disposer d’une fonction main(). Les langages de script permettent d’écrire un logiciel de façon plus directe et avec moins de code source. Comparez les exemples suivants. Les deux programmes présentés fournissent le même résultat :

// "Bonjour tout le monde" Exemple dans Java
class Bonjourtoutlemonde {
    static public void main( String args[] ) {
        System.out.println( "Bonjour tout le monde !" );
    }
}
# "Bonjour tout le monde" Exemple dans Python
print "Bonjour tout le monde !"

Caractéristiques des langages de script

Comme évoqué au début de cet article, les programmes codés avec des langages de script ne sont pas convertis en code binaire par un compilateur avant leur exécution. Un programme appelé interpréteur est utilisé à la place du compilateur. Vous pouvez vous représenter les choses de la façon suivante : l’interpréteur lit le code source de haut en bas, puis génère et exécute dans ce cadre le code binaire partie après partie.

Si les termes « code source », « code binaire » et « interpréteur » vous semblent encore flous, vous pouvez vous référer à l’exemple suivant : représentez-vous le code source comme des notes de musique jouées par un orchestre. Dans cet exemple, le code binaire correspond à une version du morceau enregistrée sur un CD. Le morceau sur le CD peut être lu sur n’importe quel lecteur CD, mais ne peut plus être modifié. L’interpréteur correspond à l’orchestre qui joue le morceau en direct.

Programmer de façon interactive avec des langages de script via REPL

Dans de nombreux langages de script, il est possible d’exécuter l’interpréteur de façon interactive. Ce mode est appelé REPL, de l’anglais « read-eval-print-loop », qui peut se traduire approximativement par « lire-exécuter-restituer-répéter ». Le programmeur transmet le code source à l’interpréteur qui le lit et l’exécute. L’interpréteur affiche ensuite le résultat (restituer) et attend l’entrée suivante (répéter).

Si une erreur est restituée dans le mode REPL, le programmeur peut afficher les contenus des variables afin de localiser l’erreur. Il est par ailleurs possible d’écraser la valeur d’une variable et de tester des parties du code source avec la nouvelle valeur. Cette méthode permet de composer un programme à partir de sections plus petites ayant été testées individuellement. Le développement et la résolution des erreurs se déroulent en une seule fois. De cette façon, il est particulièrement simple d’écrire rapidement un programme fonctionnel.

Définir des structures de données complexes comme littéraux dans les langages de script

Les langages de script ont pour but de faciliter le travail du programmeur. Pour ce faire, ces langages fournissent aux programmeurs une série d’outils. Ces outils comprennent des structures de données complexes comme les chaînes de caractères, les listes, les champs et les objets. Dans les langages de script, ces structures peuvent être écrites sous forme de « littéraux ». Ils permettent d’afficher directement des structures de données complexes au lieu de les construire à partir de plusieurs commandes. Le programmeur peut exprimer les structures de données nécessaires simplement ce qui facilite son travail.

// Exemple pour un littéral d’objet en JavaScript
client = {
    'prénom': "Claude",
    'nom': "Dupond",
    'âge': 40,
    'aktiv': true,
    'adresse': {
        'privée': {},
        'société': {},
    },
}
# Exemple de génération HTML pour un littéral de modèle en JavaScript
titre_page= 'Qu’est-ce qu'un langage de script ?’
h1 = '<h1>${titre_page}</h1>'
# renvoie "<h1>Qu’est-ce qu’un langage de script ?</h1>"

Typage dynamique dans les langages de script

Dans les exemples de code ci-dessus, vous avez peut-être remarqué qu’aucun type comme « String », « int » ou « bool » n’est indiqué. Pour l’exécution, le programme a toutefois besoin des informations sur le type. Par conséquent, d’où proviennent-elles ?

Les langages de script ont généralement recours au « typage dynamique » : l’interpréteur déduit le type d’une variable à partir du contexte. Dans les langages de script, le type d’une variable n’est pas fixe et peut changer en fonction du contexte. Un exemple :

# Exemple de typage dynamique en Python
# un nom affiché sous forme de liste de prénom, nom
name = ['Claude', 'Dupond']
# le type de variable "name" est "list"
type(name)
# seul le prénom est ensuite nécessaire
name = name[0]
# le type de la variable "name" est "str"
type(name)

Utilisation des langages de script

Les langages de script sont catégorisés en fonction de l’utilisation et du domaine d’utilisation. Certains langages de script sont utilisés dans l’invite de commande pour résumer des séquences de commandes et permettent ainsi une automatisation. Bash et PowerShell font partie de ces langages.

VBA et AppleScript assument une fonction similaire puisqu’ils permettent d’automatiser des processus au niveau de l’application.

Sur un serveur Web, PHP, Perl, Ruby, Python et JavaScript sont utilisés pour réaliser des sites Internet et des applications Web dynamiques. Par ailleurs, JavaScript est le seul langage de script des navigateurs Web. Conçu initialement pour la programmation d’éléments interactifs, JavaScript est aujourd’hui utilisé pour écrire des applications Web entières.

Les langages de script interviennent également en statistique et dans le domaine scientifique principalement avec les langages R et Python.