2010-11-21 11 views
5

¿por qué la mayoría de los lenguajes de scripting están sueltos? por ejemplo¿Por qué la mayoría de los lenguajes de scripting no tienen tipeo?

javascript, python, etc.?

+0

Creo que obtendrías mejores respuestas si se tratara de una wiki de la comunidad (pero no creo que puedas ahora que la hayas publicado, puedes hacerlo con rep> 100). Esto realmente no tiene una respuesta correcta. –

Respuesta

1

No entiendo muy bien su pregunta. Además de PHP, VBScript, COMMAND.COM y el (los) intérprete (s) de Unix, realmente no puedo pensar en ningún lenguaje de scripting sin tipeo.

Algunos ejemplos de lenguajes de script que no se escriben libremente son Python, Ruby, Mondrian, JavaFX Script, PowerShell, Haskell, Scala, elisp, Esquema, AutoLISP, Io, Ioke, Seph, maravilloso, Fantom, Boo, Cobra, Guile , Pizarra, Smalltalk, Perl, & hellip;

+0

¿Ren't Python y Perlo teclearon libremente? – nbrogi

12

Antes que nada, hay algunos problemas con su terminología. No existe un lenguaje vagamente tipado y el término lenguaje de scripting es también vago, más comúnmente se refiere a los llamados languges de programación dinámica.

Hay débil escribiendo vs. tipado fuerte acerca de cómo rigurosamente se distingue entre los diferentes tipos (es decir, si 1 + "2" rendimientos 3 o un error).

Y hay dinámica vs estática escribir, que es aproximadamente cuando se determina información de tipo - tiempo o antes de ejecutar.

Entonces, ¿qué es un lenguaje dinámico? ¿Un idioma que se interpreta en lugar de compilarse? Seguramente no, ya que la forma en que se ejecuta un idioma nunca es una característica inherente del lenguaje, sino un puro detalle de implementación. De hecho, puede haber intérpretes y compiladores para un mismo idioma. Hay GHC y GHCi para Haskell, incluso C tiene el intérprete Ch.

Pero entonces, ¿qué son los languges dinámicos? Me gustaría definirlos a través de cómo uno trabaja con ellos.

En un lenguaje dinámico, le gusta hacer un prototipo rápido de su programa y simplemente hacer que funcione de alguna manera. Lo que no desea hacer es especificando formalmente el comportamiento de sus programas, solo quiere que se comporte como se esperaba.

Por lo tanto, si usted escribe

foo = greatFunction(42) 
foo.run() 

en un lenguaje de scripting , usted simplemente asumir que hay una cierta greatFunction teniendo un número que devuelve un objeto que pueda run. No se prueba esto para el compilador de ninguna manera, no hay tipos predefinidos, no IRunnable .... Esto automáticamente lo ubica en el dominio de tipado dinámico.

Pero hay tipo de inferencia también. La inferencia tipo significa que en un lenguaje estáticamente tipado, el compilador calcula automáticamente los tipos para usted. El código resultante puede ser extremadamente conciso pero aún está tipado estáticamente.Tome por ejemplo

square list = map (\x -> x * x) list 

en Haskell. Haskell se da cuenta de todos los tipos involucrados aquí de antemano. Tenemos list siendo una lista de números, map alguna función que aplica alguna otra función a cualquier elemento de una lista y square que produce una lista de números de otra lista de números.

Sin embargo, el compilador puede probar que todo funciona con anticipación - las operaciones que sean compatibles con son especificadas formalmente. Por lo tanto, nunca llamaría a Haskell un lenguaje de scripting aunque puede alcanzar niveles similares de expresividad (¡sino más!).


Así que en general, lenguajes de script son escriben de forma dinámica debido a que le permite realizar prototipos de un sistema en funcionamiento sin especificar, pero asumiendo existe cada operación involucrada, que es lo que se utilizan lenguajes de scripting para.

Cuestiones relacionadas