Langage de script vs langage de programmation

347

Quelqu'un peut-il expliquer la différence entre le langage de script et le langage de programmation s'il vous plaît?
Pouvez-vous également citer quelques exemples pour chacun. J'ai beaucoup googlé mais je trouve toujours les meilleures réponses de Stack Overflow.

Rahul Reddy
la source

Réponses:

466

Les langages de script sont des langages de programmation qui ne nécessitent pas d'étape de compilation explicite.

Par exemple, dans le cas normal, vous devez compiler un programme C avant de pouvoir l'exécuter. Mais dans le cas normal, vous n'avez pas besoin de compiler un programme JavaScript avant de l'exécuter. Ainsi, JavaScript est parfois appelé langage de "scripting".

Cette ligne devient de plus en plus floue car la compilation peut être si rapide avec du matériel moderne et des techniques de compilation modernes. Par exemple, V8, le moteur JavaScript de Google Chrome et utilisé beaucoup en dehors du navigateur, compile en fait le code JavaScript à la volée dans le code machine, plutôt que de l'interpréter. (En fait, V8 est un compilateur optimisé à deux phases.)

Notez également que le fait qu'un langage soit un langage de "scripting" ou non peut être davantage lié à l'environnement qu'au langage. Il n'y a aucune raison pour laquelle vous ne pouvez pas écrire un interpréteur C et l'utiliser comme langage de script (et les gens l'ont). Il n'y a également aucune raison pour laquelle vous ne pouvez pas compiler JavaScript en code machine et le stocker dans un fichier exécutable (et les gens l'ont). Le langage Ruby en est un bon exemple: l'implémentation d'origine a été entièrement interprétée (un langage de "scripting"), mais il existe maintenant plusieurs compilateurs pour cela.

Quelques exemples de langages de "scripting" (par exemple, les langages qui sont traditionnellement utilisés sans étape de compilation explicite):

  • Lua
  • Javascript
  • VBScript et VBA
  • Perl

