web-dev-qa-db-fra.com

Quand une langue est-elle considérée comme un langage de script?

Qu'est-ce qui fait qu'un langage est un langage de script? J'ai entendu certaines personnes dire "quand il est interprété au lieu de compilé". Cela ferait de PHP (par exemple) un langage de script. Est-ce le seul critère? Ou existe-t-il d'autres critères?

Voir également:

107
Sietse

Un langage de script est un langage qui "écrit" d'autres choses à faire. L'objectif principal n'est pas principalement de créer vos propres applications, mais plutôt de faire en sorte qu'une application existante agisse comme vous le souhaitez, par exemple. JavaScript pour les navigateurs, VBA pour MS Office.

52
moffdub

Simple. Quand je l'utilise, c'est un langage dynamique moderne, quand vous l'utilisez, c'est simplement un langage de script!

93
Martin Beckett

Traditionnellement, quand on parle de script par rapport à la programmation, les scripts sont interprétés et les programmes compilés. Un langage peut être exécuté de différentes manières - interprété ou compilé (en bytecode ou code machine). Cela ne fait pas un langage l'un ou l'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++ vont script les objets de 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 tiré de l'article 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 principal 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 de code source ou de 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 aux applications qu’ils contrôlent.

Vous remarquerez l'utilisation de "habituellement", "souvent", "traditionnellement" et "presque toujours" - ils vous disent tous qu'il y a non réglé d'attributs distincts qui font d'un langage spécifique un "langage de script".

41
Oded

"Un script, c'est ce que vous donnez aux acteurs. Un programme, c'est ce que vous donnez au public." - Larry Wall

Je pense vraiment qu'il n'y a plus beaucoup de différence. Les langages de "script" sont souvent compilés - très rapidement et au moment de l'exécution. Certains 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 attardez pas dessus, ce n'est vraiment pas important.

31
Clinton Pierce

Ma définition serait un langage qui est généralement distribué comme source plutôt que comme binaire.

25
kenny

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. C’est davantage une question de savoir quels traits font de certains langages de programmation un langage de script, alors 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 soit XYZ "scripting", "programmation fonctionnelle", "programmation orientée objet" ou autre. 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 en train de programmer styles; vous pouvez écrire dans un style fonctionnel ou orienté objet dans pratiquement toutes les langues. Par exemple, le commutateur de système de fichiers virtuel Linux et le modèle de pilote Linux sont fortement orientés objet, même s'ils sont écrits en C, tandis qu'un grand nombre de Java ou C # que vous voyez sur le Web est très procédural et pas orienté objet du tout. OTOH, j'ai vu du code très fonctionnel Java).

Ainsi, si la programmation fonctionnelle et la programmation orientée objet ne sont que des styles pouvant être créés dans le langage tout, comment définir un "langage de programmation orienté objet"? Vous pourriez dire qu'un langage de programmation orienté objet est un langage qui permet une 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 vraiment une définition, non plus: tous les langages permettent la programmation fonctionnelle, donc no le langage 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 scripting (programmation orientée objet/programmation fonctionnelle), c'est-à-dire non seulement permet cela mais le rend facile et naturel et contient des fonctionnalités qui aide avec elle, ET
  • encourage et guides vous dirigez vers le scripting (programmation orientée objet/programmation fonctionnelle).

Ainsi, 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 "script".

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 les scripts, les deux le terme "scripts" "et le terme" langage de script "sont mal définis.

Tout d’abord, l’écriture de scripts est programmation. C'est juste une sorte de programmation spéciale. 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, ce qui fait que les scripts sont des 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,
  • avoir 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, des répertoires et des 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 à la sortie du script: leur durée de vie est totalement indépendante du script. Et ils ne font pas vraiment partie du script, ils font également partie du système. Vous n’avez pas commencé votre script en écrivant File et Directory classes, ces types de données ne vous concernent pas: vous supposez simplement qu’ils sont là et vous ne le savez même pas besoin pour savoir) comment ils fonctionnent. Et vous n'implémentez pas non plus vos propres algorithmes, par exemple. pour traverser les répertoires, 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 vaste qui existe indépendamment du script, manipule une petite partie du système puis se ferme.

