IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langages de programmation Discussion :

Script vs programmation


Sujet :

Langages de programmation

  1. #1
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut Script vs programmation
    Bonjour,


    Je me demande quels sont les différences entre programmation interprété et programmation compilé et java ?
    Quelle différences de performaces y a t'il ?
    Quelles différences de sécurité ?
    ...

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut


    la principale différence entre un script et autre chose, c'est qu'un script n'est qu'un ensemble de commandes, qui, ELLES, sont soit d'autres scripts, soit ces AUTRES CHOSES...


    Un script en tant que tel ne fait rien du tout, si il n'y a pas quelqu'un qui s'est tapé de faire un certain nombre de programmes , qui du coup vont devenir des commandes...

  3. #3
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par souviron34 Voir le message
    la principale différence entre un script et autre chose, c'est qu'un script n'est qu'un ensemble de commandes, qui, ELLES, sont soit d'autres scripts, soit ces AUTRES CHOSES...


    Un script en tant que tel ne fait rien du tout, si il n'y a pas quelqu'un qui s'est tapé de faire un certain nombre de programmes , qui du coup vont devenir des commandes...
    On a saisi que tu n'aimes pas les langages interprétés, néanmoins tu fait ici preuve d'une grande méconnaissance du domaine, ce que tu décris est un shellscript seulement, et même dans un shellscript d'ailleurs il y a un certain nombre de commandes qui n'entrent pas dans ta description.

    Un langage compilé est un langage dont les codes sources doivent être compilés (autrement dit "transformés") par un compilateur en langage machine, c'est à dire en une suite d'instruction directement exécutable par le processeur de ton ordinateur (je simplifie un peu ici mais sinon il faudrait que je commence à décrire le rôle de l'OS...).

    A contrario un langage interprété est un langage dont les codes sources ne sont pas compilés en langage machine (directement exécutable par l'ordinateur), mais restent en l'état et sont interprétés par un interpréteur, autrement dit un programme (compilé lui en langage machine) qui va parser (déchiffrer et transformer en une structure de donnée) le code source et exécuter les instructions qui s'y trouvent.

    Jusque là les choses étaient simples et on pouvait dire : les langages compilés sont performants, les langages interprétés sont horriblement lent, malheureusement (pour la simplicité de l'explication) ou heureusement (pour le progrès de l'informatique), la plupart des langages dits "interprétés" utilisent aujourd'hui une approche hybride dans laquelle leur code source peut-être compilé vers une forme intermédiaire dite "bytecode" qui n'est pas le langage de ta machine, mais plutôt une sorte de langage machine adapté à la VM (Machine Virtuelle) qui va l'exécuter.
    Les VM sont généralement nettement plus rapides que les interpréteurs d'antan, et pour rajouter à la confusion, un certain nombre d'entre elles utilise ce qu'on appelle de la compilation JIT (Just In Time/Juste à temps) qui compile pendant l'exécution un bout de bytecode en langage machine natif pour l'exécuter directement sur le processeur !
    C'est l'approche adoptée par exemple par Java et .NET, et ces deux plateformes sont franchement très rapides, se rapprochant vraiment de la vitesse des langages compilés comme le C++, et même la dépassant dans certains cas bien particuliers.

    --
    Jedaï

  4. #4
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut
    Citation Envoyé par Jedai Voir le message
    On a saisi que tu n'aimes pas les langages interprétés, néanmoins tu fait ici preuve d'une grande méconnaissance du domaine, ce que tu décris est un shellscript seulement, et même dans un shellscript d'ailleurs il y a un certain nombre de commandes qui n'entrent pas dans ta description.

    Un langage compilé est un langage dont les codes sources doivent être compilés (autrement dit "transformés") par un compilateur en langage machine, c'est à dire en une suite d'instruction directement exécutable par le processeur de ton ordinateur (je simplifie un peu ici mais sinon il faudrait que je commence à décrire le rôle de l'OS...).

    A contrario un langage interprété est un langage dont les codes sources ne sont pas compilés en langage machine (directement exécutable par l'ordinateur), mais restent en l'état et sont interprétés par un interpréteur, autrement dit un programme (compilé lui en langage machine) qui va parser (déchiffrer et transformer en une structure de donnée) le code source et exécuter les instructions qui s'y trouvent.

    Jusque là les choses étaient simples et on pouvait dire : les langages compilés sont performants, les langages interprétés sont horriblement lent, malheureusement (pour la simplicité de l'explication) ou heureusement (pour le progrès de l'informatique), la plupart des langages dits "interprétés" utilisent aujourd'hui une approche hybride dans laquelle leur code source peut-être compilé vers une forme intermédiaire dite "bytecode" qui n'est pas le langage de ta machine, mais plutôt une sorte de langage machine adapté à la VM (Machine Virtuelle) qui va l'exécuter.
    Les VM sont généralement nettement plus rapides que les interpréteurs d'antan, et pour rajouter à la confusion, un certain nombre d'entre elles utilise ce qu'on appelle de la compilation JIT (Just In Time/Juste à temps) qui compile pendant l'exécution un bout de bytecode en langage machine natif pour l'exécuter directement sur le processeur !
    C'est l'approche adoptée par exemple par Java et .NET, et ces deux plateformes sont franchement très rapides, se rapprochant vraiment de la vitesse des langages compilés comme le C++, et même la dépassant dans certains cas bien particuliers.

    --
    Jedaï
    merci pour la réponse
    mais pour quel type application privilégie t on l'intérprété ou le compilé ?

  5. #5
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jedai Voir le message
    On a saisi que tu n'aimes pas les langages interprétés, néanmoins tu fait ici preuve d'une grande méconnaissance du domaine, ce que tu décris est un shellscript seulement, et même dans un shellscript d'ailleurs il y a un certain nombre de commandes qui n'entrent pas dans ta description.
    ...
    Désolé, je ne parlais pas du tout de ça, mais de la signification des termes...

    Par rapport au titre du thread...

    Un script par rapport à un programme...

    Je n'ai jamais dit que j'étais contre les langages interprétés...

  6. #6
    Membre chevronné
    Avatar de Woufeil
    Profil pro
    Étudiant
    Inscrit en
    Février 2006
    Messages
    1 076
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2006
    Messages : 1 076
    Points : 2 004
    Points
    2 004
    Par défaut
    Citation Envoyé par sliderman Voir le message
    merci pour la réponse
    mais pour quel type application privilégie t on l'intérprété ou le compilé ?
    Salut,

    Ta question avait un sens avant, à l'époque décrite par Jedai où les langages interprétés étaient horriblement lent. Maintenant, avec la compilation JIT, les limites des deux types deviennent bien plus flou : on peut quasiment tout faire en Java !
    Mais si on parle en revanche de langage de script, leur fonction à la base est (majoritairement) l'automatisation de taches répétitives : traitement de logs, création de comptes utilisateurs, récupération périodique de données sur un site web, administration réseau, installation de logiciels... Mais rien n'empêche d'utiliser un langage de script pour faire une application lourde.

  7. #7
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    j'ajouterais que, outre les problèmes de sécurité (voir la discussion sur les clients-serveurs et la sécurité http://www.developpez.net/forums/sho...d.php?t=254692), il peut y avoir également des problèmes de vitesse, suivant ce que l'on veut faire..

    Par exemple, pour une application sensée faire du maillage 3D ou de l'image de synthèse, ou dans laquelle le temps de réaction graphique avec un grand nombre d'objets est en cause, on choisira bien évidemment un langage compilé (exemple typique d'une application de maillage : 100 000 vecteurs), pour accèder au plus vite aux fonctions graphiques.

    A l'inverse, pour une appli grand public destinée au Web, ou avec un faible nombre de graphisme devant être modifiés en temps réel, on optera plus pour un langage style Java, Php, etc..

    De la même manière, pour un programme de calcul scientifique, on optera vraisemblablement pour un langage compilé. Mais pour effectuer ce calcul tous les jours toutes les 3 heures, on utilisera vraisemblablement un script, qui appellera ce programme....

    Mais la question est vaste....

  8. #8
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Pour les problèmes de sécurité, je suis en désaccord avec Souviron34 (comme tu le verras si tu va sur le sujet indiqué) sur la différence de sécurité entre langage interprété / langage compilé bien qu'étant d'accord sur l'architecture client/serveur. J'irais même jusqu'à dire que l'aspect de haut niveau de la plupart des langages interprétés en fait à mon avis de meilleurs langages pour implémenter des applications où la sécurité est une préoccupation première (ils ont leur part de souci bien sûr).

    Quant aux performances, il faut bien faire la différence entre l'implémentation des "pièces de base" et leur utilisation, ainsi bien que faire du maillage en Perl soit déconseillé , il est tout à fait possible d'y faire de la 3D de base avec OpenGL vu qu'il ne s'agit là que d'utiliser des composants qui eux ont été implémentés en C et sont très rapides. Souviron34 a bien résumé cette problématique, dont les frontières progressent toujours avec la puissance des machines, et l'amélioration des performances des VM et interpréteurs.

    Le terme de "script" est relativement galvaudé aujourd'hui et personnellement j'évite de l'utiliser, sauf en tant que synonyme de "programme".

    --
    Jedaï

  9. #9
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Jedai Voir le message
    ..Le terme de "script" est relativement galvaudé aujourd'hui et personnellement j'évite de l'utiliser, sauf en tant que synonyme de "programme".
    ...
    Confusion dangereuse ... surtout pour la majorité du public passant sur ce forum...


    http://fr.wikipedia.org/wiki/Langage_de_script

    Enfin, l'informatique n'étant pas à une terminologie approximative près, "langage de script" désigne parfois, dans un sens très vague, n'importe quel langage de programmation interprété (ce qui est un abus de langage : en toute rigueur le caractère interprété ou compilé se rapporte à une implémentation particulière, pas à un langage), par rapport aux langages compilés comme C, C++, Java, etc. On y trouve alors Basic, PHP, Lisp, JavaScript, etc

  10. #10
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Mais un script peut et est souvent un programme, que ce soit en bash, en Perl ou en Python (qui reprend le principe du bytecode dans l'interpréteur C et Java et .NEt pour les deux autres implémentations les plus connues).

  11. #11
    Expert éminent sénior

    Profil pro
    Inscrit en
    Janvier 2007
    Messages
    10 610
    Détails du profil
    Informations personnelles :
    Âge : 66
    Localisation : France

    Informations forums :
    Inscription : Janvier 2007
    Messages : 10 610
    Points : 17 923
    Points
    17 923
    Billets dans le blog
    2
    Par défaut
    Citation Envoyé par Miles Voir le message
    Mais un script peut et est souvent un programme, que ce soit en bash, en Perl ou en Python (qui reprend le principe du bytecode dans l'interpréteur C et Java et .NEt pour les deux autres implémentations les plus connues).
    pour bash c'est totalement faux...

    un script shell (bash, ksh, csh, ou autre) ne fait qu'appeler des commandes, qui elles, sont des programmes... (ou éventuellement d'autres scripts qui..)

    (cp, cd, rm, make, tar, etc..)

    les autres je ne connais pas

  12. #12
    Membre habitué
    Profil pro
    Inscrit en
    Mars 2007
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2007
    Messages : 124
    Points : 136
    Points
    136
    Par défaut
    ca dépend du CPU aussi (en terme de rapidité intrinsèque je précise)

  13. #13
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Il y a tout de même une série de structures de contrôles qui sont fournis qui ne sont pas des programmes externes.

  14. #14
    Membre confirmé
    Homme Profil pro
    Technophile Web
    Inscrit en
    Mai 2007
    Messages
    930
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations professionnelles :
    Activité : Technophile Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2007
    Messages : 930
    Points : 467
    Points
    467
    Par défaut
    Citation Envoyé par Woufeil Voir le message
    avec la compilation JIT
    ça veut dire uoi exactement JIT
    yum est écrit en python (langage interprété) est il est très rapide

  15. #15
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    Just In Time.
    Ca veut dire que c'est compilé juste avant d'être exécuté, compilé pour la plateforme en cours.

    Et oui, yum est en python.

  16. #16
    Expert éminent
    Avatar de Jedai
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2003
    Messages
    6 245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Côte d'Or (Bourgogne)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Avril 2003
    Messages : 6 245
    Points : 8 586
    Points
    8 586
    Par défaut
    Citation Envoyé par sliderman Voir le message
    yum est écrit en python (langage interprété) est il est très rapide
    Yum est très rapide ? Non, il ne l'est pas, il est juste "suffisamment rapide" sur du matériel décent/récent. Pour une application normale (d'usage courant disons, pas les programmes de calcul qui tournent en permanence), ce n'est pas tant d'être la plus rapide possible qui est important, mais d'être assez rapide pour que l'utilisateur soit satisfait. Les langages interprétés sont plus lent que les langages compilés en général, mais les machines actuelles sont également extrèmement rapides (si je les compare aux machines que j'avais quand j'ai débuté l'informatique, et je ne suis pas bien vieux), ce qui signifie qu'ils sont de plus en plus viables pour un nombre croissant d'applications, Yum fait partie de cette catégorie.

    Il faut également bien comprendre qu'un programme bien écrit dans un langage interprété peut être bien plus rapide que le même programme mal écrit en langage compilé, ce qui compte en premier lieu c'est la qualité des algorithmes et dans une moindre mesure la qualité du code.

    --
    Jedaï

  17. #17
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Points : 20 970
    Points
    20 970
    Par défaut
    En général, pour ces langages, dans l'orientation scientifique, on passe par des bibliothèques dédiées écrites dans un langage compilé. L'exemple classique est Matlab.

Discussions similaires

  1. aide sur script ou programme SVP
    Par peterthepower dans le forum Programmation système
    Réponses: 0
    Dernier message: 15/10/2012, 18h56
  2. [Système] Executer un programme externe depuis un scripte php
    Par Scorpion Rouge dans le forum Langage
    Réponses: 1
    Dernier message: 24/01/2006, 11h59
  3. Réponses: 4
    Dernier message: 24/10/2005, 08h36
  4. Script vs programme !
    Par Gandalf dans le forum Linux
    Réponses: 3
    Dernier message: 07/09/2004, 11h43
  5. Lancement d'un programme java depuis un script php
    Par gexti dans le forum Développement Web en Java
    Réponses: 8
    Dernier message: 07/05/2004, 17h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo