Quelle est la différence entre compilé et interprété langue?

après avoir lu des documents sur ce sujet, je ne suis toujours pas sûr de savoir quelle est la différence entre un langage compilé et un langage interprété. On m'a dit que C'était une des différences entre Java et JavaScript. Quelqu'un voudrait-il m'aider à comprendre?

91
demandé sur TylerH 2010-04-17 08:44:03

6 réponses

Quelle est la différence entre un langage compilé et un langage interprété?

La différence est pas dans la langue; il est dans le mise en œuvre .

ayant retiré cela de mon système, voici une réponse:

  • dans une implémentation compilée, le programme original est traduit en natif instructions machine, qui sont exécutées directement par le matériel.

  • dans une implémentation interprétée, le programme original est traduit en quelque chose d'autre. Un autre programme, appelé "l'interprète", puis examine "autre chose" et effectue les actions. Selon le langage et sa mise en œuvre, il existe une variété de formes de "quelque chose d'autre". De plus en plus populaire à moins populaire, "quelque chose d'autre" pourrait être

    • instructions binaires pour une machine virtuelle, souvent appelé bytecode , comme est fait dans Lua, Python, Ruby, Smalltalk, et de nombreux autres systèmes (l'approche a été popularisée dans les années 1970 par le p-system UCSD et UCSD Pascal)

    • représentation arborescente du programme original, telle qu'un arbre de syntaxe abstraite, comme c'est le cas pour de nombreux interprètes prototypes ou éducatifs.

    • représentation tokenisée du programme source, similaire à Tcl

    • Les caractères de la source de programme, comme cela a été fait dans de la MENTHE et de TRAC

une chose qui complique la question Est que il est possible de traduire (compiler) bytecode en Instructions machine natives . Ainsi, un succès la mise en œuvre intégrée pourrait éventuellement acquérir un compilateur. Si le compilateur tourne dynamiquement, dans les coulisses, il est souvent appelé compilateur juste-à-temps ou compilateur JIT. JITs ont été développés pour Java, JavaScript, Lua, et j'ose dire beaucoup d'autres langues. À ce moment-là, vous pouvez avoir une implémentation hybride dans laquelle un certain code est interprété et un certain code est compilé.

132
répondu Norman Ramsey 2010-04-17 06:06:49

Java et JavaScript sont un assez mauvais exemple pour démontrer cette différence , parce que les deux sont des langues interprétées . Java (interprété) et C (ou C++) (compilé) aurait été un meilleur exemple.

pourquoi le texte biffé? Comme cette réponse souligne correctement, interprété/compilé est sur une mise en œuvre concrète d'une langue, pas sur la langue en soi . Alors que les énoncés comme "C est un langage compilé" sont généralement vrai, il n'y a rien pour empêcher quelqu'un d'écrire un interprète de langage C. En fait, interprètes pour C existent .

essentiellement, le code compilé peut être exécuté directement par le PROCESSEUR de l'ordinateur. C'est-à-dire que le code exécutable est spécifié dans la langue "native" du CPU ( assembly language ).

le code des langues interprétées doit cependant être traduit à l'exécution à partir de n'importe quel format aux instructions de la machine CPU. Cette traduction est effectuée par un interprète.

une autre façon de l'appeler est celle qui interprète les langues sont code est traduit en instructions machine étape par étape tandis que le programme est exécuté, tandis que compilé langues ont code a été traduit avant exécution du programme.

44
répondu stakx 2017-05-23 10:31:30

Compiler vs Interpreter Language

Voici la différence fondamentale entre le langage du compilateur et celui de L'interprète.

4
répondu PBA 2018-08-21 14:12:15

un compilateur, en général, lit le code informatique de niveau supérieur et le convertit en code P ou en code machine natif. Un interpréteur s'exécute directement à partir d'un code p ou d'un code interprété tel que Basic ou Lisp. Typiquement, le code compled tourne beaucoup plus vite, est plus compact et a déjà trouvé toutes les erreurs de syntaxe et beaucoup d'erreurs de référence illégales. Interpreted code ne trouve de telles erreurs qu'après que l'application ait essayé d'interpréter le code affecté. Code interprété est souvent bon pour des applications simples qui ne seront utilisés qu'une ou plusieurs fois, ou peut-être même pour le prototypage. Le code compilé est meilleur pour les applications sérieuses. Un compilateur prend d'abord dans l'ensemble du programme, vérifie les erreurs, compile, puis l'exécute. Tandis qu'un interpréteur fait ceci ligne par ligne, il prend donc une ligne, la vérifie pour les erreurs et l'exécute ensuite.

si vous avez besoin de plus d'information il suffit de google pour" différence entre compilateur et l'interprète de"

3
répondu Salil 2010-04-17 04:50:50

c'est une distinction très obscure, et en fait généralement pas une propriété d'une langue elle-même, mais plutôt du programme que vous utilisez pour exécuter du code dans cette langue.

cependant, la plupart des langues sont utilisées principalement sous une forme ou l'autre, et oui, Java est essentiellement toujours compilé, tandis que javascript est essentiellement toujours interprété.

Pour compiler le code source est d'exécuter un programme qui génère un binaire exécutable du fichier, lorsqu'il est exécuté, a le comportement défini par la source. Par exemple, javac compile human-readbale .les fichiers java dans lisible par machine .les fichiers de classe.

pour interpréter le code source est lancé un programme qui produit le comportement défini tout de suite, sans générer de fichier intermédiaire. Par exemple, lorsque votre navigateur Web se charge stackoverflow.com, il interprète un tas de javascript (que vous pouvez regarder en regardant la source de la page) et produit beaucoup d'effets de nice ces les pages ont - par exemple, upvoting, ou les petites barres notifier à travers le haut.

2
répondu Personman 2010-04-17 04:53:23

le langage interprété est exécuté au moment de l'exécution selon les instructions comme dans l'interpréteur de commandes et le langage compilé est un langage qui est compilé (changé en langage Assembleur, que CPU peut comprendre ) et ensuite exécuté comme en c++.

1
répondu Praveen Kishor 2013-12-18 13:41:49