Perl est-il un langage de programmation compilé ou interprété?

est-ce que Perl est compilé ou interprété?

22
demandé sur Cole Johnson 2011-03-21 13:46:50

7 réponses

un point de vue est que la compilation signifie compiler d'une description de code source à une autre, i.e. génération de code.

si nous acceptons ces prémisses, alors Perl 6 peut être compilé et Perl 5 et plus sont des langues interprétées.

Perl 6 est compilé spécifiquement pour Parrot bytecode. Perl 6 est donc un langage correctement compilé, de la même manière que say,Java.

Perl 5 et plus vieux analyse le code source de Perl dans une liste ou un arbre interne, mais je ne pense pas qu'il devrait être appelé un compilateur approprié, sauf peut-être dans un sens théorique. Il ne produit pas de bytecode, d'assemblage ou de code machine réel habituellement associé aux compilateurs. L'étape d'analyse de Perl pour vérifier la syntaxe Perl s'appelait "compiler" la source. Il est utilisé pour vérifier la validité syntaxique d'un fichier source Perl sans l'exécuter.

il est invoqué comme:

perl -c myprog.pl

mais si vous regardez l'aide pour les options Perl, - c signifie en fait "vérifier".

-c                check syntax only (runs BEGIN and CHECK blocks)

(pour compliquer encore plus les choses, Perl 5 avait le support pour écrire le bytecode interne mais c'était supprimé dans la version 5.10. Probablement parce que c'était buggé, je ne sais pas.)

Sur l'autre main, si vous soutenez que la compilation est l'acte d'analyser une arborescence des sources dans n'importe quel autre type de représentation, bien, que l'analyse fait de Perl un langage compilé. Perl doit analyser un fichier source avant de pouvoir l'exécuter. Selon cette définition, toute langue qui peut commencer à exécuter un fichier source immédiatement avant l'analyse serait une langue interprétée.

Une troisième voie pour regarder ceci de la façon dont ces mots, "interprété" et "compilé" sont le plus souvent utilisés par des professionnels du domaine. Je parierais que si on demandait à un sous-ensemble aléatoire de programmeurs de choisir "compilé" ou "interprété" en pensant à Perl, la plupart choisiraient "interprété". Non pas à cause d'un argument théorique sur la nature de Perl, mais parce que "compilé" évoque généralement des pensées de "compilation", "lien", "code objet" etc, tandis que "interprété" est pris pour signifier "écrire le code, essayer". Bien ou mal, cela peut être bon à savoir en essayant de déterminer si Perl est,vraiment, interprété ou en fait, compilé. Vous allez rencontrer beaucoup d'arguments sur votre quête.

20
répondu Prof. Falken 2013-04-08 17:34:13

vous n'obtiendrez pas de réponse définitive, parce que vous n'avez pas fourni de question définitive.

Perl est toujours dans l'un des deux états: il est soit en compilation, soit en exécution. C'est pourquoi vous voyez parler de "à la compilation" vs "à l'exécution". Normalement, vous obtenez une phrase de compilation suivie d'une phase d'exécution, mais ce n'est pas nécessairement le cas.

ces deux phases peuvent aussi faire l'objet d'échanges. eval STRING est un moyen pour l'interpréteur d'appeler le compilateur (donc trop sont donc do FILE et