GDScript dans Godot 3.4 En informatique, un script est un ensemble d'instructions relativement court et simple qui automatise généralement un processus qui serait autrement manu...
En informatique, un script est un ensemble d'instructions relativement court et simple qui automatise généralement un processus qui serait autrement manuel. L'action d'écrire un script est appelée programmation de scripts . Un langage de script est un langage de programmation utilisé pour la programmation de scripts.
À l'origine, le scripting se limitait à l'automatisation des interfaces en ligne de commande des systèmes d'exploitation , et les langages étaient relativement simples. Aujourd'hui, le scripting est beaucoup plus répandu et certains langages de script intègrent des fonctionnalités modernes permettant également de développer des applications logicielles .
langage de programmation généraliste ou un langage spécifique à un domaine pour un environnement donné. Lorsqu'il est intégré à une application, il peut être appelé langage d'extension .
Le terme « langage de script » est parfois employé au sens large pour désigner les langages de programmation dynamiques de haut niveau en général. Certains sont des langages strictement interprétés , tandis que d'autres utilisent une forme de compilation. Dans ce contexte, le terme « script » désigne un petit programme écrit dans un tel langage. Typiquement, un script tient dans un seul fichier et ne dépasse pas quelques milliers de lignes de code.
La portée des langages de script est très variable, allant des langages de petite taille aux langages de grande envergure, et des langages hautement spécialisés aux langages de programmation généralistes . Un langage peut initialement être petit et très spécialisé, puis évoluer vers un langage portable et généraliste ; inversement, un langage généraliste peut ultérieurement développer des dialectes spécifiques à un domaine .
Langues notables
AWK , pour le traitement de texte, généralement disponible dans les systèmes d'exploitation de type Unix
JavaScript (later: ECMAScript), originally limited to running in a web browser to dynamically modify a web page; later enhanced into a widely portable, general-purpose programming language
Un script est généralement court et simple. Comme il n'y a pas de limite de taille ni de complexité, la définition de « script » est subjective. Quelques lignes de code sans embranchement sont probablement considérées comme un script. En revanche, un ensemble de fichiers contenant des interfaces utilisateur ou matérielles sophistiquées, des algorithmes complexes ou de la multiprogrammation n'est généralement pas considéré comme un script.
Automates
Un script automatise généralement une tâche qui serait autrement effectuée manuellement par une personne.
Langue limitée
Un langage principalement destiné à la programmation de scripts possède généralement des capacités limitées par rapport à un langage généraliste. Un langage de script peut ne pas offrir les fonctionnalités nécessaires au développement d'applications complexes.
Commence par le haut
En règle générale, un script commence son exécution à la première ligne de code, tandis qu'une application démarre généralement à un point spécial du code appelé point d'entrée .
Par exemple, Java ne fonctionne pas comme un script, car une application commence par une fonction nommée `start` ); } public static void main ( String [] args ) { printHelloWorld (); } }
Les scripts sont souvent créés ou modifiés par la personne qui les exécute, mais ils sont aussi souvent distribués, comme lorsque de grandes parties de jeux sont écrites dans un langage de script, notamment le jeu T-rex de Google Chrome .
Les premiers interpréteurs de commandes interactifs ont été développés dans les années 1960 pour permettre le fonctionnement à distance des premiers systèmes à temps partagé . Ils utilisaient des scripts shell , qui contrôlaient l'exécution de programmes informatiques au sein d'un autre programme, l'interpréteur de commandes. Calvin Mooers, avec son langage TRAC, est généralement considéré comme l'inventeur de la substitution de commandes , c'est-à-dire la possibilité d'intégrer des commandes dans des scripts qui, une fois interprétés, insèrent une chaîne de caractères dans le script. Multics appelle ces commandes des fonctions actives . Louis Pouzin a écrit un des premiers processeurs pour scripts de commandes, appelé RUNCOM, pour CTSS vers 1964. Stuart Madnick, au MIT, a écrit un langage de script pour CP/CMS d'IBM en 1966. Il a initialement nommé ce processeur COMMAND, puis EXEC . Multics incluait une version dérivée de CTSS RUNCOM, également appelée RUNCOM. EXEC a finalement été remplacé par EXEC 2 et Rexx .
Des langages comme Tcl et Lua ont été spécifiquement conçus comme des langages de script généralistes pouvant être intégrés à n'importe quelle application. D'autres langages, tels que Visual Basic pour Applications (VBA), offraient une intégration poussée avec les outils d'automatisation du système sous-jacent. L'intégration de ces langages de script généralistes, plutôt que le développement d'un nouveau langage pour chaque application, présentait également des avantages évidents : elle dispensait le développeur d'avoir à coder un traducteur de langage et permettait à l'utilisateur d'appliquer des compétences acquises ailleurs.
Certains logiciels intègrent plusieurs langages de script différents. Les navigateurs web modernes fournissent généralement un langage pour écrire des extensions au navigateur lui-même, et plusieurs langages embarqués standard pour contrôler le navigateur, notamment JavaScript (un dialecte d' ECMAScript ) ou XUL .
Types
Les langages de script peuvent être classés en plusieurs types différents, avec un degré de chevauchement considérable entre ces types.
Les langages de liaison sont particulièrement utiles pour écrire et maintenir :
commandes personnalisées pour un shell de commandes ;
des programmes plus petits que ceux qui sont mieux implémentés dans un langage compilé ;
programmes « wrapper » pour exécutables, comme un fichier batch qui déplace ou manipule des fichiers et effectue d'autres opérations avec le système d'exploitation avant ou après l'exécution d'une application comme un traitement de texte, une feuille de calcul, une base de données, un assembleur, un compilateur, etc. ;
scripts susceptibles de changer ;
Développement rapide d'une application dont la solution sera finalement implémentée dans un autre langage, généralement compilé.AppleScript
Les langages de macro exposés aux composants du système d'exploitation ou des applications peuvent servir de langages d'interface. Parmi ceux-ci figurent Visual Basic pour Applications (VBA) , WordBasic , LotusScript , CorelScript , Hummingbird Basic, QuickScript, Rexx, SaxBasic et WinWrap Basic. D'autres outils comme AWK peuvent également être considérés comme des langages d'interface, de même que tout langage implémenté par un moteur Windows Script Host (VBScript, JScript et VBA par défaut sous Windows, et des moteurs tiers incluant des implémentations de Rexx, Perl, Tcl, Python, XSLT, Ruby, Pascal moderne, Delphi et C). La plupart des applications peuvent accéder aux composants du système d'exploitation et les utiliser via leurs modèles objets ou leurs propres fonctions.
D'autres appareils, comme les calculatrices programmables, peuvent également disposer de langages d'interface ; les systèmes d'exploitation des assistants personnels, tels que Windows CE, peuvent proposer des outils macro natifs ou tiers permettant d'interconnecter les applications, en plus des implémentations des langages d'interface courants, notamment Windows NT , DOS , certains shells Unix , Rexx, Pascal moderne, PHP et Perl. Selon la version du système d'exploitation, WSH et les moteurs de script par défaut (VBScript et JScript) sont disponibles.
Les calculatrices programmables peuvent être programmées dans des langages d'interface de trois manières. Par exemple, la Texas Instruments TI-92 peut être programmée par défaut avec un langage de script de commandes. L'intégration du langage de script et d'interface Lua dans la série de calculatrices Les compilateurs croisés C sur PC pour certaines machines TI et HP, utilisés avec des outils qui convertissent entre C et Perl, Rexx, AWK et les scripts shell en Perl, Modern Pascal, VBScript vers et depuis Perl, permettent d'écrire un programme dans un langage d'interface pour une implémentation éventuelle (sous forme de programme compilé) sur la calculatrice.Semware Editor (TSE) ou vi improved (Vim), soit à l'aide d'une implémentation externe, comme XEDIT , soit les deux, comme KEDIT . Parfois, les éditeurs de texte et les macros d'édition sont utilisés en interne par d'autres applications, comme FILELIST et RDRLIST dans un CMS .
Langages de contrôle des tâches et shells
contrôle des tâches , qui concerne le lancement et le contrôle du comportement des programmes système (en ce sens, on peut considérer les shells comme des descendants du JCL ( Job Control Language ) d'IBM, conçu précisément à cette fin). Nombre de ces langages possèdent des interpréteurs qui servent également d'interpréteurs de commandes, tels que le shell Unix ou MS-DOS COMMAND.COM. D'autres, comme AppleScript, permettent d'utiliser des commandes proches du langage naturel pour créer des scripts.
Scripting d'interface graphique
Avec l'avènement des interfaces graphiques , un type spécialisé de langage de script a vu le jour pour contrôler un ordinateur. Ces langages interagissent avec les mêmes fenêtres graphiques, menus, boutons, etc., qu'un utilisateur humain, en simulant ses actions. Ils servent généralement à automatiser les tâches de l'utilisateur. On les appelle également macros lorsque le contrôle s'effectue par la simulation de frappes au clavier, de clics de souris, ou d'interactions tactiles sur un écran tactile.
Ces langages pourraient en principe servir à contrôler n'importe quelle application graphique, mais en pratique, leur utilisation est limitée car ils nécessitent l'assistance de l'application et du système d'exploitation . Il existe quelques exceptions à cette règle. Certains langages de script d'interface graphique reposent sur la reconnaissance des objets graphiques à partir des pixels de l'écran . Ces langages ne dépendent ni du système d'exploitation ni de l'application.
Lorsque l'interface graphique fournit les interfaces appropriées, comme dans IBM Workplace Shell , un langage de script générique, par exemple Object REXX , peut être utilisé pour écrire des scripts d'interface graphique.
Langues spécifiques à l'application
Les langages spécifiques à une application peuvent être classés en plusieurs catégories : les langages d'application autonomes (exécutables) et les langages internes à une application (comme PostScript , XML et gscript, implémentés respectivement par Adobe , Microsoft et Google ). Certains de ces langages sont des langages de script idiomatiques, adaptés aux besoins de l'utilisateur. De même, de nombreux systèmes de jeux vidéo utilisent un langage de script personnalisé pour exprimer les actions programmées des personnages non-joueurs et de l'environnement de jeu. Ces langages sont conçus pour une application unique ; bien qu'ils puissent superficiellement ressembler à un langage généraliste (par exemple, QuakeC , inspiré du C), ils possèdent des caractéristiques spécifiques qui les distinguent. Emacs Lisp , dialecte complet et performant de Lisp , offre de nombreuses fonctionnalités particulières qui le rendent particulièrement utile pour étendre les fonctions d'édition d'Emacs. Un langage de script spécifique à une application peut être considéré comme un langage de programmation dédié à un domaine spécifique et spécialisé pour une application donnée.
Langues d'extension/intégrables
Plusieurs langages ont été conçus pour remplacer les langages de script spécifiques à une application en étant intégrables à ces dernières. Le programmeur (travaillant en C ou dans un autre langage système) inclut des points d'entrée permettant au langage de script de contrôler l'application. Ces langages peuvent être techniquement équivalents à un langage d'extension spécifique, mais lorsqu'une application intègre un langage commun, l'utilisateur bénéficie de la possibilité de transférer ses compétences d'une application à l'autre. Une alternative plus générique consiste simplement à fournir une bibliothèque (souvent une bibliothèque C) qu'un langage généraliste peut utiliser pour contrôler l'application, sans avoir à le modifier pour le domaine spécifique.
JavaScript a été initialement conçu, et l'est encore principalement, comme un langage de script interne aux navigateurs web . Cependant, sa normalisation sous le nom d' ECMAScript l'a popularisé en tant que langage embarqué généraliste. L' implémentation SpiderMonkey de Mozilla est intégrée à plusieurs environnements, tels que le moteur de widgets Yahoo , et à des applications comme les produits Adobe Flash ( ActionScript ) et Acrobat (pour le script de fichiers PDF ).
Tcl a été créé comme langage d'extension, mais il est aujourd'hui plus fréquemment utilisé comme langage généraliste, à l'instar de Python , Perl et Ruby . À l'inverse, Rexx a été conçu comme langage de contrôle de tâches, mais il est largement utilisé comme langage d'extension et comme langage généraliste. Perl est un langage généraliste, mais il possédait le dialecte Oraperl (1990), constitué d'un binaire Perl 4 intégrant l'interface d'appel Oracle . Ce dialecte a depuis été remplacé par une bibliothèque (module Perl), DBD::Oracle .
D'autres applications complexes et orientées tâches peuvent intégrer et exposer un langage de programmation embarqué afin d'offrir à leurs utilisateurs un contrôle accru et des fonctionnalités plus étendues que celles accessibles via une interface utilisateur, aussi sophistiquée soit-elle. Par exemple, les outils de création 3D d'Autodesk Maya intègrent le langage embarqué Maya (MEL) , tandis que Blender utilise Python à cette fin.
D'autres types d'applications nécessitant des cycles d'ajout de fonctionnalités ou de développement rapides (comme les moteurs de jeux ) utilisent également un langage embarqué. Lors du développement, cela leur permet de prototyper plus rapidement les fonctionnalités et de les modifier plus librement, sans que l'utilisateur ait besoin de connaître en détail le fonctionnement interne de l'application ni de la reconstruire après chaque modification (ce qui peut s'avérer très long). Les langages de script utilisés à cette fin vont des plus courants et des plus connus Lua et Python à des langages moins répandus comme AngelScript et Squirrel .