Et un petit aperçu de ceux traditionnellement utilisés avec une étape de compilation explicite:

  • C
  • C ++
  • Java (mais notez que Java est compilé en bytecode, qui est ensuite interprété et / ou recompilé au moment de l'exécution)
  • Pascal

... et puis vous avez des choses comme Python qui se trouvent dans les deux camps: Python est largement utilisé sans étape de compilation, mais l'implémentation principale (CPython) le fait en compilant en bytecode à la volée puis en exécutant le bytecode dans un VM, et il peut écrire ce bytecode dans des fichiers ( .pyc, .pyo) pour une utilisation sans recompilation.

Ce n'est que très peu, si vous faites des recherches, vous pouvez en trouver beaucoup plus.

TJ Crowder
la source
1
Excellente explication!
Gladiator
48
@ mg30rg: Heh - les scripts peuvent totalement être de la "vraie" programmation. (Vous ne croiriez pas certains des scripts bash que j'ai vus ...) Je pense que la façon la plus simple de le définir (et encore une fois, ce n'est pas un langage, c'est un environnement) est: l'environnement d'exécution voir le code source? Si c'est le cas, je l'appellerais "scripting"; sinon, je ne le ferais pas. Donc, dans ce sens, le JavaScript basé sur un navigateur est un "script" car même si des moteurs comme V8 le compilent à la volée, la source est toujours livrée à l'environnement d'exécution. Coquille également les scripts. La source d'un programme C traditionnel n'est pas livrée au runtime.
TJ Crowder
2
@ mg30rg: Mais encore une fois, ces lignes deviennent toujours plus floues. :-) Considérez le bytecode Java. Vous ne pouvez pas l'exécuter sans JVM, mais ce n'est pas du code source. (Il peut généralement être transformé en code source d'aspect raisonnable par un décompilateur, mais ...) Je ne pense pas (à distance) à Java dans un environnement traditionnel comme un langage de script. Mais ensuite, je ne passe pas non plus beaucoup de temps à penser aux catégories. :-)
TJ Crowder
2
@ CME64: Non, l'implémentation principale (CPython) se compile en bytecode à la volée et exécute le bytecode dans une VM. Bien qu'il existe des outils Python-to-C (Cython et Pyrex), ce n'est généralement pas ainsi que Python est exécuté.
TJ Crowder
2
À la défense de @ Vityata, VBScript est écrit dans le Bloc-notes et interprété comme une entrée de texte, tandis que le code VBA est compilé en P-Code lorsque vous le tapez dans l'éditeur , c'est-à-dire le code source que vous voyez dans l'éditeur après avoir modifié une ligne de code, n'est pas le code que vous avez tapé, mais le rendu par le VBE du code P sous-jacent: la mécanique de VBA vs VBScript est complètement et complètement différente, et les regrouper dans cette liste ne semble tout simplement pas correct. VBA est beaucoup plus proche de VB6 que de VBScript; ce n'est qu'une restriction explicite qui l'empêche de construire un exécutable autonome.
Mathieu Guindon
103

Pour comprendre la différence entre un langage de script et un langage de programmation, il faut comprendre pourquoi les langages de script sont nés.

Initialement, il y avait des langages de programmation qui ont été écrits pour construire des programmes comme Excel, Word, navigateurs, jeux, etc. Ces programmes ont été construits avec des langages comme c et java. Au fil du temps, ces programmes avaient besoin d'un moyen pour les utilisateurs de créer de nouvelles fonctionnalités, ils ont donc dû fournir une interface à leur bytecode et donc les langages de script sont nés.

Un langage de script n'est généralement pas compilé et peut donc s'exécuter dès que vous écrivez quelque chose de significatif. Par conséquent, Excel peut être construit à l'aide de C ++, mais il expose un langage de script appelé VBA pour que les utilisateurs définissent les fonctionnalités. De même, les navigateurs peuvent être construits avec C ++ / Java mais ils exposent un langage de script appelé javascript (sans aucun lien avec java). Les jeux sont généralement construits avec C ++ mais exposent un langage appelé Lua pour que les utilisateurs définissent des fonctionnalités personnalisées.

Un langage de script se trouve généralement derrière un langage de programmation. Les langages de script ont généralement moins accès aux capacités natives des ordinateurs car ils s'exécutent sur un sous-ensemble du langage de programmation d'origine. Un exemple ici est que Javascript ne pourra pas accéder à votre système de fichiers. Les langages de script sont généralement plus lents que les langages de programmation.

Bien que les langages de script puissent avoir moins d'accès et soient plus lents, ils peuvent être des outils très puissants. Un facteur attribuant au succès des langages de script est la facilité de mise à jour. Vous souvenez-vous des jours des applets java sur le web, voici un exemple d'exécution d'un langage de programmation (java) vs exécution d'un langage de script (javascript). À l'époque, les ordinateurs n'étaient pas aussi puissants et le javascript n'était pas aussi mature que les applets Java dominaient les scènes. Mais les applets Java étaient ennuyeuses, elles obligeaient l'utilisateur à trier et à compiler le langage. Aujourd'hui, les applets Java sont presque éteintes et Javascript domine la scène. Javascript est extrêmement rapide à charger car la plupart des composants du navigateur ont déjà été installés.

Enfin, les langages de script sont également considérés comme des langages de programmation (bien que certaines personnes refusent de l'accepter) - le terme que nous devrions utiliser ici est langages de script vs langages compilés.

Yang Li
la source
4
Ne pensez-vous pas que vous vouliez dire: "langages interprétés vs langages compilés" au lieu de "langages de script vs langages compilés" ??
bitsapien
6
"Un exemple ici est que Javascript ne pourra pas accéder à votre système de fichiers", Nodejs dit bonjour
Mohammad
@Mohammad NodeJS est un runtime qui permet aux codeurs d'utiliser Javascript comme "langue" pour le codage. NodeJS n'est pas 100% Javascript.
JeffNhan
65

Tous les langages de script sont des langages de programmation.

Les langages ne sont pas classés comme script ou non - cela dépend entièrement de l'environnement d'exécution.

Si l'environnement est un environnement qui est interprété, il est communément appelé environnement de script.

Oded
la source
18

Les différences deviennent de moins en moins importantes. Traditionnellement, les langages de script étendent les programmes existants ... Je pense que la principale définition du "script" est qu'il se réfère à l'écriture d'un ensemble d'instructions à exécuter par une entité existante. Cependant, lorsque les langages de script ont commencé avec une syntaxe propriétaire et familière, la plupart des langages courants de nos jours doivent une certaine relation à C.

Je pense que la distinction "interprété vs compilé" est vraiment un symptôme d'extension d'un programme existant (avec un interpréteur intégré), plutôt qu'une différence intrinsèque. Ce qui préoccupe le plus les programmeurs et les profanes, c'est "que fait le programmeur?" Le fait qu'un programme soit interprété et qu'un autre soit compilé signifie très peu pour déterminer la différence d'activité du créateur. Vous ne jugez pas un dramaturge sur le point de savoir si ses pièces sont plus souvent lues à haute voix ou jouées sur scène, n'est-ce pas?

Eric Barker
la source
12

Langage de programmation: est compilé en code machine et exécuté sur le matériel du système d'exploitation sous-jacent.

Langage de script: sous-ensemble de déstructure du langage de programmation. Il est généralement interprété. il "écrit" essentiellement d'autres choses à faire. L'objectif principal n'est pas principalement de créer vos propres applications, mais d'obtenir une application existante pour agir comme vous le souhaitez, par exemple JavaScript pour les navigateurs, TCL, etc.,

*** Mais il y a des situations où un langage de programmation est converti en interprète et vice-versa comme l'utilisation ont un interpréteur C où vous pouvez «C» Script. Les scripts sont généralement écrits pour contrôler le comportement d'une application alors que le langage de programmation est utilisé pour créer des applications. Mais attention, la démarcation brouille de jour en jour comme exemple de Python cela dépend de la façon dont on utilise le langage.

saikumarm
la source
10

Les langages de script sont un sous-ensemble des langages de programmation.

  1. Les langages de script ne sont pas compilés en code machine par l'utilisateur (python, perl, shell, etc.). Au contraire, un autre programme (appelé l'interpréteur, exécute le programme et simule son comportement)
  2. Certains langages de programmation qui ne sont pas des scripts (C, C ++, Haskell et autres langages «compilés») sont compilés en code machine et sont ensuite exécutés.
jh314
la source
5

Je pense que ce que vous dites comme la "différence" est en fait une conséquence de la vraie différence.

La différence réelle est la cible du code écrit. Qui va exécuter ce code.

Un langage de script est utilisé pour écrire du code qui va cibler un système logiciel. Il va automatiser les opérations sur ce système logiciel. Le script va être une séquence d'instructions au système logiciel cible.

Un langage de programmation cible le système informatique, qui peut être une machine réelle ou virtuelle. Les instructions sont exécutées par la machine.

Bien sûr, une vraie machine ne comprend que le code binaire, vous devez donc compiler le code d'un langage de programmation. Mais c'est une conséquence du ciblage d'une machine au lieu d'un programme.

En revanche, le système logiciel cible d'un script peut compiler le code ou l'interpréter. Est à la hauteur du système logiciel.

Si nous disons que la vraie différence est de savoir s'il est compilé ou non, alors nous avons un problème parce que lorsque Javascript s'exécute dans V8 est compilé et lorsqu'il s'exécute dans Rhino ne l'est pas.

Cela devient plus déroutant car les langages de script ont évolué pour devenir très puissants. Donc, ils ne se limitent pas à créer de petits scripts pour automatiser les opérations sur un autre système logiciel, vous pouvez créer des applications riches avec eux.

Le code Python cible un interpréteur afin que nous puissions dire qu'il "écrit" des opérations sur cet interpréteur. Mais lorsque vous écrivez du code Python, vous ne le voyez pas comme un script d'interpréteur, vous le voyez comme la création d'une application. L'interprète est juste là pour coder à un niveau supérieur entre autres. Donc pour moi, Python est plus un langage de programmation qu'un langage de script.

Damian Jose
la source
5

À l'époque où le monde était jeune et dans le monde PC que vous avez choisi parmi .exe ou .bat, la délimitation était simple. Les systèmes Unix ont toujours eu des scripts shell (/ bin / sh, / bin / csh, / bin / ksh, etc.) et des langages compilés (C / C ++ / Fortran).

Pour différencier les rôles et les responsabilités, les langages compilés (souvent appelés langages de 3e génération) étaient considérés comme des langages de `` programmation '' et les langages de `` scripting '' étaient considérés comme ceux qui invoquaient un interprète (souvent appelés langages de 4e génération). Les langages de script étaient souvent utilisés comme `` colle '' pour se connecter entre plusieurs commandes / programmes compilés afin que l'utilisateur n'ait pas à se soucier d'un ensemble d'étapes pour mener à bien sa tâche - il a développé un fichier unique, qui délimitait les étapes ils voulaient accomplir, et cela est devenu un «script» à suivre.

Diverses personnes / groupes ont écrit de nouveaux interprètes pour résoudre un domaine de problème spécifique. awk est l'un des plus connus, et il a été principalement utilisé pour l'appariement de modèles et l'application d'une série de transformations de données en entrée. Cela fonctionnait bien, mais avait un domaine de problème limité. L'expansion de ce domaine était pratiquement impossible car le code source n'était pas disponible. Perl (Larry Wall, auteur principal / architecte) scriptant au niveau supérieur - et a développé un interpréteur qui non seulement permettait à l'utilisateur d'exécuter des commandes système, de manipuler les données d'entrée et de sortie, de prendre en charge des variables sans type, mais également d'accéder aux API de niveau système Unix en tant que fonctions à partir des scripts eux-mêmes. C'était probablement l'un des premiers langages de script de haut niveau largement utilisés.

Votre question concernait spécifiquement Python. Parce que l'interpréteur python s'exécute sur un fichier texte contenant le code python et que le code python peut s'exécuter partout où il y a un interpréteur python, je dirais que c'est un langage de script (dans la même veine que Perl). Vous n'avez pas besoin de recompiler le fichier de commande utilisateur python pour chaque architecture OS / CPU différente (comme vous le feriez avec C / C ++ / Fortran), ce qui le rend nettement plus portable et plus facile à utiliser.

Le mérite de cette réponse revient à Jerrold (Jerry) Heyman. Fil d'origine: https://www.researchgate.net/post/Is_Python_a_Programming_language_or_Scripting_Language

Kartik Chauhan
la source
4

Je suis en désaccord avec le fait que les langages utilisant des interprètes sont des langages de script et que celui qui est compilé sont des langages de programmation. Nous pouvons développer un interprète ou un compilateur pour n'importe quelle langue. L'environnement interprété convient mieux aux scripts Web et le rend plus facile, c'est pourquoi nous l'avons.

Eh bien, j'ai l'impression qu'il n'y a pas de différence entre le langage de script et le langage de programmation. Il s'agit de faire le travail. En ce qui concerne les tâches liées au Web, nous les appelons des scripts Web en considérant les petites tâches et de cette façon, nous pouvons également appeler les tâches liées au système en tant que scripts de niveau système ou système d'exploitation et le langage de programmation que nous utilisons pour accomplir ces tâches en tant que langages de script système.

De plus, ce n'est pas pour que l'on ne puisse pas écrire du code au niveau du système en Python et des scripts Web en langage C (on peut certainement le faire si nous pouvons établir la plate-forme et l'environnement requis). Mais tout ce qu'il faut c'est trop d'efforts qui peuvent affecter la contrainte de temps pour le développement rapide et le petit peu de latence réduit ne va pas nous bénéficier beaucoup dans les scripts web. Mais l'inverse n'est pas vrai si nous effectuons des tâches de niveau système en Python.

Conclusion: la sélection de la langue dépend de la nature de la tâche à effectuer et la discrimination d'une langue car le langage de script est un mythe.

paritosh mishra
la source
4

Langages scriptés

Les langages de script sont interprétés dans un autre programme. JavaScript est intégré dans un navigateur et interprété par ce navigateur.

Exemples de langages de script

  1. Javascript
  2. Perl
  3. Python

Avantages des langages de script:

  1. Simple - Les langages de script sont plus faciles à écrire que le langage de programmation.

  2. Moins de lignes de code (LOC)

Langues programmées

Les langages de programmation comme Java sont compilés et ne sont pas interprétés par une autre application de la même manière.

Exemples de langages de programmation

  1. C
  2. C ++ et
  3. Java

Plus de détails

manisha mulchandani
la source
Les langages scriptés sont des langages de programmation. De plus, Java est interprété par une autre application appelée JVM.
bfontaine
4

Dans les langages de script comme (JavaScript et anciennes versions PHP), nous utilisons les fonctions et méthodes fondamentales existantes pour effectuer notre travail. Prenons un exemple dans JavaScriptlequel nous pouvons utiliser ajaxouweb-sockets seulement si elles sont prises en charge par un navigateur ou si des méthodes existent ou elles dans le navigateur. Mais dans des langages comme C ou C ++, Java, nous pouvons écrire cette fonctionnalité à partir de zéro même si aucune bibliothèque pour cette fonctionnalité n'est disponible, mais nous ne pouvons pas le faire en JavaScript.

pouvez-vous prendre en charge les sockets Web dans Internet Explorer 8 ou une version antérieure à l'aide de JavaScript Mais vous pouvez écrire un plugin en C ou C ++ ou Java qui peut ajouter une fonctionnalité de socket Web à Internet Explorer 8.

Fondamentalement, dans les langages de script, nous écrivons un code dans une séquence qui exécute des méthodes existantes dans une séquence pour terminer notre travail. La saisie de nombres et de formules dans une calculatrice numérique pour effectuer une opération est également un exemple typique de langage de script. et les méthodes et peut écrire de nouvelles bibliothèques.

PHP C'est un langage qui est quelque peu en programmation et en script noir et blanc. Nous pouvons ajouter de nouvelles méthodes en ajoutant des extensions compilées écrites dans un autre langage de haut niveau. Nous ne pouvons pas ajouter des fonctionnalités de haut niveau de mise en réseau ou créer des bibliothèques de traitement d'images directement en PHP.

PS Je suis vraiment désolé d'avoir tourné ma réponse autour de PHP JavaScript uniquement mais j'utilise ces deux parce que j'ai une expérience considérable dans ces deux-là.

Ravinder Payal
la source
3

Mis à part la différence que le langage de script est interprété et le langage de programmation est compilé, il y a une autre différence comme ci-dessous, qui, je suppose, a été manquée ..

Un langage de script est un langage de programmation utilisé pour manipuler, personnaliser et automatiser les installations 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 ces fonctionnalités au contrôle du programme.

Alors qu'un langage de programmation est généralement utilisé pour coder le système à partir de Scratch.

src ECMA

Sukrit Gupta
la source
2

Si nous voyons logiquement un langage de programmation et un langage de script, il en va de même à 99,09%. parce que nous utilisons le même concept comme boucle, condition de contrôle, variable et tout pour que nous puissions dire oui, les deux sont identiques, mais il n'y a qu'une seule différence entre eux qui est en C / C ++ et un autre langage de programmation, nous compilons le code avant l'exécution. mais en PHP, JavaScript et autres langages de script, nous n'avons pas besoin de compiler, nous l'exécutons directement dans le navigateur.

Merci Nitish K. Jha

NITISH KUMAR Jha
la source
2

Les langages de script sont des langages de programmation que les gens considèrent comme des langages de script. C'est une catégorie artificielle sans frontière claire, et où chaque règle proposée a une exception.

Les règles classiques utilisées pour dire qu'un langage est un langage de script caractérisent et non définissent. Si un langage satisfait un certain nombre de règles, il y a de fortes chances qu'il soit considéré comme un langage de script. Sinon, il y a de fortes chances que ce ne soit pas le cas. Les règles comprennent généralement:

  • Il est destiné aux petits "scripts", pas aux gros programmes.
  • Il est intégré dans une autre application, utilisé pour de petites modifications de cette application.
  • Il est interprété plutôt que compilé.
  • Il est destiné aux programmeurs débutants, pas aux professionnels.
  • Son nom se termine par "script".

J'ajouterais:

  • Un langage de script est un langage de programmation dans lequel presque toutes les erreurs sont détectées au moment de l'exécution.

Autrement dit, il pourrait s'agir d'un langage interprété.

Si un langage de programmation a un comportement "au moment de la compilation" significatif lorsqu'il analyse le code et signale les erreurs sans exécuter le programme, comme les erreurs de type en C, Java ou C #, il n'est probablement pas considéré comme un langage de script.

Traditionnellement, de nombreux langages de script ont été interprétés directement à partir des sources, mais les plus populaires d'entre eux ont obtenu des implémentations plus performantes qui précompilent le code, comme les .pycfichiers Python , ou optimisent les moteurs JavaScript qui se compilent en code natif avant de s'exécuter.

Si le langage peut être implémenté par un interpréteur, qui ne regarde que le code source lors de son exécution, il est probablement considéré comme un langage de script. Qu'il soit réellement implémenté de cette manière n'est pas important, mais s'il peut l'être, il ne peut pas non plus nécessiter une vérification approfondie du code lors de la compilation.

Si le langage fournit une sémantique statique utile qui aide à détecter les erreurs (autres que les erreurs de syntaxe) sans avoir besoin d'exécuter le programme, ce n'est probablement pas un langage de script.

Il y a toujours des exceptions, généralement basées sur la tradition autour d'une langue plus que sur toute règle réelle. BASIC n'est généralement pas considéré comme un "langage de script", même s'il satisfait à peu près tous les critères que quiconque a jamais utilisés pour en être un. C'est pourquoi Visual Basic Script a dû ajouter le "script" au nom, pour se distinguer de Visual Basic, un "vrai" langage de programmation destiné aux programmes plus importants.

BASIC est également un ancien langage de programmation, comme COBOL et Fortran, d'avant que les gens ne s'attendaient à une analyse statique d'un langage, et avant même que les "langages de script" ne soient une chose.

lrn
la source