salut tous le monde .
quel sont les différence entre un langage de programmation est un langage de script ?
Version imprimable
salut tous le monde .
quel sont les différence entre un langage de programmation est un langage de script ?
Bonne question, ça dépend pas mal de qui te répond.... :roll:
--
Jedaï
J'aurais tendance à répondre qu'un langage de script est un langage de programmation interprêté, et donc avec lequel le programme (appelé script) est immédiatement exécutable sans avoir à compiler etc...
Au départ, les langages de script étaient limités, mais au fil du temps, et de langage comme perl, python, PHP, on en est arrivé à ne plus voir trop la différence entre langage de script et langage de programmation interprété.
Pour moi, un langage de script est interprété (ou compilé à la volée de façon totalement transparente pour l'utilisateur et sans "coût" de temps visible) par un interpréteur et/ou une machine virtuelle, et il est intégrable au sein d'un logiciel quelconque afin d'obtenir une "symbiose" logicielle : le langage de script permet d'étendre et personnaliser le programme hôte, qui en retour "enrichit" le langage de script avec des commandes natives qui lui sont propres. A noter qu'un interpréteur de commande (shell Unix, interpréteur de commandes DOS/Windows, etc) est également considéré comme un programme hôte.
Le code est ré-interprété à chaque exécution, sauf dans des cas particuliers de mise en cache d'une version "sûre" (intégralement vérifiée syntaxiquement, voire sémantiquement), et occasionne donc un "surcoût" de temps d'exécution pour une opération qui est, finalement, toujours la même et avec le même résultat. L'avantage est que le programme est le code source lui-même, et que toute modification est immédiatement testable sans aucun autre logiciel que l'hôte et son interpréteur intégré.
Un langage de programmation, c'est un langage informatique permettant d'implémenter un algorithme (avec plus ou moins de facilités : implémenter des fonctions mathématiques "libres" en Scheme ou Lisp est trivial, en Assembleur y'a de quoi se tirer une balle), et possédant une grammaire précise et quasi-immuable.
En ce sens, un langage de script EST un langage de programmation, mais tous les langages de programmation ne sont pas des langages de scripts.
Si par "langage de programmation" tu sous-entendais "langage compilé", la différence est plus simple : un langage est dit compilé lorsqu'il doit passer par un compilateur, qui effectue les vérifications de syntaxe et de sémantique une seule et unique fois, afin de produire un "code exécutable" réduit à l'essentiel et n'ayant plus aucun lien visible avec le code source (il est d'ailleurs souvent impossible d'effectuer l'opération inverse de la compilation). Durant cette phase, le compilateur effectue un travail similaire à celui d'un interpréteur, la différence majeure étant que le code produit est stocké au lieu d'être exécuté directement.
Ce code peut être natif (exécuté directement sur le processeur), ou être du bytecode (exécuté par un processeur virtuel, dans une machine virtuelle).
Toutefois, c'est un résumé extrêmement succinct et réducteur que je te donne, le sujet est quand même très vaste... Il faudra préciser ta question si jamais tu n'as pas eu la réponse que tu souhaitais.
Un langage de programmation est destiné à implémenter des algorithmes. La manière dont c'est exécuté (interprété, précompilé, compilé bytecode, compilé natif) est totalement accessoire, et n'offre (presque) aucun intérêt tant que l'algo est correctement implémenté, et que ça répond donc au besoin.
Un langage de script est interprété, le cas des compilations à la volée étant anecdotique... Et surtout, ça ne change pas le fait que ça reste "interprété", c'est juste une optimisation pour améliorer les temps d'exécution.
Le plus important dans un langage de script, à mon sens, c'est qu'il est en "symbiose" avec un programme hôte...
Je l'ai déjà fait, je recite mon premier message :Citation:
le langage de script permet d'étendre et personnaliser le programme hôte, qui en retour "enrichit" le langage de script avec des commandes natives qui lui sont propres.
Un langage n'est pas interprété ou compilé, c'est un programme qui l'est.
L'interpréteur (ou le compilateur), n'est qu'une implémentation du langage (une parmi plusieurs possibles), et parler de langage interprété me semble un abus de langage (si je puis dire).
Je préfère donc nettement rapprocher les langages de scripts des langages de programmation dynamique, comme le fait Wikipedia (c'est à dire un langage qui autorise des actions au moment de l'exécution là où les autres ne les autorise qu'au moment de la compilation : évaluation d'expression dynamiques, fermetures, ...).
C'en est bien un... Mais devenu tellement habituel depuis tellement d'années qu'il est peu probable qu'une confusion soit possible... Car si ce n'est pas pour créer des programmes, un langage ne sert à rien ! En lui-même, que ce soit ton interpréteur, compilateur ou même la grammaire du langage en question, ça ne sert à RIEN tant que tu ne fais pas un programme avec.
C'est le même genre d'abus de langage qui fait dire que "les armes sont dangereuses"... Alors qu'en elle-même, une arme est totalement inoffensive, c'est un bête objet : c'est l'humain qui la manipule qui est dangereux ou pas...
Sauf que cela est réducteur : un langage interprété (ou langage de programmation dynamique si tu préfères) n'a pas forcément la notion de script, qui elle-même sous-entends que l'on pilote quelque chose à l'aide d'un programme (le script) "simple", dynamique et surtout au niveau de l'utilisateur final, sans qu'il aie les sources du programme piloté ni besoin des développeurs du programme pour faire tout ce qu'il a envie.Citation:
Je préfère donc nettement rapprocher les langages de scripts des langages de programmation dynamique, comme le fait Wikipedia (c'est à dire un langage qui autorise des actions au moment de l'exécution là où les autres ne les autorise qu'au moment de la compilation : évaluation d'expression dynamiques, fermetures, ...).
C'est ce que je voulais souligner quand je parlais de "symbiose" entre un langage de script et son hôte... Si tu prends deux programmes (= les hôtes) scriptés par un langage de script quelconque (ex : Python), tu auras dans les DEUX programmes un tronc commun (la base du langage de script), PLUS des extensions propres à chaque hôte, et absentes de l'autre programme (API spécifique)... Chaque hôte enrichit et étend le langage de script, et le langage de script permet en retour de personnaliser le fonctionnement de l'hôte.
Je voulais dire que ce n'est pas une caractéristique intrinsèque d'un langage que d'être "interprété" ou "compilé" (seule sa syntaxe et sa sémantique le défini, son implémentation est généralement libre, sauf peut-être Java qui impose une machine virtuelle dans les spécifications du langages).
Perl et Python peuvent être interprétés et compilés, Java est compilé et interprété, ...
Sinon, pour la symbiose, pourrais-tu donner un exemple concret de ce qu'apporte un langage de script en terme de symbiose et que n'apporte pas un langage de programmation (comme C) ?
juste pour ne pas faire couler beaucoup d'encre ??? de bande passante ?? inutile, je rappelle que ce sujet et déjà évoqué dans ce même forum :
script vs programmation
et
jobs vs processus
Donc, en gros et pour faire simple:
Programmation=codage binaire
Script= Langage interprété par un programme :question::question:
8 ans plus tard... :whistle:
Je n'ai jamais entendu ce terme de "langage de programmation", ou plutôt jamais entendu une telle différence. Un langage de script c'est un langage de programmation. Ecrire un script c'est programmer.
Un langage de script aura besoin d'un interpréteur pour être exécuté et ne sera pas compilé dans un exécutable natif à la plateforme.
Tes fichiers .py, tu dois avoir Python installé. Quand tu lances un .py, le système sait qu'il faut l'ouvrir avec Python, tout comme il ouvre notepad pour un fichier .txt.
Tes fichiers .php sont exécutés par Apache ou ton serveur PHP.
php et python sont des langages de script.
Quand tu compiles un projet C++, tu as un .exe que le système lance tel quel, il ne lance pas de programme pour le lire et l'exécuter.
C++ n'est pas un langage de script.
Et quand on ajoute des choses comme cling https://root.cern.ch/cling (une invite de commandes C++) ou Jython http://www.jython.org/ (un compilateur Python pour la JVM), ça devient de suite plus fun :mouarf:.