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é ?
...
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é ?
...
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ï
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.
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....
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ï
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
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).
ca dépend du CPU aussi (en terme de rapidité intrinsèque je précise)
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.
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.
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ï
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.
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager