Question

Pourquoi les programmes qui ont généralement langages typés dynamiquement mode interprété?

Était-ce utile?

La solution

En bref: Ils vont ensemble comme les pois et les carottes

.

Compiler par rapport à l'interprétation et la saisie des langues sont fondamentalement des préoccupations distinctes dans ce que vous pouvez avoir toutes les permutations possibles. D'autre part, la « raison » pour la cueillette et la compilation de ne pas choisir le typage dynamique pour la conception du langage sont généralement les mêmes: la performance. La « raison » pour la cueillette et l'interprétation typage dynamique sont aussi un peu lié.

Il est pas une règle dure et rapide. Vous pouvez toujours mélanger « em up. Vous pouvez compiler Perl et Lisp par exemple et interpréter C.

Autres conseils

Vous observez une corrélation non causale:

  • typage dynamique et corrélat d'interprétation, car les deux sont faciles à implémenter.
  • Le typage statique et corrélat de compilation parce que les deux sont propices de la performance on pouvait s'y attendre bien-être.

Compilateurs sont généralement sur des langues dynamiquement installé ultérieurement typées pour tenter d'améliorer les performances (car la performance est souvent très faible). Par exemple, voici combien de temps certaines grandes langues dynamiquement typés ont été interprétés pour avant leur premier compilateur a été écrit: Lisp (1958-1962), Mathematica (1988-2004), Lua (1993-2004), Python (1991-2002) et Javascript (1995-2009). En revanche, les langues comme OCaml (1996) et F # (2001) ont été libérés d'abord en tant qu'auteurs.

Comme indiqué par d'autres, les langues ne sont ni compilées ou interprétées. Ils règles juste que la traduction des besoins et la plupart ont des implémentations interprété et compilé. Même alors, il est difficile de parler de l'interprétation par rapport à la compilation alors que de nombreux « interprètes » sont jitting dans tous les sens et certains « compilateurs » sont heureux de la compilation à la demande en cas de modification du fichier source.

Peut-être qu'il est préférable de mises en œuvre de catégoriser comme entièrement pré-compilé ou compilé sur demande . Si nous utilisons ces catégories, la seule chose que les pauses pré-compilation complète est une fonction eval . Cela a probablement plus d'un effet sur la mise en œuvre que les types dynamiques. Si vous avez une fonction eval, vous êtes tenu de l'appui de la compilation à la demande.

Code Common Lisp est principalement compilé. Le langage de programmation Common Lisp a été décrit dans une norme ANSI avec le soutien pour la compilation. La norme ANSI décrit les fonctions que le code décompiler, décrit divers aspects des optimisations, décrit les aspects du processus de compilation et plus.

Interprètes existe Common Lisp, mais sont moins souvent utilisés.

implémentations communes Lisp peuvent souvent mélanger différents modes d'exécution librement. Presque tous ont un compilateur. Quelques-uns ont seulement un compilateur.

Compilation dans presque toutes les implémentations a un mode incrémental, de sorte qu'il peut être utilisé de manière interactive. Tous peuvent compiler des fichiers. Certains ont des modes « de compilation des blocs » pour compiler des groupes de fichiers.

Par la définition des langues dynamiquement tapées ...

  

Un langage de programmation est dit être typé dynamiquement lorsque la majorité de sa vérification de type est effectuée lors de l'exécution par opposition au moment de la compilation. Dans le typage dynamique, les valeurs ont des types, mais les variables ne le font pas; qui est, une variable peut se référer à une valeur de type quelconque.

Cela dit, il devient difficile de savoir ce pour compiler le programme jusqu'à car il pourrait changer lors de l'exécution. Un autre extrait de Wikipedia ici ...

  

typage dynamique permet des constructions qui   une vérification de type statique rejetterait   comme illégal. Par exemple, eval   fonctions, qui exécutent arbitraire   données sous forme de code, deviennent possibles.   De plus, le typage dynamique mieux   reçoit un code de transition et   le prototypage, notamment en permettant   structure de données d'espace réservé (mock   objet) devant être utilisé dans la transparence   la place d'une structure de données à part entière   (Habituellement aux fins de   expérimentation et d'essais).

Je pense que cette réponse est encore incomplète mais j'espère que vous pointe dans la bonne direction. Peut-être que d'autres ici peuvent développer cela.

Vérification des types une fois est en fait ce qui fait un « compilateur » (~ un vérificateur de type).

Vous ne pouvez pas « compilez » (types de contrôle une fois) lorsque les types sont « dynamiques ».

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top