Después de leer algún material sobre este tema, todavía no estoy seguro de cuál es la diferencia entre un lenguaje compilado y un interpretado. Me dijeron que esta es una de las diferencias entre Java y JavaScript. ¿Alguien podría ayudarme a entenderlo?¿Cuál es la diferencia entre el lenguaje compilado y el interpretado?
Respuesta
¿Cuál es la diferencia entre el lenguaje compilado y el interpretado?
La diferencia es que no en el idioma; Está en la implementación .
Después de haber conseguido eso de mi sistema, aquí está la respuesta:
En una aplicación compilada, el programa original se traduce en instrucciones nativas de la máquina, que se ejecutan directamente por el hardware.
En una implementación interpretada, el programa original se traduce en algo más. Otro programa, llamado "el intérprete", luego examina "otra cosa" y realiza cualquier acción que se requiera. Dependiendo del idioma y su implementación, hay una variedad de formas de "algo más". De más populares a menos popular, "algo más" podría ser
instrucciones binarias para una máquina virtual, a menudo llamados código de bytes, como se hace en Lua, Python, Ruby, Smalltalk, y muchos otros sistemas (el enfoque se popularizó en la década de 1970 por el P-sistema de UCSD y UCSD Pascal)
una representación en forma de árbol del programa original, como por ejemplo un árbol de sintaxis abstracta, como se hace para muchos prototipos o educativos intérpretes
Un representante tokenizado n del programa fuente, similar a Tcl
Los personajes del programa de origen, como se hizo en la menta y TRAC
Una cosa que complica el asunto es que es posible para traducir (compilar) bytecode en las instrucciones nativas de la máquina. Por lo tanto, una implementación interpretada con éxito podría eventualmente adquirir un compilador. Si el compilador se ejecuta dinámicamente, detrás de las escenas, a menudo se lo denomina compilador just-in-time o JIT. JITs se han desarrollado para Java, JavaScript, Lua, y me atrevo a decir muchos otros idiomas. En ese punto, puede tener una implementación híbrida en la que se interpreta un código y se compila código.
Java y JavaScript son bastante mal ejemplo para demostrar esta diferencia
, porque ambos son lenguajes interpretados
. Java
(interpretado)
y C (o C++)
(compilado)
podrían haber sido un mejor ejemplo.
Por qué el texto tachado de paso? Como this answer indica correctamente, la interpretación/compilación se trata de una implementación concreta de un idioma, no del idioma per se. Si bien las afirmaciones como "C es un lenguaje compilado" son en general verdaderas, no hay nada que impida que alguien escriba un intérprete de lenguaje C. De hecho, interpreters for C do exist.
Básicamente, el código compilado se puede ejecutar directamente desde la CPU de la computadora. Es decir, el código ejecutable se especifica en el idioma "nativo" de la CPU (lenguaje de ensamblaje).
Sin embargo, el código de los idiomas interpretados se debe traducir en tiempo de ejecución desde cualquier formato a las instrucciones de la máquina de la CPU. Esta traducción es hecha por un intérprete.
Otra manera de decirlo es que interpretan
lenguas son
código se traduce a instrucciones de máquina paso a paso mientras se está ejecutando el programa, mientras compilado
idiomas tienen
código tiene traducido antes de la ejecución del programa.
¿Se interpreta Java? Desde wikipedia: "Las aplicaciones Java se compilan típicamente en bytecode (archivo de clase) que se puede ejecutar en cualquier máquina virtual Java (JVM) independientemente de la arquitectura de la computadora". – Personman
@Personman que todavía se "interpreta" técnicamente ya que la JVM está ejecutando el código, no el sistema operativo en sí. Realmente es una diferencia semántica, ya que se podría decir que la complejidad de los sistemas operativos modernos hace que la diferencia sea básicamente irrelevante para la mayoría de las situaciones. Habla de la diferencia entre el sistema operativo que ejecuta la aplicación y el sistema operativo que ejecuta una aplicación que ejecuta el código. – GrayWizardx
Supongo que quiere decir que los archivos de clase son interpretados por Java VM. Eso es bastante razonable, pero la fuente java realmente está compilada en Java VM bytecode. Podría construir una Máquina Java física que no requiriera que la VM la interpretara en el código máquina de otra arquitectura. Por lo tanto, parece más exacto decir que Java está compilado. Aún así, este es un buen ejemplo de la manera en que la distinción es confusa y algo arbitraria. Después de todo, el C compilado es interpretado por la CPU, ¿verdad? – Personman
Un compilador, en general, lee código de lenguaje de lenguaje de nivel superior y lo convierte en código p o en código de máquina nativo. Un intérprete se ejecuta directamente desde el código p o un código interpretado como Basic o Lisp. Normalmente, el código completo se ejecuta mucho más rápido, es más compacto y ya ha encontrado todos los errores de sintaxis y muchos de los errores de referencia ilegales. El código interpretado solo encuentra dichos errores después de que la aplicación intente interpretar el código afectado. El código interpretado a menudo es bueno para aplicaciones simples que solo se usarán una vez o como mucho un par de veces, o incluso para la creación de prototipos. El código compilado es mejor para aplicaciones serias. Un compilador primero toma todo el programa, busca errores, lo compila y luego lo ejecuta. Mientras que, un intérprete hace esto línea por línea, por lo que toma una línea, verifica si hay errores y luego la ejecuta.
si necesita más información que acaba de Google de "diferencia entre compilador y el intérprete de"
Umm, no estoy seguro de dónde obtuvo algo de esto más allá de las dos primeras declaraciones. Esto fue técnicamente cierto hace varias generaciones con muchos lenguajes interpretados, pero dependiendo de la plataforma y la atención al detalle, es posible tener un código interpretado que realiza código similar o cercano al compilado de ciertas actividades. – GrayWizardx
Es una distinción muy turbia, y de hecho generalmente no una propiedad de un lenguaje en sí mismo, sino más bien del programa que está utilizando para ejecutar código en ese idioma.
Sin embargo, la mayoría de los lenguajes se usan principalmente de una forma u otra, y sí, Java siempre se compila esencialmente, mientras que javascript esencialmente siempre se interpreta.
Para compilar el código fuente es ejecutar un programa en él que genera un archivo ejecutable binario que, cuando se ejecuta, tiene el comportamiento definido por la fuente. Por ejemplo, javac compila archivos .java de lectura humana en archivos .class legibles por máquina.
Para interpretar el código fuente se ejecuta un programa que produce el comportamiento definido de inmediato, sin generar un archivo intermediario. Por ejemplo, cuando su navegador web carga stackoverflow.com, interpreta un montón de javascript (que se puede ver al ver el origen de la página) y produce muchos de los agradables efectos que tienen estas páginas, por ejemplo, votaciones ascendentes, o el pequeño notificador barras en la parte superior.
El lenguaje interpretado se ejecuta en el tiempo de ejecución de acuerdo con las instrucciones como shell scripting y el compilado es uno que se compila (se cambia al lenguaje ensamblador, que la CPU puede entender) y se ejecuta como en C++.
- 1. No existe el "lenguaje compilado" o el "lenguaje interpretado"
- 2. ¿Java es un lenguaje de programación compilado o interpretado?
- 3. ¿Cuál es el proceso de crear un lenguaje interpretado?
- 4. ¿Cuál es la diferencia entre un lenguaje y un marco?
- 5. ¿Cuál es la diferencia entre el NSImage y el UIImage?
- 6. ¿Cuál es la diferencia entre el tenedor y el hilo?
- 7. ¿cuál es la diferencia entre el objetivo y el proyecto?
- 8. Backbone.Js - ¿Cuál es la diferencia entre el y $ el?
- 9. ¿Cuál es la diferencia entre el mango y el hilo?
- 10. ¿Cuál es la diferencia entre el JSP y el JSTL?
- 11. ¿Cuál es la diferencia entre el
- 12. ¿Cuál es la diferencia entre% d y% * d en el lenguaje c?
- 13. ¿Cuál es la diferencia entre newSlot y setSlot en el lenguaje Io?
- 14. ¿Cuál es la diferencia entre el colado y la coerción?
- 15. ¿cuál es la diferencia entre el complemento y la biblioteca?
- 16. ¿Cuál es la diferencia entre el casting y la conversión?
- 17. ¿cuál es la diferencia entre el material y la textura?
- 18. ¿Cuál es la diferencia entre el marco y la arquitectura?
- 19. ¿Cuál es la diferencia entre la tubería y el zócalo?
- 20. ¿Cuál es la diferencia entre el cifrado SHA y AES?
- 21. ¿Cuál es la diferencia entre el nuevo operador y Class.newInstance()?
- 22. ¿Cuál es la diferencia entre el formato OMF y COFF?
- 23. ¿Cuál es la diferencia entre el enlace primero y reciente?
- 24. ¿cuál es la diferencia entre los navegadores y el nodo?
- 25. ¿cuál es la diferencia entre voltearse y pasar el mouse?
- 26. ¿cuál es la diferencia entre net.tcp y el protocolo TCP?
- 27. ¿Cuál es la diferencia entre el operador "=" y "==" en Bash?
- 28. ¿Cuál es la diferencia entre .sqlite y el archivo .db?
- 29. ¿Cuál es la diferencia entre setattr() y el objeto .__ setattr __()?
- 30. ¿Cuál es la diferencia entre VBScript's y el operador &?
Señor, tengo las siguientes preguntas 1. ¿En qué idioma está escrito "algo más"? 2. Y en el contexto de JavaScript, ¿esa "otra cosa" varía de un navegador a otro? 3. Diga, mi script se está ejecutando en Google Chrome e Internet Explorer, ¿se interpreta igual en ambos navegadores? – JavaHopper