Qu'est-ce qui fait d'une langue un langage de script? J'ai entendu des gens dire "quand il est interprété au lieu d'être compilé". Cela ferait de PHP (par exemple) un langage de script. Est-ce le seul critère? Ou y a-t-il d'autres critères?
Qu'est-ce qui fait d'une langue un langage de script? J'ai entendu des gens dire "quand il est interprété au lieu d'être compilé". Cela ferait de PHP (par exemple) un langage de script. Est-ce le seul critère? Ou y a-t-il d'autres critères?
Réponses:
Un langage de script est un langage qui "script" d'autres choses pour faire des choses. L'objectif principal n'est pas tant de créer vos propres applications que de faire en sorte qu'une application existante agisse comme vous le souhaitez, par exemple JavaScript pour les navigateurs, VBA pour MS Office.
Facile. Quand je l'utilise, c'est un langage dynamique moderne, quand vous l'utilisez, c'est simplement un langage de script!
Traditionnellement, lorsqu'on parle de la différence entre les scripts et la programmation, les scripts sont interprétés et les programmes sont compilés. Un langage peut être exécuté de différentes manières - interprété ou compilé (en bytecode ou en code machine). Cela ne fait pas une langue ou une autre.
À certains yeux, la façon dont vous utilisez un langage en fait un langage de script (par exemple, les développeurs de jeux qui développent principalement en C ++ scriptent les objets en Lua). Encore une fois, les lignes sont floues - un langage peut être utilisé pour une programmation par une personne et le même langage peut être utilisé pour un langage de script par une autre.
Ceci est extrait de l' article de wikipedia sur les langages de script:
Un langage de script, un langage de script ou un langage d'extension est un langage de programmation qui permet de contrôler une ou plusieurs applications logicielles. Les «scripts» sont distincts du code de base de l'application, car ils sont généralement écrits dans une langue différente et sont souvent créés ou au moins modifiés par l'utilisateur final. Les scripts sont souvent interprétés à partir du code source ou du bytecode, alors que les applications qu'ils contrôlent sont traditionnellement compilées en code machine natif. Les langages de script sont presque toujours intégrés dans les applications qu'ils contrôlent.
Vous remarquerez l'utilisation de «habituellement», «souvent», «traditionnellement» et «presque toujours» - tout cela vous indique qu'il n'y a aucun ensemble d'attributs distincts qui font d'un langage spécifique un «langage de script».
"Un scénario, c'est ce que vous donnez aux acteurs. Un programme, c'est ce que vous donnez au public." - Larry Wall
Je ne pense vraiment pas qu'il y ait plus de différence. Les langages dits de "scripting" sont souvent compilés - très rapidement et à l'exécution. Et certains des langages de "programmation" sont également compilés au moment de l'exécution (pensez à JIT) et la première étape de la "compilation" est la vérification de la syntaxe et la résolution des ressources.
Ne vous accrochez pas dessus, ce n'est vraiment pas important.
Ma définition serait un langage qui est généralement distribué en tant que source plutôt qu'en tant que binaire.
Il y a beaucoup de réponses possibles à cela.
Premièrement: ce n'est pas vraiment une question de différence entre un langage de script et un langage de programmation, car un langage de script est un langage de programmation. Il s'agit plus de savoir quels traits font d'un langage de programmation un langage de script tandis qu'un autre langage de programmation n'est pas un langage de script.
Deuxièmement: il est vraiment difficile de dire ce qu'est un langage XYZ, que ce XYZ soit "scripting", "programmation fonctionnelle", "programmation orientée objet" ou que sais-je encore. La définition de ce qu'est la "programmation fonctionnelle" est assez claire, mais personne ne sait ce qu'est un "langage de programmation fonctionnel".
La programmation fonctionnelle ou la programmation orientée objet sont de la programmation styles de ; vous pouvez écrire dans un style fonctionnel ou orienté objet dans à peu près n'importe quel langage. Par exemple, le système de fichiers virtuel Linux Switch et le modèle pilote Linux sont fortement orienté objet en dépit écrit en C, alors que beaucoup de code Java ou C # que vous voyez sur le web est très procédurale et non orientée objet du tout . OTOH, j'ai vu du code Java très fonctionnel.
Donc, si la programmation fonctionnelle et la programmation orientée objet ne sont que des styles qui peuvent être réalisés dans n'importe quel langage, alors comment définissez-vous un «langage de programmation orienté objet»? On pourrait dire qu'un langage de programmation orienté objet est un langage qui permet la programmation orientée objet. Mais ce n'est pas vraiment une définition: tous les langages permettent la programmation orientée objet, donc tous les langages sont orientés objet? Donc, vous dites, eh bien un langage est orienté objet, s'il vous oblige à programmer dans un style orienté objet. Mais ce n'est pas non plus une définition: tous les langages permettent la programmation fonctionnelle, donc aucun langage n'est orienté objet?
Donc, pour moi, j'ai trouvé la définition suivante:
Un langage est un langage de script (langage orienté objet / langage fonctionnel) si les deux
- facilite la création de scripts (programmation orientée objet / programmation fonctionnelle), c'est-à-dire qu'il le permet non seulement , mais le rend facile et naturel et contient des fonctionnalités qui l' aident , ET
- vous encourage et vous guide vers le scripting (programmation orientée objet / programmation fonctionnelle).
Donc, après cinq paragraphes, je suis arrivé à: "un langage de script est un langage de script". Quelle belle définition. NE PAS.
De toute évidence, nous devons maintenant examiner la définition de "scripting".
C'est là qu'intervient le troisième problème: alors que le terme «programmation fonctionnelle» est bien défini et que seul le terme «langage de programmation fonctionnel» pose problème, malheureusement avec le scripting, à la fois le terme «scripting» et le terme «scripting language» "sont mal définis.
Eh bien, tout d'abord le script est la programmation. C'est juste un type spécial de programmation. IOW: chaque script est un programme, mais tous les programmes ne sont pas un script; l'ensemble de tous les scripts est un sous-ensemble approprié de l'ensemble de tous les programmes.
À mon avis personnel, ce qui fait la création de scripts et le distingue des autres types de programmation, c'est que…
Les scripts manipulent en grande partie des objets qui
- n'ont pas été créés par le script,
- ont une durée de vie indépendante du script et
- vivre en dehors du domaine du script.
De plus, les types de données et les algorithmes utilisés ne sont généralement pas définis par le script mais par l'environnement extérieur.
Pensez à un script shell: les scripts shell manipulent généralement des fichiers, des répertoires et des processus. La majorité des fichiers, répertoires et processus de votre système n'ont probablement pas été créés par le script en cours d'exécution. Et ils ne disparaissent pas lorsque le script se termine: leur durée de vie est totalement indépendante du script. Et ils ne font pas vraiment partie du script non plus, ils font partie du système. Vous n'avez pas commencé votre script par l'écriture File
et les Directory
classes, ces types de données ne vous concernent pas: vous supposez simplement qu'ils sont là, et vous ne savez même pas (ni n'avez besoin de savoir) comment ils fonctionnent. Et vous n'implémentez pas non plus vos propres algorithmes, par exemple pour la traversée de répertoire, vous utilisez simplement find
au lieu d'implémenter votre propre recherche en largeur d'abord.
En bref: un script s'attache à un système plus grand qui existe indépendamment du script, manipule une petite partie du système puis se termine.
Ce système plus large peut être le système d'exploitation dans le cas d'un script shell, le DOM du navigateur dans le cas d'un script navigateur, un jeu (par exemple World of Warcraft avec Lua ou Second Life avec le Linden Scripting Language), une application (par exemple AutoLisp langage pour les macros AutoCAD ou Excel / Word / Office), un serveur Web, un pack de robots ou autre chose.
Notez que l'aspect script est complètement orthogonal à tous les autres aspects des langages de programmation: un langage de script peut être fortement ou faiblement typé, strictement ou vaguement typé, typé statiquement ou dynamiquement, typé nominalement, structurellement ou canard, diable il peut même être non typé . Il peut être impératif ou fonctionnel, orienté objet, procédural ou fonctionnel, strict ou paresseux. Ses implémentations peuvent être interprétées, compilées ou mixées.
Par exemple, Mondrian est un langage de script fonctionnel paresseux strictement fortement typé statiquement avec une implémentation compilée.
Cependant, tout cela est sans objet, car la façon dont le terme langage de script est réellement utilisé dans le monde réel n'a rien à voir avec tout ce qui précède. Il est le plus souvent utilisé simplement comme une insulte, et la définition est assez simple, voire simpliste:
- vrai langage de programmation: mon langage de programmation
- langage de script: votre langage de programmation
Cela semble être la manière dont le terme est le plus souvent utilisé.
C'est comme du porno, vous le savez quand vous le voyez. La seule définition possible d'un langage de script est:
A language which is described as a scripting language.
Un peu circulaire, n'est-ce pas? (Au fait, je ne plaisante pas).
Au fond, il n'y a rien qui fasse d'un langage un langage de script si ce n'est qu'on l'appelle tel, surtout par ses créateurs. Le principal ensemble de langages de script modernes est PHP, Perl, JavaScript, Python, Ruby et Lua. Tcl est le premier langage de script moderne majeur (ce n'était pas le premier langage de script cependant, j'oublie ce que c'est, mais j'ai été surpris d'apprendre qu'il était antérieur à Tcl).
Je décris les caractéristiques des principaux langages de script dans mon article :
A Practical Solution for Scripting Language Compilers
Paul Biggar, Edsko de Vries and David Gregg
SAC '09: ACM Symposium on Applied Computing (2009), (March 2009)
La plupart sont typés et interprétés dynamiquement, et la plupart n'ont pas de sémantique définie en dehors de leur implémentation de référence. Cependant, même si leur implémentation majeure devient compilée ou JIT, cela ne change pas la «nature» du langage.
La seule question qui reste est de savoir comment savoir si une nouvelle langue est un langage de script. Eh bien, si cela s'appelle un langage de script, c'est un. Donc, Factor est un langage de script (ou du moins l'était quand il a été écrit), mais, disons, Java ne l'est pas.
Le "langage de script" est l'un de ces concepts flous qui peuvent signifier beaucoup de choses. Habituellement, cela fait référence au fait qu'il existe un processus en une étape vous conduisant du code source à l'exécution.
Par exemple en Perl, vous faites: perl my_source.pl
Compte tenu des critères ci-dessus, PHP est un langage de script (même si vous pouvez avoir un processus de "compilation" par exemple lorsque vous utilisez Zend Encoder pour "protéger" le code source).
PS. Les langages de script sont souvent (mais pas toujours) interprétés. Aussi souvent (mais encore une fois, pas toujours) les langages de script sont typés dynamiquement.
Tous les langages de script sont des langages de programmation. Donc, à proprement parler, il n'y a pas de différence.
Le terme ne fait référence à aucune propriété fondamentale de la langue, il se réfère à l' utilisation typique de la langue. Si l'utilisation typique est d'écrire des programmes courts qui font principalement des appels à du code préexistant, et un traitement simple sur les résultats, (c'est-à-dire, si l'utilisation typique est d'écrire des scripts ), alors c'est un langage de script.
Je pense que M. Roberto Ierusalimschy a une très bonne réponse ou la question dans `` Programming in Lua '':
Cependant, la particularité des langages interprétés n'est pas qu'ils ne sont pas compilés, mais que n'importe quel compilateur fait partie du runtime du langage et que, par conséquent, il est possible (et facile) d'exécuter du code généré à la volée
eval
.
Une division est
Un langage interprété dynamiquement est interprété à l'exécution alors qu'un langage compilé est compilé avant l'exécution.
Je dois ajouter que, comme Jörg l'a souligné, la distinction interprétée / compilée n'est pas une caractéristique du langage, mais du moteur d'exécution.
Vous pourriez également être intéressé par cette explication du système de type , qui est lié et se concentre davantage sur l'aspect langage, plutôt que sur le moteur d'exécution. La plupart des langages de script sont typés dynamiquement, tandis que les langages «normaux» sont généralement typés statiquement.
En général, la division des langages statiquement et dynamiquement typés est mieux définie et a plus d'implications sur la convivialité du langage.
Un langage de script est généralement :
Alors qu'un langage sans script est généralement : 1. typé statiquement 2. Compilé, avec un accent sur les performances 3. Nécessite plus de code standard, conduisant à un prototypage plus lent mais plus de lisibilité et de maintenabilité à long terme 4. Utilisé pour les grands projets, s'adapte à de nombreux modèles de conception
Mais c'est plus une différence historique de nos jours, à mon avis. Javascript et Perl ont été écrits avec de petits scripts simples à l'esprit, tandis que C ++ a été écrit avec des applications complexes à l'esprit; mais les deux peuvent être utilisés de toute façon. Et de nombreux langages de programmation, modernes et anciens, brouillent la ligne de toute façon (et c'était flou en premier lieu!).
Le plus triste, c'est que j'ai connu quelques développeurs qui détestent ce qu'ils percevaient comme des "langages de script", pensant qu'ils étaient plus simples et pas aussi puissants. Mon opinion est ce vieux cliché - utilisez le bon outil pour le travail.
Les langages de script étaient à l'origine considérés comme des mécanismes de contrôle pour les applications écrites dans un langage de programmation dur. Les programmes compilés ne pouvaient pas être modifiés au moment de l'exécution, donc la création de scripts offrait de la flexibilité aux utilisateurs.
Plus particulièrement, le script shell automatisait les processus dans le noyau du système d'exploitation (traditionnellement, AppleScript sur Mac); un rôle qui passait de plus en plus entre les mains de Perl, puis en sortait en Python ces derniers temps. J'ai vu Scheme (en particulier dans son implémentation Guile) utilisé pour déclarer des scènes de lancer de rayons; et récemment, Lua est très populaire en tant que langage de programmation pour les jeux de scripts - au point que la seule chose codée en dur dans de nombreux nouveaux jeux est le moteur graphique / physique, tandis que toute la logique du jeu est encodée en Lua. De la même manière, JavaScript a été pensé pour scénariser le comportement d'un navigateur Web.
Les langues se sont émancipées; personne ne pense maintenant au système d'exploitation comme une application (ou n'y pense plus du tout), et de nombreux langages de script autrefois ont commencé à être utilisés pour écrire leurs propres applications complètes. Le nom lui-même est devenu vide de sens et s'est répandu dans de nombreuses langues interprétées utilisées aujourd'hui, qu'elles soient conçues pour être interprétées à partir d'un autre système ou non.
Cependant, «langages de script» n'est certainement pas synonyme de «langages interprétés» - par exemple, BASIC a été interprété pendant la majeure partie de sa vie (c'est-à-dire avant qu'il ne perde son acronimicité et ne devienne Visual Basic), mais personne ne le considère vraiment comme script.
MISE À JOUR: Matériel de lecture comme d'habitude disponible sur Wikipedia .
Premier point, un langage de programmation n'est pas un "langage de script" ou quelque chose d'autre. Cela peut être un "langage de script" et autre chose.
Deuxième point, l'implémenteur du langage vous dira s'il s'agit d'un langage de script.
Votre question devrait se lire "Dans quelles implémentations un langage de programmation serait-il considéré comme un langage de script?", Et non "Quelle est la différence entre un langage de script et un langage de programmation?". Il n'y a pas d'intermédiaire.
Pourtant, je considérerai un langage comme un langage de script s'il est utilisé pour fournir un certain type de middleware. Par exemple, je considérerais la plupart des implémentations de JavaScript comme un langage de script. Si JavaScript était exécuté dans le système d'exploitation, pas dans le navigateur, ce ne serait pas un langage de script. Si PHP s'exécute à l'intérieur d'Apache, c'est un langage de script. S'il est exécuté à partir de la ligne de commande, ce n'est pas le cas.
Je vois un langage de script comme tout ce qui ne nécessite pas une étape de «compilation» manifeste et lourde. La caractéristique principale du point de vue des programmeurs est la suivante: vous éditez le code et l'exécutez immédiatement.
Je considérerais donc JavaScript et PHP comme des langages de script, alors qu'ActionScript 3 / Flex ne l'est pas vraiment.
Mon ami et moi venons d'avoir cet argument: quelle est la différence entre un langage de programmation et un langage de script.
Un argument populaire est que les langages de programmation sont compilés et les langages de script sont interprétés - Cependant, je crois que cet argument est complètement faux ... pourquoi?
Sur cette base, voici mon argument pour la différence entre un langage de programmation et un langage de script:
Un langage de programmation s'exécute au niveau de la machine et a accès à la machine elle-même (mémoire, graphiques, son, etc.).
Un langage de script est en bac à sable et n'a accès qu'aux objets exposés au bac à sable. Il n'a pas d'accès direct à la machine sous-jacente.
A mon avis, je dirais que les langages interprétés dynamiquement tels que PHP, Ruby, etc ... sont toujours des langages "normaux". Je dirais que les exemples de langages de "scripting" sont des choses comme bash (ou ksh ou tcsh ou autre) ou sqlplus. Ces langages sont souvent utilisés pour enchaîner les programmes existants sur un système en une série de commandes cohérentes et associées, telles que:
Je dirais donc que la différence (pour moi, en tout cas) réside davantage dans la façon dont vous utilisez la langue. Des langages comme PHP, Perl, Ruby pourraient être utilisés comme "langages de script", mais je les vois généralement comme des "langages normaux" (sauf Perl qui semble aller dans les deux sens.
Je vais simplement continuer et migrer ma réponse à partir de la question en double
Le nom «Langage de script» s'applique à un rôle très spécifique: le langage dans lequel vous écrivez des commandes à envoyer à une application logicielle existante. (comme un "scénario" de télévision ou de film traditionnel)
Par exemple, il était une fois les pages Web HTML ennuyeuses. Ils étaient toujours statiques. Puis un jour, Netscape a pensé: "Hé, et si nous laissions le navigateur lire et agir sur les petites commandes de la page?" Et comme ça, Javascript s'est formé.
Une simple commande javascript est la alert()
commande qui demande / commande au navigateur (une application logicielle) qui lit la page Web d'afficher une alerte.
Maintenant, est alert()
lié, de quelque manière que ce soit, au C ++ ou à tout autre langage de code que le navigateur utilise réellement pour afficher l'alerte? Bien sûr que non. Quelqu'un qui écrit "alert ()" sur une page .html ne comprend pas comment le navigateur affiche réellement l'alerte. Il écrit juste une commande que le navigateur interprétera.
Voyons le code javascript simple
<script>
var x = 4
alert(x)
</script>
Ce sont des instructions qui sont envoyées au navigateur, pour que le navigateur les interprète lui-même. Le langage de programmation que le navigateur utilise pour définir une variable sur 4, et mettre cela dans une alerte ... il n'a aucun rapport avec javascript.
Nous appelons cette dernière série de commandes un "script" (c'est pourquoi il est entouré de <script>
balises). Juste par la définition de "script", au sens traditionnel: Une série d'instructions et de commandes envoyées aux acteurs . Tout le monde sait qu'un scénario (un scénario de film), par exemple, est un script.
Le scénario (script) n'est pas les acteurs, ni la caméra, ni les effets spéciaux. Le scénario leur dit simplement quoi faire.
Maintenant, ce qui est un script langage , exactement?
Il existe de nombreux langages de programmation qui ressemblent à différents outils dans une boîte à outils; certaines langues ont été conçues spécifiquement pour être utilisés comme scripts.
Javasript est un exemple évident; il existe très peu d'applications de Javascript qui ne relèvent pas du domaine des scripts.
ActionScript (le langage des animations Flash) et ses dérivés sont des langages de script, en ce sens qu'ils émettent simplement des commandes au lecteur / interpréteur Flash. Bien sûr, il existe des abstractions telles que la programmation orientée objet, mais tout cela est simplement un moyen d'arriver à la fin: envoyer des commandes au lecteur flash.
Python et Ruby sont également couramment utilisés comme langages de script. Par exemple, j'ai travaillé une fois pour une entreprise qui utilisait Ruby pour écrire des commandes à envoyer à un navigateur qui ressemblaient à "allez sur ce site, cliquez sur ce lien ..." pour effectuer des tests automatisés de base. Je n'étais en aucun cas un "développeur de logiciels" à ce poste. Je viens d'écrire des scripts qui envoyaient des commandes à l'ordinateur pour envoyer des commandes au navigateur.
En raison de leur nature, les langages de script sont rarement «compilés», c'est-à-dire traduits en code machine et lus directement par l'ordinateur.
Même les applications GUI créées à partir de Python et Ruby sont des scripts envoyés à une API écrite en C ++ ou C. Elle indique à l'application C ce qu'elle doit faire.
Il y a bien sûr une ligne d'imprécision. Pourquoi ne pouvez-vous pas dire que Machine Language / C sont des langages de script, car ce sont des scripts que l'ordinateur utilise pour s'interfacer avec la carte mère / les cartes graphiques / les puces de base?
Il y a quelques lignes que nous pouvons tracer pour clarifier:
Lorsque vous pouvez écrire un langage de script et l'exécuter sans "compiler", c'est plus une sorte de script direct. Par exemple, vous n'avez rien à faire avec un scénario pour dire aux acteurs quoi en faire. Il est déjà là, utilisé tel quel. Pour cette raison, nous exclurons les langages compilés d'être appelés langages de script, même s'ils peuvent être utilisés à des fins de script dans certaines occasions.
Le langage de script implique des commandes envoyées à une application logicielle complexe ; c'est la raison pour laquelle nous écrivons des scripts en premier lieu - vous n'avez donc pas besoin de connaître la complexité du fonctionnement du logiciel pour lui envoyer des commandes. Ainsi, les langages de script ont tendance à être des langages qui envoient des commandes (relativement) simples à des applications logicielles complexes ... dans ce cas, le langage machine et le code d'assemblage ne le coupent pas.
Puis-je suggérer que les langages de script sont un terme dont beaucoup de gens s'éloignent. Je dirais que cela se résume principalement aux langages compilés et aux langages dynamiques de nos jours.
Je veux dire que vous ne pouvez pas vraiment dire quelque chose comme Python, ou Ruby sont des langages de "script" de nos jours (vous avez même des trucs comme IronPython et JIT-your-favorite-language , la différence a été encore plus floue).
Pour être honnête, personnellement, je ne pense plus que PHP soit un langage de script. Je ne m'attendrais pas à ce que les gens aiment catégoriser PHP différemment de Java sur leur CV.
Les langages de script ont tendance à fonctionner dans un moteur de script qui fait partie d'une application plus large. Par exemple, JavaScript s'exécute dans le moteur de script de votre navigateur.
Un langage de script est un langage qui est interprété à chaque fois que le script est exécuté, cela implique d'avoir un interprète et la plupart sont très lisibles par l'homme, pour être utile un langage de script est facile à apprendre et à utiliser.
Chaque langage compilable peut être transformé en langage de script et vice versa tout dépend de l'implémentation d'un interpréteur ou d'un compilateur, par exemple C ++ a un interpréteur donc il peut être appelé un langage de script s'il est utilisé ainsi (pas très pratique en général comme C ++ est un langage très complexe), l'un des langages de script les plus utiles actuellement est Python ...
Donc, pour répondre à votre question, la définition est sur l'utilisation d'un interprète pour exécuter des programmes scriptés rapides et faciles, pour traiter des tâches simples ou des applications prototypes, l'utilisation la plus puissante que l'on puisse faire des langages de script est d'inclure la possibilité pour chaque utilisation d'étendre un application compilée.
Je préfère que les gens n'utilisent pas le terme «langage de script» car je pense que cela diminue l'effort. Prenez un langage comme Perl, souvent appelé "langage de script".
Pourquoi avons-nous même besoin de faire la distinction entre un langage comme Java qui est compilé et Ruby qui ne l'est pas? Quelle est la valeur de l'étiquetage?
Pour en savoir plus, consultez http://xoa.petdance.com/Stop_saying_script .
Une différence importante est le typage fort (par rapport au typage faible ). Les langages de script sont souvent faiblement typés , ce qui permet d'écrire plus rapidement de petits programmes. Pour les grands programmes, c'est un inconvénient, car cela empêche le compilateur / interpréteur de trouver certains bogues de manière autonome, ce qui rend très difficile la refactorisation du code.
Les langages de script sont des langages de programmation où les programmes sont généralement livrés aux utilisateurs finaux sous une forme textuelle lisible et où il existe un programme qui peut apparemment exécuter ce programme directement. (Le programme peut très bien compiler le script en interne; ce n'est pas pertinent ici car il n'est pas visible pour l'utilisateur.)
Il est relativement courant que les langages de script puissent prendre en charge une session interactive où les utilisateurs peuvent simplement taper leur programme et l'exécuter immédiatement. En effet, il s’agit d’une extension insignifiante de l’exigence essentielle du premier paragraphe; la principale exigence supplémentaire est l'ajout d'un mécanisme pour déterminer quand une instruction saisie est complète afin qu'elle puisse être envoyée au moteur d'exécution.
Pour une vision légèrement différente de la question. Un langage de script est un langage de programmation mais un langage de programmation n'est pas nécessairement un langage de script. Un langage de script est utilisé pour contrôler ou programmer un système. Ce système pourrait être un système d'exploitation où le langage de script serait bash. Le système peut être un serveur Web avec PHP comme langage de script. Les langages de script sont conçus pour remplir un créneau spécifique; ce sont des langues spécifiques à un domaine. Les systèmes interactifs ont interprété les langages de script, donnant lieu à l'idée que les langages de script sont interprétés; cependant, c'est une conséquence du système et non du langage de script lui-même.
Un langage de script est un langage qui configure ou étend un programme existant.
Un langage de script est un langage de programmation.
La définition du «langage de script» est assez floue. Je me baserais sur les considérations suivantes:
Les langages de script n'ont généralement pas d'étapes de compilation visibles par l'utilisateur. En règle générale, l'utilisateur peut simplement exécuter des programmes en une seule commande simple.
Les programmes dans les langages de script sont normalement transmis sous forme source.
Les langages de script ont normalement des runtimes qui sont présents sur un grand nombre de systèmes, et les runtimes peuvent être installés facilement sur la plupart des systèmes.
Les langages de script ont tendance à être multiplateformes et non spécifiques à une machine.
Les langages de script facilitent l'appel d'autres programmes et l'interface avec le système d'exploitation.
Les langages de script sont généralement facilement intégrables dans des systèmes plus grands écrits dans des langages de programmation plus conventionnels.
Les langages de script sont normalement conçus pour faciliter la programmation et avec beaucoup moins de considération pour la vitesse d'exécution. (Si vous voulez une exécution rapide, le conseil habituel est de coder les parties chronophages dans quelque chose comme C, et d'incorporer le langage dans C ou d'appeler les bits C à partir du langage.)
Certaines des caractéristiques que j'ai énumérées ci-dessus sont vraies pour les implémentations, auquel cas je fais référence aux implémentations les plus courantes. Il y a eu des interpréteurs C, avec (AFAIK) aucune étape de compilation évidente, mais ce n'est pas le cas de la plupart des implémentations C. Vous pouvez certainement compiler un programme Perl en code natif, mais ce n'est pas ainsi qu'il est normalement utilisé. Certaines autres caractéristiques sont de nature sociale. Certains des critères ci-dessus se recoupent quelque peu. Comme je l'ai dit, la définition est floue.
Je dirais que le langage de script est celui qui manipule fortement les entités qu'il ne définit pas lui-même. Par exemple, JavaScript manipule les objets DOM fournis par le navigateur, PHP exploite une énorme bibliothèque de fonctions basées sur C, et ainsi de suite. Bien sûr, pas une définition précise, mais plutôt une façon de penser.
Si ce n'est pas le cas / ne le ferait pas fonctionnerait sur le CPU, c'est un script pour moi. Si un interpréteur doit s'exécuter sur le processeur sous le programme, il s'agit d'un script et d'un langage de script.
Aucune raison de rendre les choses plus compliquées que cela?
Bien sûr, dans la plupart (99%) des cas, il est clair si un langage est un langage de script. Mais considérez qu'une VM peut émuler le jeu d'instructions x86, par exemple. Cela ne ferait-il pas du bytecode x86 un langage de script lorsqu'il est exécuté sur une machine virtuelle? Et si quelqu'un écrivait un compilateur qui transformerait le code Perl en un exécutable natif? Dans ce cas, je ne saurais plus comment appeler la langue elle-même. Ce serait la sortie qui importerait, pas la langue.
Là encore, je ne suis pas au courant que quoi que ce soit de tel ait été fait, donc pour l'instant je suis toujours à l'aise d'appeler des langages de script interprétés.
Un script est un programme relativement petit . Un système est un programme relativement important ou une collection de programmes relativement importants.
Certains langages de programmation sont conçus avec des fonctionnalités que le concepteur de langage et la communauté de programmation considèrent comme utiles lors de l'écriture de programmes relativement petits. Ces langages de programmation sont connus sous le nom de langages de script , par exemple PHP.
De même, d'autres langages de programmation sont conçus avec des fonctionnalités que le concepteur de langage et la communauté de programmation considèrent comme utiles lors de l'écriture de programmes relativement volumineux. Ces langages de programmation sont appelés langages système , par exemple Java.
Désormais, les programmes petits et grands peuvent être écrits dans n'importe quelle langue. Un petit programme Java est un script. Par exemple, un programme Java "Hello World" est un script, pas un système. Un grand programme, ou une collection de programmes, écrit en PHP est un système. Par exemple, Facebook, écrit en PHP, est un système, pas un script.
Considérer une fonctionnalité de langage unique comme un «test décisif» pour décider si le langage est le mieux adapté à la programmation de scripts ou de systèmes est discutable. Par exemple, les scripts peuvent être compilés en code octet ou en code machine, ou ils peuvent être exécutés par interprétation directe de l'arbre de syntaxe abstraite (AST).
Ainsi, un langage est un langage de script s'il est généralement utilisé pour écrire des scripts . Un langage de script peut être utilisé pour écrire des systèmes, mais de telles applications sont susceptibles d'être considérées comme douteuses.