Avec l'avènement de technologies comme celles du web, les langages de scripts connaissent un succès important. Ils permettent la mise en œuvre rapide de programmes quelquefois complexes, grâce à la fois à leurs propres qualités, aux bibliothèques dont ils disposent et à l'efficacité des ordinateurs.
Mais qu'est-ce qu'un script et qu'est-ce qu'un langage de scripts ? Quelles sont les caractéristiques communes aux langages de scripts, et quelles sont les particularités des plus connus d'entre eux ? Commençons d'abord par formuler quelques réponses à ces questions.
Traditionnellement, le terme « script » désigne la transcription du déroulement d'un film ou d'une action. En informatique, les ordinateurs ont vite été en mesure d'enchaîner des exécutions de programmes, et se sont donc dotés de langages pour décrire ces enchaînements. Dès les années 1950, on a appelé « script » la description d'un tel
enchaînement de tâches
. L'exécution d'un script stocké dans un fichier permettait alors d'exécuter ces enchaînements sans nécessiter la présence de l'opérateur.
Le système d'exploitation Unix a banalisé cette notion en développant un langage interactif dédié à ces écritures de scripts, le « shell », et en le proposant comme interface avec l'utilisateur. Un
script shell
est un fichier qui peut être rendu exécutable et être paramétré par des arguments, devenant ainsi une nouvelle commande.
Le shell d'Unix n'est qu'un langage de scripts parmi d'autres, mais deux de ses traits sont caractéristiques des langages de cette famille :
1. c'est un langage dont les programmes – les scripts – sont faciles à mettre en œuvre : il n'y a pas de compilation explicite qui soit nécessaire, un script est tout de suite prêt à être exécuté ;
2. c'est un langage doté d'opérations primitives puissantes, telles le filtrage de motifs ou la mise en cascade (pipelining) de commandes, et qui donne accès à une volumineuse bibliothèque, puisqu'un script shell peut utiliser n'importe quelle autre commande Unix comme fonction de bibliothèque.
Face à un langage de programmation classique, le programmeur s'attache à adapter finement ses propres structures de données à son problème, à choisir les constructions offertes par le langage en fonction de leur coût d'exécution afin de maîtriser la complexité de ses algorithmes, à compiler son programme afin de bénéficier des différentes vérifications opérées par le compilateur et d'en produire un exécutable optimisé.
A contrario
, l'écriture d'un script doit être rapide, et...