Ce système plus important peut être le système d’exploitation dans le cas d’un script Shell, le DOM du navigateur dans le cas d’un script de navigateur, un jeu (par exemple, World of Warcraft avec Lua ou Second Life avec le langage de script Linden), une application (par exemple, AutoLisp). pour les macros AutoCAD ou Excel/Word/Office), un serveur Web, un pack de robots ou autre.

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 faiblement typé, typé de manière statique ou dynamique, nominalement, structurellement ou de type canard, mais il peut même être non typé. . Cela 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, à typage strict, avec une implémentation compilée.

Cependant, tout cela n'a plus de raison d'être, car la façon dont le terme langage de script est vraiment utilisé dans le monde réel n'a rien à voir avec ce qui précède. Il est le plus souvent utilisé simplement comme une insulte, et la définition est plutôt simple, voire simpliste:

  • réel langage de programmation: mon langage de programmation
  • langage de script: votre langage de programmation

Cela semble être la façon dont le terme est le plus souvent utilisé.

16
Jörg W Mittag

C'est comme le porno, tu le sais quand tu le vois. La seule définition possible d'un langage de script est la suivante:

A language which is described as a scripting language.

Un peu circulaire, n'est-ce pas? (Au fait, je ne plaisante pas).

Fondamentalement, rien ne fait d’un langage un langage de script, si ce n’est qu’on l’appelle tel, en particulier de ses créateurs. Les principaux langages de script modernes sont 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, j’oublie ce que c’est, mais j’ai été surpris d’apprendre que c’était avant Tcl).

Je décris les caractéristiques des principaux langages de script en 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 de manière dynamique 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 mise en 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 bien un. Donc Factor est un langage de script (ou du moins c'était quand cela a été écrit), mais, disons, Java n'est pas.

16
Paul Biggar

Le "langage de script" fait partie 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 qui vous conduit 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. De plus, souvent (mais pas toujours) les langages de script sont dynamiquement saisis.

5
Grey Panther

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 du langage, il fait référence au type sage du langage. 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 scripts), alors c’est un langage de script.

5
Joren

Une division est

  • script = interprété dynamiquement
  • normal = compilé

Un langage interprété dynamiquement est interprété à l'exécution, tandis qu'un langage compilé est compilé avant exécution.

Je devrais ajouter que, comme Jörg l’a souligné, la distinction interprété/compilé n’est pas une caractéristique du langage, mais du moteur d’exécution.

Vous pourriez également être intéressé par cette explication de Système de types , qui est liée 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 de manière dynamique, alors que les langages "normaux" sont principalement typés de manière statique.

En général, la division des langages statiques et dynamiquement typés est mieux définie et a plus d’incidences sur la facilité d’utilisation du langage.

4
Timo Westkämper

Je pense que M. Roberto Ierusalimschy a une très bonne réponse ou la question dans "Programmation en Lua":

Cependant, la particularité des langages interprétés n'est pas qu'ils ne sont pas compilés, mais que tout compilateur fait partie de l'exécution du langage et qu'il est donc possible (et facile) d'exécuter du code généré à la volée.

4
Rodrigo Lopez

Premier point, un langage de programmation n'est pas un "langage de script" ou autre chose. Ce 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 pas "Quelle est la différence entre un langage de script et un langage de programmation?". Il n'y a pas entre.

Pourtant, je considérerai un langage comme un langage de script s’il est utilisé pour fournir une sorte de middleware. Par exemple, je considérerais que la plupart des implémentations de JavaScript sont un langage de script. Si JavaScript était exécuté dans le système d'exploitation, pas dans le navigateur, il ne s'agirait pas d'un langage de script. Si PHP s'exécute dans Apache, il s'agit d'un langage de script. S'il est exécuté à partir de la ligne de commande, il ne l'est pas.

3
Marcus Adams

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 pense que cet argument est complètement faux ... pourquoi?

  1. Chakra & V8 (les moteurs JavaScript de Microsoft et de Google) compilent le code avant exécution
  2. QBasic est interprété - cela fait-il de Qbasic un langage de "script"?

Sur cette base, voici mon argument en faveur de 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 basé sur un 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.

3
series0ne

Les langages de script étaient initialement conçus comme des mécanismes de contrôle pour les applications écrites dans un langage de programmation strict. Les programmes compilés ne pouvant pas être modifiés au moment de l'exécution, les scripts offrent aux utilisateurs une plus grande flexibilité.

Plus particulièrement, le script Shell automatisait les processus du noyau du système d'exploitation (traditionnellement AppleScript sur Mac); un rôle qui passait de plus en plus dans les mains de Perl, puis en sortait dans Python récemment. J'ai vu Scheme (en particulier dans son implémentation de 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 script - au point que le moteur graphique/physique est la seule chose codée en dur dans de nombreux nouveaux jeux, alors que toute la logique du jeu est codée en Lua. pensé pour écrire le comportement d’un navigateur Web.

Les langues émancipées; personne ne pense maintenant au système d'exploitation en tant qu'application (ou y pense beaucoup), et de nombreux langages de script ont commencé à être utilisés pour écrire leurs propres applications complètes. Le nom lui-même est devenu sans signification et s'est étendu à de nombreux langages interprétés utilisés de nos jours, qu'ils soient conçus pour être interprétés à partir d'un autre système ou non.

Cependant, "langages de script" n'est en aucun cas synonyme de "langages interprétés" - par exemple, le langage BASIC a été interprété presque toute sa vie (c'est-à-dire avant de perdre son acronimicité et de devenir Visual Basic), mais personne ne le pense vraiment. script.

UPDATE: Lire le contenu normalement disponible sur Wikipedia .

3
Amadan

Je vois dans un langage de script tout ce qui n’exige pas une étape de compilation. La principale caractéristique du point de vue des programmeurs est la suivante: vous modifiez le code et le lancez immédiatement.

Ainsi, je considérerais que JavaScript et PHP) sont des langages de script, alors que ActionScript / Flex n'est pas vraiment.

3
Scott Evernden

Un langage de script est typiquement:

  1. Dynamiquement tapé
  2. Interprété, avec très peu d'emphase sur la performance, mais bonne portabilité
  3. Requiert beaucoup moins code standard , conduisant à un prototypage très rapide
  4. Est utilisé pour les petites tâches, convient à l'écriture d'un seul fichier pour exécuter un "script" utile.

Tandis qu'un langage sans script est généralement: 1. Typiquement compilé 2. Compilé, en mettant l'accent sur les performances 3. Nécessite plus de code passe-partout, ce qui entraîne un prototypage plus lent mais une lisibilité accrue et une maintenabilité à long terme 4 Utilisé pour les grands projets, s'adapte à de nombreux modèles de conception

Mais il s’agit plutôt d’une différence historique de nos jours, à mon avis. Javascript et Perl ont été écrits avec des scripts simples et de petite taille, alors que C++ a été écrit avec des applications complexes. mais les deux peuvent être utilisés dans les deux sens. Et de nombreux langages de programmation, qu’ils soient modernes ou anciens, brouillent de toute façon la ligne (et c’était flou au départ!).

Ce qui est triste, c’est que j’ai connu quelques développeurs qui répugnent à ce qu’ils perçoivent comme des "langages de script", les trouvant plus simples et moins puissants. Mon opinion est que vieux cliché - utiliser le bon outil pour le travail.

3
Oak

Permettez-moi de suggérer que les langages de script ont été 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-votre-langue-préférée , la différence est encore plus floue).

Pour être honnête, personnellement, je ne pense pas que PHP soit un langage de script. Je ne m'attendrais pas à ce que les gens aiment catégoriser PHP différemment de dire Java sur leur CV.

2
Robert Gould

Je vais juste aller de l'avant et migrer ma réponse 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 "script" 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 se dit: "Hé, si on laisse le navigateur lire et exécuter de petites commandes dans la page?" Et comme ça, Javascript était formé.

Une commande javascript simple est la commande alert(), qui indique/commande au navigateur (une application logicielle) qui lit la page Web pour afficher une alerte.

