¿Qué es las ventajas de un lenguaje interpretado tiene más de un lenguaje compilado? [duplicar]

StackOverflow https://stackoverflow.com/questions/1654156

  •  11-09-2019
  •  | 
  •  

Pregunta

  

Duplicar posible:
   ¿Qué pasa con el amor de los lenguajes dinámicos

Ya ha leído este , pero yo no lo entiendo.

¿De qué está haciendo su propio intérprete. Además, se dice que la independencia de la plataforma. Después de todo el grado de independencia de la plataforma está limitada por lo que todas las plataformas de su intérprete puede ejecutar en. Por lo tanto, no veo ninguna ventaja.

Además, no sé siquiera un buen uso de dinámico escribiendo . Es inútil que siento. Por supuesto, estoy equivocado, porque hay tantos lenguajes de tipado dinámico por ahí.

Puede alguien ayudarme aquí? gracias.

¿Fue útil?

Solución

Los lenguajes dinámicos son muy, muy práctico para las cosas simples. Digamos que usted quiere escribir un pequeño programa que diff entre dos archivos. En Python lo que se hace es:

file1 = open(<filename>)
file1.read()
file1.split('\n')
#same for file2
for line in file1:
    if line not in file2:
         print line

por lo file1 partirá como FD. Entonces se convierte en una cadena. Y finalmente una lista. El mismo programa 9 de código tomará por lo menos dos veces más filas en java.

El problema comienza cuando se quiere escribir programas muy grandes y el trabajo en equipo. La gestión de las interfaces API y es mucho más fácil en java.

Otros consejos

  

¿De qué está haciendo su propio intérprete. Además, se dice que la independencia de la plataforma. Después de todo el grado de independencia de la plataforma está limitada por lo que todas las plataformas de su intérprete puede ejecutar en. Por lo tanto, no veo ninguna ventaja.

Bueno, usted escribe su intérprete usando un lenguaje que ya existe. Así que si usted elige uno que se ejecuta en plataformas pueden (como, por ejemplo, Python), a continuación, en cualquiera de esas plataformas alguien puede conseguir su intérprete y utilizarlo. Así, por ejemplo, si se escribe su intérprete en Windows puedo correr ese mismo intérprete en Linux y que va a seguir trabajando.

Sin embargo, si hubiera escrito un compilador, usted mismo tendría que escribir el generador de código para cada plataforma. Así, por ejemplo, si usted escribió su compilador para que funcionó bien para usted en Windows, cuando intento ejecutarlo en Linux que genera código para Windows, Linux no, por lo que no va a funcionar. Usted tendría que hacer trabajo extra, la adición de un generador de código para Linux, antes de que pudiera utilizarlo.

  

Además, no sé siquiera un buen uso de tipado dinámico. Es inútil que siento. Por supuesto, estoy equivocado, porque hay tantos lenguajes de tipado dinámico por ahí.

Creo que los lenguajes dinámicos son populares por dos razones.

En primer lugar, son más fáciles de escribir. sistemas de tipo requieren un trabajo extra para hacerlo bien.

En segundo lugar, porque los usuarios del lenguaje dinámico no es necesario para entender un sistema de tipo (estático), muchas personas encuentran lenguajes dinámicos más fácil de usar. Así que mucha gente los prefiere.

Además, la teoría detrás de lenguajes de tipo realmente ha mejorado en la última década. Son mucho más flexible y potente. Así mayor mecanografiado lenguas son menos flexibles y mecanografiado lenguas en general todavía tiene una reputación de ser rígida.

Para mí, el prototipado rápido. Aunque he estado buceando en más 'serios' Python en estos días, he utilizado sobre todo es sólo para elaborar conceptos que me más tarde volver a escribir en C. Creo que fue el autor de Minix que predicó que la mayoría de los programas en C nacen normalmente (sin juego de palabras) como secuencias de comandos shell.

Yo uso PHP para aplicaciones web, así como los servicios de prototipado que hacen negocios serio con una base de datos que son también re-hecho en C una vez que tengo un concepto que estoy feliz.

Como dije, estoy empezando a confiar más Python (y mi habilidad para usarlo), por lo que algunas cosas nacido en Python simplemente permanecer de esa manera. Pero eso es incidental a mi punto, lo menciono simplemente por lo que no molestan los entusiastas de Python:)

Otro punto es, que realmente depende de la lengua. Tipos dinámicos idiomas ofrecen una promesa muy seductora de rápido desarrollo, que es fundamental para muchas personas que necesitan para obtener aplicaciones basadas complejo site en servicio.

Con pocas excepciones, escogería C o C ++ si estaba escribiendo algo absolutamente misión crítica, especialmente cuando el tiempo / momento era de suma importancia.

Es simplemente más fácil de escribir un intérprete de un compilador. Hay (por lo general) menos código a escribir.

Para ejecutar un programa en un lenguaje, es necesario (1) leer el código fuente para que pueda representarlo en algún formato interno (por lo general un árbol), y lo que necesita (2) un sistema de tiempo de ejecución. Esas cosas son necesarias si se utiliza un compilador o un intérprete.

Si se escribe un intérprete para su idioma, es bastante fácil de añadir el paso de ejecución real. Si sólo hay que ejecutar la representación del árbol de su programa, que no requiere mucho código. (Pero será mucho más lento que otros enfoques.)

En un compilador, es necesario traducir en (generalmente) un lenguaje completamente diferente, y también (por lo general) insertar la infraestructura para la gestión de flujo y los recursos del programa. Esto es mucho más trabajo.

Un shell interactivo es una ventaja de un lenguaje interpretado. Esto permite que el código para ser evaluado y probado como está escrito. Es muy mucho más rápido que "acaba de escribir algo de código" que en un lenguaje que espera que se escribe un programa conjunto y luego compilarlo en primer lugar. En las líneas de código de la diferencia podría no ser muy grande, pero el proceso de desarrollo es diferente.

Usted no necesariamente tiene que elegir entre interpretado y compilado. Algunas lenguas tienen tanto una implementación interpretados y compilados por ejemplo, las implementaciones Python / Jython / IronPython. Esto permite que las ventajas de desarrollo del intérprete y el rendimiento y portabilidad ventajas de una máquina virtual (JRE / CLR).

Las ventajas de Wikipedia habla de ventajas para el implementador idioma , no el usuario idioma . Para el usuario de la lengua la desventaja más importante es más lenta la velocidad de ejecución de código interpretado. Una ventaja es que el código puede ser ejecutado de inmediato: usted no tiene que esperar a que la compilación para terminar. Esto no es realmente una ventaja si tiene un compilador rápida y gradual (por ejemplo, los compiladores de Lisp, F # interactiva). Compilar y ejecutar a continuación, es más rápido que la interpretación de código que se ejecuta más de unos pocos milisegundos. Si su código toma menos tiempo que el que se siente al instante de cualquier manera.

Es perfectamente posible tener tipado dinámico, un REPL, ámbito dinámico, eval y la gestión automática de la memoria en un lenguaje compilado. Por ejemplo C # tiene tipado dinámico y de gestión de memoria automática, F # & OCaml tener un REPL, la gestión de memoria automática y Lisp tiene todo lo anterior.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top