Question

J'apprends maintenant Perl. Quels sont les avantages et les inconvénients des langages interprétés?

Était-ce utile?

La solution

Copie flagrante de wikipedia , je vais donc créer ce wiki communautaire.

Avantages des langages interprétés

Les langages interprétés donnent aux programmes une flexibilité supplémentaire par rapport aux langages compilés. Les fonctionnalités qui sont plus faciles à implémenter dans les interpréteurs que dans les compilateurs incluent (sans s'y limiter):

  • indépendance de la plate-forme (code d'octet de Java, par exemple)
  • réflexion et utilisation réflexive de l'évaluateur (par exemple, une fonction d'évaluation du premier ordre)
  • saisie dynamique
  • facilité de débogage (il est plus facile d'obtenir des informations sur le code source dans les langages interprétés)
  • petite taille du programme (car les langages interprétés ont la possibilité de choisir le code d'instruction)
  • portée dynamique
  • gestion automatique de la mémoire

Inconvénients des langages interprétés

Une exécution par un interprète est généralement beaucoup moins efficace qu'une exécution normale du programme. Cela se produit car chaque instruction doit passer une interprétation au moment de l'exécution ou, comme dans les nouvelles implémentations, le code doit être compilé en une représentation intermédiaire avant chaque exécution. La machine virtuelle est une solution partielle au problème de performances car le langage intermédiaire défini est beaucoup plus proche du langage de la machine et est donc plus facile à traduire au moment de l'exécution. Un autre inconvénient est la nécessité d’un interprète sur la machine locale pour permettre l’exécution.

Autres conseils

Avantages:

  • Prototypage rapide (pas d'écriture, compilation, cycle d'exécution)
  • multiplate-forme (en supposant qu'il existe des interprètes pour chaque plate-forme)

Inconvénients:

  • Performances (ne seront pas aussi rapides que les langages compilés)

Le plus gros inconvénient? La plupart diraient la vitesse d'exécution, mais ce n'est pas toujours nécessairement vrai. De nos jours, la plupart des langages interprétés convertissent les fichiers à interpréter dans un état intermédiaire lors de la construction, lequel, une fois exécuté, est transformé en code machine comme n'importe quel autre langage. Comme la mise en cache intelligente est généralement répandue au sein de ces machines virtuelles linguistiques, le problème ne devrait pas être trop grave. Cela ne veut certainement pas dire que les performances ne sont pas un problème avec les langages interprétés, mais qu’elles ne sont souvent pas aussi mauvaises que la plupart des gens le suggèrent.

Gardez à l'esprit que même avec les problèmes de performances, il est souvent plus facile de réaliser les mêmes tâches qu'un langage compilé avec un code de moins en moins efficace, rendant la perte de performances lors de la compilation négligeable pendant le temps d'exécution d'un programme.

Personnellement, le plus gros inconvénient est que l'interprète doit toujours être présent avant que l'exécution puisse avoir lieu. Cela réduit assez souvent la portabilité, notamment parce que les langages interprétés ne sont pas toujours multiplateformes.

Con:

  • Le plus gros inconvénient est probablement la vitesse d'exécution

Pro:

  • Le principal inconvénient est probablement le temps de réponse, c'est-à-dire la boucle d'itération du code-test

En résumé, les langages compilés ont tendance à être plus performants que les langages interprétés, car la compilation exclut la nécessité d’un interprète d’exécution.

Les langages compilés conviennent mieux aux logiciels de bureau commerciaux, car le code source n’est pas fourni avec.

Les langages interprétés ont tendance à être un peu plus rapides à apprendre, dans la mesure où ils vous permettent d’éditer / exécuter / répéter rapidement sans attendre un compilateur. D'après mon expérience, ils ont également tendance à être de niveau supérieur, ce qui les rend également plus faciles.

Wikipedia contient une page sur les avantages et les inconvénients. Tout langage interprété significativement avancé peut être compilé dans un binaire natif, estompant ainsi les frontières entre les avantages et les inconvénients d’un langage interprété.

PERL est l’un de ces langages qui brouillent les lignes. Bien que célèbre pour être un puissant langage de script, vous pouvez le compiler pour qu'il soit natif.

Le " lenteur " des langages dynamiques tels que PERL peut ne plus être un problème. Voici une excellente présentation des dernières tendances en matière de langage dynamique:

http: //steve-yegge.blogspot .com / 2008/05 / dynamic-languages-strike-back.html

Comme Java est interprété, le langage

Avantages:

  • Compatibilité: la machine virtuelle Java approuve ce concept "Écrire une fois pour s'exécuter partout".
  • Sécurité: le programme exécuté sur la machine virtuelle Java, ainsi, en cas d’échec, les fichiers du système d’exploitation ne sont pas affectés.
  • Gestion de la mémoire.

Inconvénients:

  • La machine virtuelle Java a de nombreuses implémentations, par exemple, lors de l'écriture d'un programme utilisant les fonctionnalités de Java 8, ce programme doit être exécuté sur une machine virtuelle Java avec une version à la version 8 non inférieure.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top