Maintenant, est-ce que alert() est lié, de quelque manière que ce soit, au C++ ou à tout autre langage de code utilisé par le navigateur utilise 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 est juste en train d'écrire 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, que celui-ci interprète lui-même. Le langage de programmation utilisé par le navigateur pour définir une variable sur 4 et le mettre dans une alerte ... il n’a aucun lien avec javascript.

Nous appelons cette dernière série de commandes un "script" (c'est pourquoi il est placé entre <script> Mots clés). Juste par la définition de "script", dans le sens traditionnel du terme: ne série d'instructions et de commandes envoyées aux acteurs. Tout le monde sait qu'un scénario (un script de film), par exemple, est un script.

Le scénario (script) est pas les acteurs, ou la caméra, ou les effets spéciaux. Le scénario leur dit simplement quoi faire.

Maintenant, qu'est-ce qu'un script language, exactement?

Il y a beaucoup de langages de programmation qui sont comme des outils différents dans une boîte à outils; certaines langues ont été conçues spécifiquement pour être utilisées comme scripts.

Javasript est un exemple évident. il existe très peu d'applications Javascript qui n'entrent pas dans le domaine des scripts.

ActionScript (le langage utilisé pour les animations Flash) et ses dérivés sont des langages de script, en ce sens qu'ils émettent simplement des commandes pour le lecteur/interprète Flash. Bien sûr, il existe des abstractions telles que la programmation orientée objet, mais tout cela n'est qu'un moyen d'arriver à la fin: envoyez des commandes au lecteur flash.

Python et Ruby sont aussi couramment utilisés comme langages de script. Par exemple, j’ai déjà travaillé pour une entreprise qui utilisait Ruby à des commandes de script à envoyer à un navigateur qui étaient sur les lignes de, "allez sur ce site, cliquez sur ce lien ..." pour faire des tests automatisés de base. J'étais pas un "développeur de logiciel" par tout moyen, à cet emploi .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 graphiques créées à partir de Python et Ruby sont des scripts envoyés à une API écrite en C++ ou en C.). Cela indique à l'application C quoi faire.

Il y a une ligne de vague, bien sûr. 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 se connecter à la carte mère/aux cartes/puces graphiques de base?

Il y a quelques lignes que nous pouvons tracer pour clarifier:

  1. Lorsque vous pouvez écrire un langage de script et l'exécuter sans "compiler", il s'agit davantage d'un script direct. Par exemple, vous n'avez rien besoin de faire avec un scénario pour dire aux acteurs quoi faire avec. C'est déjà là, utilisé, tel quel. Pour cette raison, nous allons exclure 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.

  2. Le langage de script implique des commandes envoyées à un logiciel 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 (relativement) des commandes simples à des applications logicielles complexes ... dans ce cas, le langage de la machine et le code d'assemblage ne le coupe pas.

2
Justin L.

Dans Mon opinion, 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 "script" 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 d’un système en une série de commandes cohérentes et connexes, telles que:

  1. copier A.txt dans/tmp/work /
  2. exécuter le processus de nettoyage nocturne sur le serveur de base de données
  3. enregistrer les résultats et les envoyer au sysdamin

Donc, je dirais que la différence (pour moi, en tout cas) réside davantage dans la façon dont vous tilisez 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.

La définition de "langage de script" est assez floue. Je me baserais sur les considérations suivantes:

  1. Les langages de script ne comportent 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.

  2. Les programmes dans les langages de script sont normalement transmis sous forme source.

  3. Les langages de script ont normalement des exécutions qui sont présentes sur un grand nombre de systèmes, et les exécutions peuvent être facilement installées sur la plupart des systèmes.

  4. Les langages de script ont tendance à être multi-plateformes et non spécifiques à une machine.

  5. Les langages de script facilitent l’appel d’autres programmes et l’interface avec le système d’exploitation.

  6. Les langages de script sont généralement facilement incorporables dans des systèmes plus grands écrits dans des langages de programmation plus conventionnels.

  7. Les langages de script sont normalement conçus pour faciliter la programmation et beaucoup moins pour la rapidité d'exécution. (Si vous voulez une exécution rapide, le conseil habituel est de coder les parties qui prennent beaucoup de temps en C, et d’intégrer le langage dans C ou d’appeler des bits C depuis le langage.)

Certaines des caractéristiques que j'ai énumérées ci-dessus sont vraies des implémentations, auquel cas je me réfère aux implémentations les plus courantes. Il y a eu des interprètes en C, avec (AFAIK) sans étape évidente de compilation, mais ce n'est pas le cas de la plupart des implémentations en C. Vous pouvez certainement compiler un programme Perl en code natif, mais ce n’est pas comme cela qu’il est normalement utilisé. Certaines autres caractéristiques sont de nature sociale. Certains des critères ci-dessus se chevauchent quelque peu. Comme je l'ai dit, la définition est floue.

1
David Thornley

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".

  • Perl est un langage de programmation!
  • Perl est compilé comme Java et C++. Il vient d'être compilé beaucoup plus rapidement!
  • Perl a des objets, des espaces de noms et des fermetures.
  • Perl a des IDE, des débogueurs et des profileurs.
  • Perl a une formation, un soutien et une communauté.
  • Perl n'est pas seulement Web. Perl n'est pas simplement un administrateur système. Perl n'est pas seulement le ruban adhésif d'Internet.

Pourquoi avons-nous même besoin de distinguer un langage comme Java qui est compilé et Ruby qui ne l'est pas?) Quelle est la valeur de l'étiquetage?

Pour plus d'informations à ce sujet, voir http://xoa.petdance.com/Stop_saying_script .

1
Andy Lester

Un langage de script est un langage qui configure ou étend un programme existant.
Un langage de script est un langage de programmation.

1
Romain Hippeau

Une différence importante est typage fort (versus typage faible ). Les langages de script sont souvent mal typés , ce qui permet d'écrire plus rapidement de petits programmes. Pour les gros programmes, c'est un inconvénient car cela empêche le compilateur/interprète de trouver certains bogues de manière autonome, ce qui rend très difficile la refactorisation du code.

1
Dimitri C.

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 pour les langages de script de pouvoir prendre en charge une session interactive dans laquelle les utilisateurs peuvent simplement saisir leur programme et le faire exécuter immédiatement. En effet, il s’agit d’une simple extension de l’exigence essentielle du premier paragraphe; La principale exigence supplémentaire est l'ajout d'un mécanisme permettant de déterminer le moment où une instruction saisie est terminée afin de pouvoir l'envoyer au moteur d'exécution.

1
Donal Fellows

Les langages de script ont tendance à s'exécuter dans un moteur de script faisant partie d'une application plus grande. Par exemple, JavaScript s'exécute dans le moteur de script de votre navigateur.

1
Martin OConnor

Pour une question légèrement différente sur 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 écrire un système. Ce système pourrait être un système d'exploitation où le langage de script serait bash. Le système pourrait être un serveur Web avec PHP le langage de script. Les langages de script sont conçus pour occuper un créneau spécifique; ce sont des langages spécifiques à un domaine. Les systèmes interactifs ont interprété des langages de script, ce qui donne à penser que les langages de script sont interprétés, mais il s’agit d’une conséquence du système et non du langage de script lui-même.

1
phreed

Un langage de script est un langage qui est interprété chaque fois que le script est exécuté, cela implique de disposer d'un interprète et 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 la mise en oeuvre d'un interpréteur ou d'un compilateur, à titre d'exemple, le C++ a un interpréteur qui peut donc être appelé un langage de script s'il est utilisé de la sorte (ce qui n'est 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 à l’heure actuelle est Python ...

Donc, pour répondre à votre question, la définition concerne l’utilisation d’un interprète pour exécuter des programmes scriptés simples et rapides, pour traiter des tâches simples ou des applications prototypes, l’utilisation la plus puissante des langages de script consiste à inclure la possibilité pour chaque utilisation d’étendre une application compilée.

1
Panic

Paraphrasant Robert Sebesta dans Concepts de langages de programmation :

Un langage de script est utilisé en plaçant une liste de commandes, appelée script, dans un fichier à exécuter. Le premier de ces langages, nommé sh (pour Shell), a débuté par une petite collection de commandes interprétées comme des appels à des sous-programmes système exécutant fonctions utilitaires, telles que la gestion de fichiers et le filtrage de fichiers simple. À cette base ont été ajoutées des variables, des statemens de flux de contrôle, des fonctions et diverses autres fonctionnalités. Le résultat est un langage de programmation complet.

Et puis vous avez des exemples comme AWK , Tcl/Tk, Perl (qui dit qu’il s’agissait à l’origine d’une combinaison entre sh et [~ # ~] awk [~ # ~] , mais il est devenu si puissant qu'il le considère comme un "langage de programmation étrange mais à part entière"). CGI et JavaScript sont d’autres exemples.

0
Eliseo Ocampos

J'ai toujours considéré les langages de script comme un moyen de communiquer avec une application ou un programme quelconque. En revanche, un langage compilé crée le programme lui-même.

Gardez maintenant à l’esprit qu’un langage de script ajoute ou modifie généralement le programme créé à l’origine avec un langage compilé. Ainsi, cela peut certainement faire partie d'une image plus grande, mais les fichiers binaires initiaux sont d'abord créés avec un langage compilé.

Je pouvais donc créer un langage de script permettant aux utilisateurs d’effectuer diverses actions ou de personnaliser mon programme. Mon programme interprétait le code scripté et appelait à son tour une sorte de fonction. Ceci est juste un exemple de base. Cela vous donne simplement le moyen d'appeler de manière dynamique les routines dans le programme.

Mon programme devrait analyser le code de script (vous pouvez les appeler des commandes) et exécuter toute action prévue en temps réel.

Je vois que cette question a déjà reçu une réponse à plusieurs reprises, mais je pensais ajouter ma façon de voir les choses. Certes, certaines personnes peuvent ne pas être d'accord avec cette réponse, mais cette façon de penser m'a toujours aidé.

0
Daniel Eagle

Un script est un programme relativement petit . Un système est un programme relativement volumineux ou un collection de programmes relativement volumineux.

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 la rédaction de programmes relativement petits. Ces langages de programmation sont appelés 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 la rédaction de programmes relativement volumineux. Ces langages de programmation sont appelés langages systèmes , par exemple. Java.

Maintenant, petits et grands programmes 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 et non un système. Un programme volumineux, ou une collection des programmes, écrits en PHP est un système. Par exemple, Facebook, écrit en PHP, est un système, pas un script.

Considérer une fonctionnalité linguistique unique comme un "test décisif" permettant de déterminer si la langue est la mieux adaptée à la programmation par scripts ou à la programmation système est discutable. Par exemple, les scripts peuvent être compilés en code octet ou en code machine, ou ils peuvent être exécuté par interprétation directe de l’arbre de syntaxe abstraite (AST).

Donc, n 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.

0
Greg Mattes

L'essai le plus connu écrit sur le sujet par une source digne de mention que je connaisse s'appelle dichotomie de Ousterhout . Il est hautement critiqué comme étant assez arbitraire et souvent considéré comme une fausse dichotomie d’Ousterhout. Cela étant dit dans une discussion sur le sujet, il mérite une citation.

Personnellement, je conviens qu’il s’agit d’une fausse dichotomie et que je ne ferais confiance à personne qui répond à cette question et se propose d’avoir des propriétés précises sur ce qui définit un langage de script. Les commentaires tels que "un langage de script doit être typé dynamiquement" sont faux et les commentaires tels que "les langages de script doivent être interprétés" "n'a même pas de sens, car contrairement à la croyance populaire, la compilation par opposition à l'interprétation n'est pas du tout une propriété du langage.

Les gens ont mentionné plus haut beaucoup de propriétés qui correspondent approximativement aux langages de script. Heureusement, la plupart d’entre elles expliquent correctement que ce terme n’a pas de définition précise. Donc, je ne vais pas dupliquer mes idées de ce qu'ils sont ici. D'après mon expérience, les gens considèrent un langage comme un langage de script s'ils peuvent facilement écrire quelques programmes à jeter rapidement sans écrire beaucoup de problèmes. Je réponds surtout pour vous donner la citation à Ousterhout que je ne vois pas ici.

0
mmachenry

Si ce n'est pas le cas /ne serait pas exécuter sur le processeur, c'est un script pour moi. Si un interprète doit s’exécuter sur la CPU sous le programme, il s’agit d’un script et d’un langage de script.

Aucune raison de compliquer les choses?

Bien sûr, dans la plupart des cas (99%), il est clair si une langue est un langage de script. Mais considérez qu’un VM peut émuler le jeu d’instructions x86, par exemple. Cela ne ferait-il pas que le bytecode x86 devienne un langage de script s’il est exécuté sur une machine virtuelle? Dans ce cas, je ne saurais plus comment appeler la langue elle-même: ce serait la sortie qui importait, pas la langue.

Encore une fois, je ne suis au courant de rien de tel qui a été fait, donc pour le moment je suis encore à l'aise d'appeler des langages de script interprétés.

0
anon6439

Un langage de script est un langage de programmation utilisé pour manipuler, personnaliser et automatiser les fonctionnalités d'un système existant. Dans de tels systèmes, des fonctionnalités utiles sont déjà disponibles via une interface utilisateur et le langage de script est un mécanisme permettant d’exposer cette fonctionnalité au contrôle des programmes. De cette manière, le système existant est réputé fournir un environnement hôte d'objets et d'installations, complétant ainsi les capacités du langage de script. Un langage de script est destiné à être utilisé par les programmeurs professionnels et non professionnels.

référence

http://www.ecma-international.org/publications/files/ECMA-ST/Ecma-262.pdf

0
Shoib Mohammed A

En bref, les langages de script ont les propriétés suivantes:

  1. Basé sur interprète.
  2. La syntaxe facile. Il est très facile d’utiliser les fichiers d’accès aux répertoires dans python, par comparaison avec Java.
  3. Généralement utilisé pour écrire moins de lignes de codes.
  4. Pratique pour écrire des codes d'automatisation.
  5. Langues de très haut niveau.

Ex .: Javascript,python,VBA.

0
Shobhit_Geek

Je dirais que le langage de script est celui qui manipule lourdement des 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, etc.). Bien sûr, pas de définition précise, mais plutôt une façon de penser.

0
Michael Pliskin

juste pour breif

Les langages de script fonctionnent dans un autre programme. Les langages de script ne sont pas compilés. Les langages de script sont faciles à utiliser et à écrire. mais …

Les langages de programmation très populaires (Java, C #) s’exécutent dans un programme "parent", comme les langages de script. Les langages de script sont aujourd'hui utilisés pour construire des logiciels complexes. Les ordinateurs sont si rapides de nos jours et les langages de script sont si efficaces que, pour la plupart des opérations commerciales, il n’ya aucun avantage en termes de rapidité pratique (qu’il était autrefois) avec un langage de programmation compilé.

0
Srikanth Naidu

En outre, vous pouvez vérifier ce podcast sur les langages de script .

0
none

Vos critères ont l'air correct, mais sont toujours un peu flous. Par exemple, Java est à la fois compilé (en bytecode) puis interprété (par la JVM). Pourtant, il n’est normalement pas classé comme langage de script.

Cela peut être dû au fait que Java est typé statiquement), alors que JavaScript, Ruby, Python, Perl, etc. ne le sont pas (tous sont souvent appelés langages de script).

0
Einar

Comme quelqu'un l'a noté, un langage compilé ou interprété n'existe pas, n'importe quel langage pouvant être compilé ou interprété. Mais les langages traditionnellement interprétés plutôt que compilés (Python, Perl, Ruby, PHP, JavaScript, Lua) sont également ceux que les gens ont tendance à appeler des langages de script. Il est donc relativement raisonnable de dire qu'un langage de script est un langage généralement interprété plutôt que compilé. Les autres caractéristiques communes aux langages de script sont liées au fait qu'elles sont interprétées.

Les langages de script sont vraiment un sous-ensemble des langages de programmation; Je ne pense pas que la plupart des gens prétendent que les langages mentionnés précédemment ne sont pas aussi des langages de programmation.

0
kerkeslager