programming languages - language - ¿Cuándo se considera que un lenguaje es un lenguaje de scripting?
javascript pdf (30)
"Un guión es lo que le das a los actores. Un programa es lo que le das a la audiencia". - Larry Wall
Realmente no creo que haya mucha diferencia más. Los lenguajes llamados "scripting" a menudo se compilan, solo muy rápidamente y en tiempo de ejecución. Y algunos de los lenguajes de "programación" también se compilan en el tiempo de ejecución (piense en JIT) y la primera etapa de "compilación" es la comprobación de sintaxis y la resolución de recursos.
No te obsesiones, realmente no es importante.
¿Qué hace que un lenguaje sea un lenguaje de scripting? He escuchado a algunas personas decir "cuando se interpreta en lugar de compilarse". Eso haría PHP (por ejemplo) un lenguaje de scripting. ¿Es ese el único criterio? ¿O hay otros criterios?
Ver también:
Creo que el Sr. Roberto Ierusalimschy tiene una muy buena respuesta o la pregunta en ''Programación en Lua'':
Sin embargo, la característica distintiva de los lenguajes interpretados no es que no se compilan, sino que cualquier compilador es parte del tiempo de ejecución del lenguaje y que, por lo tanto, es posible (y fácil) ejecutar el código generado sobre la marcha.
El "lenguaje de scripting" es uno de esos conceptos difusos que puede significar muchas cosas. Por lo general, se refiere al hecho de que existe un proceso de un paso que lo lleva del código fuente a la ejecución.
Por ejemplo, en Perl lo haces: perl my_source.pl
Teniendo en cuenta los criterios anteriores, PHP es un lenguaje de scripting (aunque puede tener un proceso de "compilación", por ejemplo, al usar Zend Encoder para "proteger" el código fuente).
PD. A menudo (pero no siempre) los lenguajes de scripting son interpretados. También a menudo (pero de nuevo, no siempre) los lenguajes de scripting se tipan dinámicamente.
En My Opinion, diría que los lenguajes dinámicamente interpretados como PHP, Ruby, etc ... aún son lenguajes "normales". Diría que los ejemplos de lenguajes de "scripting" son cosas como bash (o ksh o tcsh o lo que sea) o sqlplus. Estos lenguajes se utilizan a menudo para unir los programas existentes en un sistema en una serie de comandos coherentes y relacionados, tales como:
- copie A.txt a / tmp / work /
- ejecutar el proceso de limpieza nocturno en el servidor de la base de datos
- registrar los resultados y enviarlos a la sysdamin
Entonces, yo diría que la diferencia (para mí, de todos modos) está más en la forma en que usas el lenguaje. Los lenguajes como PHP, Perl, Ruby podrían usarse como "lenguajes de scripting", pero generalmente los veo como "lenguajes normales" (excepto Perl, que parece funcionar en ambos sentidos).
Es como porno, lo sabes cuando lo ves. La única definición posible de un lenguaje de script es:
A language which is described as a scripting language.
Un poco circular, ¿no? (Por cierto, no estoy bromeando).
Básicamente, no hay nada que haga que un lenguaje sea un lenguaje de scripting, excepto que se lo llame así, especialmente por sus creadores. El conjunto principal de lenguajes de scripting modernos es PHP, Perl, JavaScript, Python, Ruby y Lua. Tcl es el primer lenguaje de scripting moderno importante (aunque no fue el primer lenguaje de scripting, me olvido de lo que es, pero me sorprendió saber que era anterior a Tcl).
Describo las características de los principales lenguajes de scripting en mi artículo :
A Practical Solution for Scripting Language Compilers
Paul Biggar, Edsko de Vries and David Gregg
SAC ''09: ACM Symposium on Applied Computing (2009), (March 2009)
La mayoría se tipean e interpretan dinámicamente, y la mayoría no tienen una semántica definida fuera de su implementación de referencia. Sin embargo, incluso si su implementación principal se compila o JIT, eso no cambia la "naturaleza" del lenguaje.
La única pregunta que les queda es cómo pueden saber si un nuevo idioma es un lenguaje de scripting. Bueno, si se llama lenguaje de scripting, es uno. Así que Factor es un lenguaje de scripting (o al menos fue cuando eso fue escrito), pero, por ejemplo, Java no lo es.
Hay muchas respuestas posibles a esto.
Primero: en realidad no se trata de la diferencia entre un lenguaje de scripting y un lenguaje de programación, porque un lenguaje de scripting es un lenguaje de programación. Es más una cuestión de qué características hacen que un lenguaje de programación sea un lenguaje de scripting mientras que otro lenguaje de programación no es un lenguaje de scripting.
Segundo: es realmente difícil decir qué es un lenguaje XYZ, ya sea que XYZ sea "scripting", "programación funcional", "programación orientada a objetos" o lo que sea. La definición de lo que es "programación funcional" es bastante clara, pero nadie sabe qué es un "lenguaje de programación funcional".
La programación funcional o la programación orientada a objetos son estilos de programación; puede escribir en un estilo funcional o en un estilo orientado a objetos en prácticamente cualquier idioma. Por ejemplo, Linux Virtual File System Switch y Linux Driver Model están fuertemente orientados a objetos a pesar de estar escritos en C, mientras que muchos de los códigos Java o C # que se ven en la web son muy procesales y no están orientados a objetos. OTOH, he visto un código Java muy funcional.
Entonces, si la programación funcional y la programación orientada a objetos son simplemente estilos que se pueden hacer en cualquier idioma, entonces, ¿cómo se define un "lenguaje de programación orientado a objetos"? Se podría decir que un lenguaje de programación orientado a objetos es un lenguaje que permite la programación orientada a objetos. Pero eso no es una gran definición: todos los lenguajes permiten la programación orientada a objetos, ¿por lo tanto, todos los lenguajes están orientados a objetos? Entonces, dices, bueno, un lenguaje está orientado a objetos, si te obliga a programar en un estilo orientado a objetos. Pero eso tampoco es una gran definición: todos los lenguajes permiten la programación funcional, por lo tanto, ¿ ningún lenguaje está orientado a objetos?
Entonces, para mí, he encontrado la siguiente definición:
Un lenguaje es un lenguaje de scripting (lenguaje de lenguaje / funcional orientado a objetos) si ambos
- facilita el scripting (programación funcional / programación orientada a objetos), es decir, no solo lo permite sino que lo hace fácil y natural y contiene funciones que lo ayudan , Y
- lo alienta y le guía hacia el scripting (programación orientada a objetos / programación funcional).
Entonces, después de cinco párrafos, he llegado a: "un lenguaje de scripting es un lenguaje para scripting". Qué gran definición. NO.
Obviamente, ahora tenemos que mirar la definición de "scripting".
Aquí es donde entra el tercer problema: mientras que el término "programación funcional" está bien definido y es solo el término "lenguaje de programación funcional" que es problemático, desafortunadamente con scripting, tanto el término "scripting" como el término "lenguaje de script" "están mal definidos.
Bueno, primero el scripting es la programación. Es solo un tipo especial de programación. IOW: cada script es un programa, pero no todos los programas son un script; el conjunto de todos los scripts es un subconjunto apropiado del conjunto de todos los programas.
En mi opinión personal, lo que hace que el scripting scripting y lo distingue de otros tipos de programación, es que ...
Los scripts manipulan en gran medida objetos que
- no fueron creados por el script,
- tener una vida independiente del guion y
- vivir fuera del dominio de la secuencia de comandos.
Además, los tipos de datos y algoritmos utilizados generalmente no están definidos por el script, sino por el entorno externo.
Piense en un script de shell: los scripts de shell usualmente manipulan archivos, directorios y procesos. La mayoría de los archivos, directorios y procesos en su sistema probablemente no fueron creados por el script actualmente en ejecución. Y no se desvanecen cuando sale el guión: su duración es completamente independiente del guión. Y tampoco forman parte del guión, son parte del sistema. Usted no inició su script escribiendo clases de File
y Directory
, esos tipos de datos no son de su incumbencia: simplemente asume que están ahí, y ni siquiera sabe (ni necesita saber) cómo funcionan. Y tampoco implementa sus propios algoritmos, por ejemplo, para el recorrido de directorios que acaba de usar find
lugar de implementar su propia búsqueda de ancho primero.
En resumen: una secuencia de comandos se une a un sistema más grande que existe independientemente de la secuencia de comandos, manipula una pequeña parte del sistema y luego se cierra.
Ese sistema más grande puede ser el sistema operativo en caso de un script de shell, el navegador DOM en el caso de un script del navegador, un juego (por ejemplo, World of Warcraft con Lua o Second Life con el lenguaje Linden Scripting), una aplicación (por ejemplo, el AutoLisp lenguaje para AutoCAD o macros de Excel / Word / Office), un servidor web, un paquete de robots o algo completamente diferente.
Tenga en cuenta que el aspecto del guión es completamente ortogonal a todos los demás aspectos de los lenguajes de programación: un lenguaje de scripting puede ser fuerte o débilmente tipeado, tipeado estrictamente o flojamente, tipado estática o dinámicamente, nominalmente, estructuralmente o tipado en pato, diablos puede incluso ser tipeado . Puede ser imperativo o funcional, orientado a objetos, de procedimiento o funcional, estricto o perezoso. Sus implementaciones pueden ser interpretadas, compiladas o mezcladas.
Por ejemplo, Mondrian es un lenguaje de scripting funcional perezoso estrictamente estático con una implementación compilada.
Sin embargo, todo esto es discutible, porque la forma en que el término lenguaje de scripting se usa realmente en el mundo real, no tiene nada que ver con ninguno de los anteriores. Se usa más a menudo simplemente como un insulto, y la definición es bastante simple, incluso simplista:
- lenguaje de programación real : mi lenguaje de programación
- lenguaje de scripting: tu lenguaje de programación
Esta parece ser la forma en que el término se usa con más frecuencia.
La definición de "lenguaje de scripting" es bastante borrosa. Me basaría en las siguientes consideraciones:
Los lenguajes de scripts generalmente no tienen pasos de compilación visibles para el usuario. Normalmente, el usuario puede ejecutar programas en un solo comando.
Los programas en lenguajes de scripting normalmente se pasan en forma de fuente.
Scripting languages normally have runtimes that are present on a large number of systems, and the runtimes can be installed easily on most systems.
Scripting languages tend to be cross-platform and not machine-specific.
Scripting languages make it easy to call other programs and interface with the operating system.
Scripting languages are usually easily embeddable into larger systems written in more conventional programming languages.
Scripting languages are normally designed for ease of programming, and with much less regard for execution speed. (If you want fast execution, the usual advice is to code the time-consuming parts in something like C, and either embed the language into C or call C bits from the language.)
Some of the characteristics I listed above are true of implementations, in which case I''m referring to the more common implementations. There have been C interpreters, with (AFAIK) no obvious compile step, but that''s not true of most C implementations. You could certainly compile a Perl program to native code, but that''s not how it''s normally used. Some other characteristics are social in nature. Some of the above criteria overlap somewhat. As I said, the definition is fuzzy.
Los lenguajes de scripting se pensaron originalmente como mecanismos de control para aplicaciones escritas en un lenguaje de programación difícil. Los programas compilados no se pudieron modificar en tiempo de ejecución, por lo que las secuencias de comandos le daban flexibilidad a las personas.
En particular, el script de shell automatizaba procesos en el núcleo del sistema operativo (tradicionalmente, AppleScript en Mac); un papel que más y más pasó a las manos de Perl, y luego salió de él en Python últimamente. He visto Scheme (particularmente en su implementación Guile) utilizado para declarar escenas de trazado de rayos; y recientemente, Lua es muy popular como el lenguaje de programación para guiones de juegos, hasta el punto que la única cosa codificada en muchos juegos nuevos es el motor de gráficos / física, mientras que la lógica del juego está codificada en Lua. De la misma manera, se pensó que JavaScript guiaba el comportamiento de un navegador web.
Los lenguajes emancipados; nadie ahora piensa en el sistema operativo como una aplicación (o lo piensa mucho en absoluto), y muchos lenguajes de guiones anteriores comenzaron a usarse para escribir aplicaciones completas propias. El nombre en sí no tuvo sentido y se extendió a muchos idiomas interpretados en uso hoy en día, independientemente de si están diseñados para ser interpretados desde dentro de otro sistema o no.
Sin embargo, "lenguajes de scripting" definitivamente no es sinónimo de "lenguajes interpretados" - por ejemplo, BASIC fue interpretado la mayor parte de su vida (es decir, antes de que perdiera su acronimidad y se convirtiera en Visual Basic), sin embargo, nadie realmente piensa en ello scripting
ACTUALIZACIÓN: material de lectura como de costumbre disponible wikipedia .
Los lenguajes de scripting son lenguajes de programación donde los programas se entregan típicamente a los usuarios finales en una forma de texto legible y donde hay un programa que aparentemente puede ejecutar ese programa directamente. (El programa puede compilar el script internamente, eso no es relevante aquí porque no es visible para el usuario).
Es relativamente común que los lenguajes de scripting sean compatibles con una sesión interactiva en la que los usuarios pueden simplemente escribir su programa y ejecutarlo inmediatamente. Esto se debe a que esta es una extensión trivial del requisito esencial del primer párrafo; el requisito adicional principal es la adición de un mecanismo para determinar cuándo se completa una declaración escrita a máquina para que pueda enviarse al motor de ejecución.
Los lenguajes de scripting tienden a ejecutarse dentro de un motor de scripting que es parte de una aplicación más grande. Por ejemplo, JavaScript se ejecuta dentro del motor de secuencias de comandos de su navegador.
Mi amigo y yo acabamos de tener este argumento: ¿Cuál es la diferencia entre un lenguaje de programación y un lenguaje de scripting?
Un argumento popular es que los lenguajes de programación se compilan y se interpretan los lenguajes de scripting. Sin embargo, creo que este argumento es completamente falso ... ¿por qué?
- Chakra & V8 (motores de JavaScript de Microsoft y Google) compilan el código antes de la ejecución
- Se interpreta QBasic: ¿esto hace que Qbasic sea un lenguaje de "secuencias de comandos"?
Sobre esta base, este es mi argumento para la diferencia entre un lenguaje de programación y un lenguaje de scripting:
Un lenguaje de programación se ejecuta a nivel de máquina y tiene acceso a la máquina misma (memoria, gráficos, sonido, etc.).
Un lenguaje de scripts está enmarcado en arena y solo tiene acceso a los objetos expuestos a la caja de arena. No tiene acceso directo a la máquina subyacente.
Mi definición sería un lenguaje que normalmente se distribuye como fuente en lugar de binario.
Para una toma ligeramente diferente de la pregunta. Un lenguaje de scripting es un lenguaje de programación, pero un lenguaje de programación no es necesariamente un lenguaje de scripting. Un lenguaje de scripting se usa para controlar o guiar un sistema. Ese sistema podría ser un sistema operativo donde el lenguaje de scripting sería bash. El sistema podría ser un servidor web con PHP el lenguaje de scripting. Los lenguajes de scripting están diseñados para llenar un nicho específico; son idiomas específicos del dominio. Los sistemas interactivos han interpretado los lenguajes de scripting dando lugar a la idea de que los lenguajes de scripting son interpretados; sin embargo, esto es una consecuencia del sistema y no del lenguaje de scripting en sí mismo.
Prefiero que la gente no use el término "lenguaje de scripting" ya que creo que disminuye el esfuerzo. Tome un lenguaje como Perl, a menudo llamado "lenguaje de scripting".
- Perl es un lenguaje de programación!
- Perl está compilado como Java y C ++. ¡Se compiló mucho más rápido!
- Perl tiene objetos y espacios de nombres y cierres.
- Perl tiene IDEs y depuradores y perfiladores.
- Perl tiene entrenamiento y apoyo y comunidad.
- Perl no es solo web. Perl no es solo administrador de sistemas. Perl no es solo la cinta aislante de Internet.
¿Por qué incluso tenemos que distinguir entre un lenguaje como Java que se compila y Ruby que no? ¿Cuál es el valor en el etiquetado?
Para obtener más información al respecto, consulte http://xoa.petdance.com/Stop_saying_script .
Primero, un lenguaje de programación no es un "lenguaje de guiones" o algo más. Puede ser un "lenguaje de scripting" y algo más.
Segundo punto, el implementador del lenguaje le dirá si es un lenguaje de scripting.
Su pregunta debería decir "¿En qué implementaciones se consideraría un lenguaje de programación un lenguaje de scripting?", No "¿Cuál es la diferencia entre un lenguaje de scripting y un lenguaje de programación?". No hay intermedios.
Sin embargo, consideraré un lenguaje un lenguaje de scripting si se utiliza para proporcionar algún tipo de middleware. Por ejemplo, consideraría que la mayoría de las implementaciones de JavaScript son un lenguaje de scripting. Si JavaScript se ejecutara en el SO, no en el navegador, entonces no sería un lenguaje de scripting. Si PHP se ejecuta dentro de Apache, es un lenguaje de scripting. Si se ejecuta desde la línea de comandos, no lo es.
Puedo sugerir que los lenguajes de scripting han sido un término del que muchas personas se están alejando. Diría que en su mayoría se reduce a idiomas compilados y a lenguajes dinámicos hoy en día.
Quiero decir que realmente no puedes decir algo como Python, o Ruby están "escribiendo guiones" de idiomas en este día y edad (incluso tienes cosas como IronPython y JIT-tu-idioma favorito , la diferencia ha sido aún más borrosa).
Para ser honesto, personalmente, no creo que PHP sea un lenguaje de scripting. No esperaría que a las personas les gusta categorizar PHP de forma diferente a decir Java en su currículum.
Sencillo. Cuando lo uso, es un lenguaje dinámico y moderno, cuando lo usa, ¡es meramente un lenguaje de scripting!
Todos los lenguajes de scripting son lenguajes de programación. Tan estrictamente hablando, no hay diferencia.
El término no se refiere a ninguna propiedad fundamental del lenguaje, sino que se refiere al uso típico del idioma. Si el uso típico es escribir programas cortos que principalmente hacen llamadas a código preexistente, y algún procesamiento simple en los resultados (es decir, si el uso típico es escribir scripts ) entonces es un lenguaje de scripting.
Tradicionalmente, cuando se habla de la diferencia entre scripting y programación, los scripts se interpretan y los programas se compilan. Un idioma se puede ejecutar de diferentes maneras: interpretado o compilado (a código de bytes o de máquina). Esto no hace que un idioma sea uno u otro.
En algunos ojos, la forma en que usas un lenguaje lo convierte en un lenguaje de scripting (por ejemplo, los desarrolladores de juegos que se desarrollan principalmente en C ++ escribirán los objetos en Lua). De nuevo, las líneas son borrosas: un idioma puede ser utilizado por una persona para programarlo y otro puede usar el mismo lenguaje para guiones.
Esto es del artículo de wikipedia sobre lenguajes de scripting:
Un lenguaje de script, lenguaje de script o lenguaje de extensión es un lenguaje de programación que permite el control de una o más aplicaciones de software. Los "scripts" son distintos del código central de la aplicación, ya que generalmente se escriben en un idioma diferente y, a menudo, se crean o, al menos, modifican los usuarios finales. Los scripts a menudo se interpretan a partir de código fuente o bytecode, mientras que las aplicaciones que controlan se compilan tradicionalmente en código máquina nativo. Los lenguajes de scripting casi siempre están integrados en las aplicaciones que controlan.
Notará el uso de "normalmente", "a menudo", "tradicionalmente" y "casi siempre"; todos estos le dicen que no existe un conjunto de atributos distintivos que hagan de un lenguaje específico un "lenguaje de scripting".
Un lenguaje de scripting es típicamente :
- Tipeado dinámicamente
- Interpretado, con muy poco énfasis en el rendimiento, pero buena portabilidad
- Requiere mucho menos código repetitivo , lo que lleva a la creación rápida de prototipos
- Se utiliza para tareas pequeñas, adecuado para escribir un solo archivo para ejecutar algunos "guiones" útiles.
Mientras que un lenguaje que no es de scripting suele ser : 1. Estáticamente tipeado 2. Compilado, con énfasis en el rendimiento 3. Requiere más código repetitivo, lo que lleva a un prototipado más lento pero más legibilidad y mantenibilidad a largo plazo 4. Utilizado para proyectos grandes, se adapta a muchos patrones de diseño
Pero es más una diferencia histórica hoy en día, en mi opinión. Javascript y Perl se escribieron con scripts pequeños y simples en mente, mientras que C ++ se escribió con aplicaciones complejas en mente; pero ambos pueden usarse de cualquier manera. Y muchos lenguajes de programación, tanto modernos como antiguos, difuminan la línea de todos modos (¡y en primer lugar, era difusa!).
Lo triste es que he conocido a algunos desarrolladores que aborrecen lo que perciben como "lenguajes de scripting", pensando que son más simples y no tan poderosos. Mi opinión es ese viejo cliché: usa la herramienta adecuada para el trabajo.
Un lenguaje de scripting es un lenguaje que "codifica" otras cosas para hacer cosas. El objetivo principal no consiste principalmente en crear sus propias aplicaciones sino en hacer que una aplicación existente actúe de la manera que desee, por ejemplo, JavaScript para navegadores, VBA para MS Office.
Un lenguaje de scripting es un lenguaje que se interpreta cada vez que se ejecuta el script, implica tener un intérprete y la mayoría es muy legible, para que sea útil, un lenguaje de scripting es fácil de aprender y usar.
Cada lenguaje compilable se puede convertir en un lenguaje de script y viceversa, todo depende de la implementación de un intérprete o un compilador, como ejemplo, C ++ tiene un intérprete por lo que se puede llamar un lenguaje de script si se usa (no es muy práctico en general como C ++ es un lenguaje muy complejo), uno de los lenguajes de script más útiles actualmente es Python ...
Entonces, para responder a su pregunta, la definición es sobre el uso de un intérprete para ejecutar programas con guiones rápidos y fáciles, para abordar tareas simples o prototipos de aplicaciones. El uso más poderoso que se puede hacer de los lenguajes de guiones es incluir la posibilidad de ampliar cada aplicación compilada.
Un lenguaje de scripts es un lenguaje que configura o amplía un programa existente.
Un lenguaje de scripting es un lenguaje de programación.
Una diferencia importante es la tipificación fuerte (frente a la tipificación débil ). Los lenguajes de scripting a menudo son de tipo débil , lo que permite escribir programas pequeños más rápidamente. Para programas grandes, esto es una desventaja, ya que inhibe al compilador / intérprete para encontrar ciertos errores de forma autónoma, lo que hace que sea muy difícil refactorizar el código.
Una división es
- scripting = interpretado dinámicamente
- normal = compilado
Un lenguaje interpretado dinámicamente se interpreta en tiempo de ejecución mientras que un lenguaje compilado se compila antes de la ejecución.
Debo añadir que, como ha señalado Jörg, la distinción interpretada / compilada no es una característica del lenguaje, sino del motor de ejecución.
Es posible que también le interese esta explicación del sistema Tipo , que está relacionado y se centra más en el aspecto del idioma, en lugar del motor de ejecución. La mayoría de los lenguajes de scripting se tipean dinámicamente, mientras que los lenguajes "normales" son en su mayoría tipados estáticamente.
En general, la división de lenguajes estáticos vs dinámicos está mejor definida y tiene más implicaciones en la usabilidad del lenguaje.
Veo un lenguaje de scripting como cualquier cosa que no requiera un paso evidente de compilación de sentimientos pesados. La característica principal desde el punto de vista de los programadores es: edita código y lo ejecuta de inmediato.
Por lo tanto, consideraría JavaScript y PHP como lenguajes de scripting, mientras que ActionScript 3 / Flex no es realmente.
Voy a continuar y migrar mi respuesta de la pregunta duplicada
El nombre "Lenguaje de secuencias de comandos" se aplica a un rol muy específico: el idioma que se escribe comandos para enviar a una aplicación de software existente. (como un "guión" tradicional de televisión o película)
Por ejemplo, alguna vez, las páginas web HTML eran aburridas. Siempre fueron estáticos. Entonces, un día, Netscape pensó: "Oye, ¿y si dejamos que el navegador lea y actúe con pequeños comandos en la página?" Y así, se formó Javascript.
Un comando simple de javascript es el comando alert()
, que instruye / ordena al navegador (una aplicación de software) que está leyendo la página web para mostrar una alerta.
Ahora, ¿ alert()
relaciona, de alguna manera, con C ++ o con el lenguaje de código que el navegador usa para mostrar la alerta? Por supuesto no. Alguien que escribe "alert ()" en una página .html no entiende cómo el navegador realmente muestra la alerta. Él solo está escribiendo un comando que el navegador interpretará.
Veamos el código simple de JavaScript
<script>
var x = 4
alert(x)
</script>
Estos son instrucciones que se envían al navegador, para que el navegador pueda interpretar en sí mismo. El lenguaje de programación por el que pasa el navegador realmente establece una variable en 4 y la pone en una alerta ... no tiene relación alguna con javascript.
Llamamos a esa última serie de comandos un "script" (por lo que se incluye en las etiquetas <script>
). Solo por la definición de "guión", en el sentido tradicional: una serie de instrucciones y comandos enviados a los actores . Todo el mundo sabe que un guión (un guión de película), por ejemplo, es un guión.
El guión (guión) no son los actores, la cámara o los efectos especiales. El guión simplemente les dice qué hacer.
Ahora, ¿qué es un lenguaje de scripting, exactamente?
Hay muchos lenguajes de programación que son como diferentes herramientas en una caja de herramientas; algunos idiomas fueron diseñados específicamente para ser utilizados como scripts.
Javasript es un ejemplo obvio; hay muy pocas aplicaciones de Javascript que no caigan dentro del dominio de las secuencias de comandos.
ActionScript (el lenguaje para animaciones Flash) y sus derivados son lenguajes de scripting, ya que simplemente emiten comandos al reproductor / intérprete de Flash. Claro, hay abstracciones como la programación orientada a objetos, pero todo eso es simplemente un medio para el final: enviar comandos al reproductor flash.
Python y Ruby también se usan comúnmente como lenguajes de scripting. Por ejemplo, una vez trabajé para una empresa que usaba Ruby para ejecutar comandos de script para enviar a un navegador que estaba en la línea de "ir a este sitio, hacer clic en este enlace ..." para realizar algunas pruebas automáticas básicas. Yo no era un "Desarrollador de software" de ninguna manera en ese trabajo. Acabo de escribir scripts que enviaron comandos a la computadora para enviar comandos al navegador.
Debido a su naturaleza, los lenguajes de script rara vez se "compilan", es decir, se traducen en código máquina y se leen directamente en la computadora.
Incluso las aplicaciones GUI creadas a partir de Python y Ruby son scripts enviados a una API escrita en C ++ o C. Le dice a la aplicación C qué hacer.
Hay una línea de vaguedad, por supuesto. ¿Por qué no puedes decir que Machine Language / C son lenguajes de scripting, porque son scripts que la computadora usa para interactuar con la placa madre básica / tarjetas gráficas / chips?
Hay algunas líneas que podemos dibujar para aclarar:
Cuando puede escribir un lenguaje de scripts y ejecutarlo sin "compilar", se trata más bien de una secuencia de comandos directos. Por ejemplo, no es necesario hacer nada con un guión para decirles a los actores qué hacer con él. Ya está allí, usado, tal como está. Por este motivo, excluiremos los lenguajes compilados de los llamados lenguajes de scripting, aunque en ocasiones se pueden usar para scripting.
El lenguaje de scripting implica comandos enviados a una aplicación de software compleja ; esa es la razón principal por la que escribimos guiones, por lo que no es necesario que conozca las complejidades de cómo funciona el software para enviarle comandos. Por lo tanto, los lenguajes de scripting tienden a ser lenguajes que envían comandos (relativamente) simples a aplicaciones de software complejas ... en este caso, el lenguaje de máquina y el código de ensamblaje no lo cortan.
A scripting language is a programming language designed for integrating and communicating with other programming languages. You can also say it instructs others to do stuff
I would say scripting language is the one heavily manipulating entities it doesn''t itself define. For instance, JavaScript manipulates DOM objects provided by the browser, PHP operates enormous library of C-based functions, and so on. Of course not a precise definition, more a way to think if it.
If it doesn''t/ wouldn''t run on the CPU, it''s a script to me. If an interpreter needs to run on the CPU below the program, then it''s a script and a scripting language.
No reason to make it any more complicated than this?
Of course, in most (99%) of cases, it''s clear whether a language is a scripting language. But consider that a VM can emulate the x86 instruction set, for example. Wouldn''t this make the x86 bytecode a scripting language when run on a VM? What if someone was to write a compiler that would turn perl code into a native executable? In this case, I wouldn''t know what to call the language itself anymore. It''d be the output that would matter, not the language.
Then again, I''m not aware of anything like this having been done, so for now I''m still comfortable calling interpreted languages scripting languages.