web-dev-qa-db-fra.com

Comprendre la langue de script

Cité de Wikipedia :

Un langage de script, une langue de script ou une langue d'extension est un langage de programmation qui permet de contrôler une ou plusieurs applications et . Le compilateur de la partie linguistique de la langue d'exécution et, par conséquent, permet de générer du code de manière dynamique . Les "scripts" sont distincts du code central 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 du code source ou du bytecode, tandis que l'application est généralement compilée au code de machine natif.

  1. Je me demandais ce que "active le code à générer de manière dynamique" signifie? N'est pas un code dans une langue de script écrit avant d'être exécuté, alors comment est-il généré de manière dynamique?
  2. Par définition, une langue de script est-elle toujours une langue interprétée? Inversement, une langue interprétée est-elle toujours une langue de script? Ils semblent être très proches, voire la même chose.
  3. Comment est une langue non-script?
9
Tim

Il n'y a pas de norme technique qui définit une langue de script. C'est juste un mot qui est défini par une utilisation courante et comme tout autre mot en usage commun, rien ne garantit que tous les usages sont cohérents. S'attaquer à vos questions spécifiques:

  1. La génération de code dynamique dont ils parlent sont du code de la machine. Dans une langue interprétée classique (Pensez l'interpréteur de base), chaque fois qu'une ligne d'un script est exécutée, cette ligne est traduite sur la tache en code de machine natif. Il est plus compliqué maintenant, car de nombreuses langues de script seront traduites en code octet pour une machine virtuelle et que le code d'octet peut être mis en cache.

  2. C'est là que cela devient très flou et change avec le temps. Dans Ye Olden Days, chaque langue de script était une langue interprétée classique. De nos jours, de nombreux articles d'octets d'utilisation, des machines virtuelles et peuvent utiliser des compilateurs juste à temps. À ce stade, la ligne entre les langues interprétées et les langues compilées est floue. Néanmoins, je ne connais aucune langue couramment appelée une langue de script compilée dans le sens classique d'une conversion d'une fois en code machine natif.

  3. Les langues couramment appelées langues de script fournissent généralement une suite de structures de données de haut niveau telles que des ensembles, des listes et des dictionnaires, ainsi que des fonctionnalités telles que des expressions régulières. Il existe des langues interprétées qui ne fournissent pas ces fonctionnalités de haut niveau et elles ne sont généralement pas appelées langues de script. Je ne pense pas que beaucoup de gens se réfèrent à interprété de base ou même UCSD Pascal en tant que langage de script.

11
Charles E. Grant

Charles E. Grant frappe le clou sur la tête, mais j'aimerais ajouter quelque chose. D'un point de vue pratique, les langages de script sont (principalement) où vous n'avez pas à configurer un processus de construction pour obtenir une solution en cours d'exécution. Donc, vous pouvez simplement saisir un éditeur de texte, tapez votre perl/Python/Ruby/bash/vbscript/awk/[... Ajoutez votre langue de script préférée ici ..] Code Là, enregistrez-le dans un fichier et l'exécuter. Cela facilite également la création de programmes qui génère un code de script de manière dynamique sur votre machine d'utilisateurs et exécuter ce code, ce que l'on entend par la déclaration Wikipedia que vous avez citée.

Lorsque vous utilisez des langues telles que C/C++/Java/FORTRAN/COBOL/Pascal/[... Ajoutez votre langue non-script préférée ici ...] Vous devez généralement créer une étape de compilation/liaison Avant d'obtenir quelque chose d'exécutable de votre code source. Dans de nombreux scénarios, l'utilisateur n'a pas de compilateur pour ces langues sur sa machine. Vous ne pouvez donc pas écrire facilement des programmes qui créent d'autres programmes dans la même langue à la volée et exécutent ceux de la machine d'utilisateurs. Il y a bien sûr des langues qui ne sont pas considérées comme des langues de script où cela est possible soit (comme c # et vb.net, je ne suis pas sûr de Java), mais comme Charles E. Grant a écrit, la ligne entre ces catégories est floue .

À votre question sur "Langues interprétées": à ma compréhension, ce qui se passe dans les coulisses n'est pas importante pour la distinction entre les langages de script et de non-script. Peu importe que votre environnement d'exécution interprète directement le code source, ou si elle le compare à un code d'octet, qui peut être compilé juste à temps au code de la machine. Tant que l'environnement vous fait "ressentir", il exécute votre code source directement sans qu'il soit nécessaire de mettre en place une étape de construction, c'est une langue de script.

5
Doc Brown

Voici ma définition du script, j'espère que cela peut vous aider à comprendre.

Script - est une solution rapide pour un problème simple. Certains exemples sont les suivants: Script de déploiement (copies applications des fichiers d'application vers les endroits requis, les services de redémarrage), le script d'analyse de journal, etc. La performance n'a pas d'importance ici, possibilité d'écrire et de modifier rapidement le script - c'est des questions. Donc, la langue de script est la langue appropriée pour écrire des scripts.

Je me demandais ce que "active le code à générer de manière dynamique" signifie? N'est pas un code dans une langue de script écrit avant d'être exécuté, alors comment est-il généré de manière dynamique?

"Permet de générer du code de manière dynamique" signifie que sur la langue de script, vous pouvez faire quelque chose comme eval("print 'hello world! ")`.

Par définition, une langue de script est-elle toujours une langue interprétée? Inversement, une langue interprétée est-elle toujours une langue de script? Ils semblent être très proches, voire la même chose.

Oui, sorte de. Mais, de nombreuses langues de script modernes ne sont pas strictement interprétées. Par exemple. python génère de la part de la source. Ce n'est pas un code de machine, mais il existe toujours une phase de compilation.

Comment est une langue non-script?

Toute langue qui ne permet pas d'écrire un-liners est la non-script. Par exemple. Vous ne pouvez pas écrire une application C sans fonction principale () ou Java application sans écrire une classe unique. Mais vous pouvez le faire avec Python, qui est entièrement orienté objet, mais permet d'écrire simple programmes sans fonctions ou classes.

3
rvs

La première question à répondre, quel est un script (et comment va-t-il différer d'un programme).

Un script est une séquence prédéfinie de commandes qui ne nécessite généralement aucune interaction avec la console (et sans aucune interface utilisateur du tout). Un langage de script est une langue qui soutient les scripts. En général, toute langue peut faire ce qu'un langage de script fait, mais ils ne sont pas nécessairement interprétés (par exemple, un script AWK pourrait être converti en C).

3
James McLeod