¿Qué hace que un idioma sea un lenguaje de programación? He escuchado a algunas personas decir "cuando se interpreta en lugar de compilar". Eso haría de PHP (por ejemplo) un lenguaje de programación. ¿Es ese el único criterio? ¿O hay otros criterios?
107
Respuestas:
Un lenguaje de secuencias de comandos es un lenguaje que "escribe" otras cosas para hacer cosas. El objetivo principal no es principalmente crear sus propias aplicaciones, sino conseguir que una aplicación existente actúe de la manera que desee, por ejemplo, JavaScript para navegadores, VBA para MS Office.
fuente
Sencillo. Cuando lo uso, es un lenguaje dinámico moderno, cuando lo usas, ¡es simplemente un lenguaje de programación!
fuente
Tradicionalmente, cuando se habla de la diferencia entre scripts y programación, los scripts se interpretan y los programas se compilan. Un lenguaje se puede ejecutar de diferentes formas: interpretado o compilado (a código de bytes o código de máquina). Esto no convierte a un idioma en uno u otro.
En algunos ojos, la forma en que usa un lenguaje lo convierte en un lenguaje de scripting (por ejemplo, los desarrolladores de juegos que desarrollan principalmente en C ++ escribirán los objetos en Lua). Una vez más, las líneas están borrosas: una persona puede usar un lenguaje para una programación y otra puede usar el mismo lenguaje para un lenguaje de secuencias de comandos.
Esto es del artículo de Wikipedia sobre lenguajes de secuencias de comandos:
Notará el uso de "normalmente", "a menudo", "tradicionalmente" y "casi siempre"; todos estos le indican que no existe un conjunto de atributos distintos que hagan de un lenguaje específico un "lenguaje de scripting".
fuente
Realmente creo que ya no hay mucha diferencia. Los denominados lenguajes de "scripting" a menudo se compilan, muy rápidamente y en tiempo de ejecución. Y algunos de los lenguajes de "programación" también se compilan en tiempo de ejecución (piense en JIT) y la primera etapa de "compilación" es la verificación de sintaxis y la resolución de recursos.
No se obsesione con eso, realmente no es importante.
fuente
Mi definición sería un lenguaje que normalmente se distribuye como fuente en lugar de como binario.
fuente
Hay muchas respuestas posibles a esto.
Primero: no se trata realmente de la diferencia entre un lenguaje de programación y un lenguaje de programación, porque un lenguaje de programación es un lenguaje de programación. Es más una cuestión de qué rasgos hacen de un lenguaje de programación 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 "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, el conmutador del sistema de archivos virtual de Linux y el modelo de controlador de Linux están muy orientados a objetos a pesar de estar escritos en C, mientras que gran parte del código Java o C # que ve en la web es muy procedimental y no está orientado a objetos en absoluto . OTOH, he visto 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 lenguaje, ¿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 esa 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 esa 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:
Entonces, después de cinco párrafos, llegué a: "un lenguaje de scripting es un lenguaje para scripting". Qué gran definición. NO.
Obviamente, ahora necesitamos 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 sólo el término "lenguaje de programación funcional" es problemático, desafortunadamente con el scripting, tanto el término "scripting" como el término "lenguaje de scripting "están mal definidos.
Bueno, en primer lugar, escribir es programar. 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 adecuado del conjunto de todos los programas.
En mi opinión personal, lo que hace que las secuencias de comandos sean secuencias de comandos y las distingue de otros tipos de programación es que ...
Piense en un script de shell: los scripts de shell suelen manipular archivos, directorios y procesos. La mayoría de los archivos, directorios y procesos de su sistema probablemente no fueron creados por el script que se está ejecutando actualmente. Y no desaparecen cuando sale el guión: su duración es completamente independiente del guión. Y tampoco son parte del guión, son parte del sistema. No comenzó su script escribiendo
File
yDirectory
clases, esos tipos de datos no son de su incumbencia: simplemente asume que están allí, y ni siquiera sabe (ni necesita saber) cómo funcionan. Y tampoco implementa sus propios algoritmos, por ejemplo, para el recorrido de directorio que simplemente usa enfind
lugar de implementar su propia búsqueda de amplitud primero.En resumen: un script se adhiere a un sistema más grande que existe independientemente del script, manipula una pequeña parte del sistema y luego sale.
Ese sistema más grande puede ser el sistema operativo en el caso de un script de shell, el DOM del navegador en el caso de un script de navegador, un juego (por ejemplo, World of Warcraft con Lua o Second Life con Linden Scripting Language), una aplicación (por ejemplo, AutoLisp idioma 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 de las secuencias de comandos es completamente ortogonal a todos los demás aspectos de los lenguajes de programación: un lenguaje de secuencias de comandos puede tener una tipificación fuerte o débil, una tipificación estricta o flexible, una tipificación estática o dinámica, una tipificación nominal, estructural o de pato, diablos, incluso puede estar sin tipificación . Puede ser imperativo o funcional, orientado a objetos, procedimental o funcional, estricto o vago. Sus implementaciones se pueden interpretar, compilar o mezclar.
Por ejemplo, Mondrian es un lenguaje de scripting funcional perezoso estrictamente tipado estáticamente con una implementación compilada.
Sin embargo, todo esto es discutible, porque la forma en que el término lenguaje de secuencias de comandos se usa realmente en el mundo real no tiene nada que ver con nada de lo anterior. Se usa con mayor frecuencia simplemente como un insulto, y la definición es bastante simple, incluso simplista:
Esta parece ser la forma en que el término se usa con mayor frecuencia.
fuente
Es como la pornografía, lo sabes cuando lo ves. La única definición posible de un lenguaje de secuencias de comandos es:
Un poco circular, ¿no? (Por cierto, no bromeo).
Básicamente, no hay nada que haga de un lenguaje un lenguaje de scripting excepto que es llamado 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, olvido lo que es, pero me sorprendió saber que era anterior a Tcl).
Describo las características de los principales lenguajes de secuencias de comandos en mi artículo :
La mayoría se escribe e interpreta dinámicamente, y la mayoría no tiene una semántica definida fuera de su implementación de referencia. Sin embargo, incluso si su implementación principal se compila o se convierte en JIT, eso no cambia la "naturaleza" del lenguaje.
La única pregunta que queda es cómo se puede saber si un nuevo idioma es un lenguaje de programación. Bueno, si se llama lenguaje de secuencias de comandos, es uno. Entonces, Factor es un lenguaje de programación (o al menos lo era cuando se escribió), pero, digamos, Java no lo es.
fuente
El "lenguaje de secuencias de comandos" es uno de esos conceptos confusos que pueden significar muchas cosas. Por lo general, se refiere al hecho de que existe un proceso de un solo paso que lo lleva del código fuente a la ejecución.
Por ejemplo, en Perl lo hace:
perl my_source.pl
Teniendo en cuenta los criterios anteriores, PHP es un lenguaje de programación (aunque puede tener un proceso de "compilación", por ejemplo, cuando usa Zend Encoder para "proteger" el código fuente).
PD. A menudo (pero no siempre) se interpretan lenguajes de programación. También a menudo (pero de nuevo, no siempre) los lenguajes de script se escriben dinámicamente.
fuente
Todos los lenguajes de secuencias de comandos son lenguajes de programación. Entonces, estrictamente hablando, no hay diferencia.
El término no se refiere a ninguna propiedad fundamental del idioma, se refiere al uso típico del idioma. Si el uso típico es escribir programas cortos que principalmente realizan llamadas a código preexistente, y algún procesamiento simple de los resultados, (es decir, si el uso típico es escribir scripts ), entonces es un lenguaje de scripting.
fuente
Creo que el señor Roberto Ierusalimschy tiene una muy buena respuesta a la pregunta en 'Programación en Lua':
fuente
eval
función completa.Una división es
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 agregar que, como ha señalado Jörg, la distinción interpretado / compilado no es una característica del lenguaje, sino del motor de ejecución.
También te puede interesar esta explicación del sistema de tipos , que está relacionado y se centra más en el aspecto del lenguaje, en lugar del motor de ejecución. La mayoría de los lenguajes de programación se escriben dinámicamente, mientras que los lenguajes "normales" se escriben principalmente de forma estática.
En general, la división de lenguajes tipados estáticamente y dinámicamente está mejor definida y tiene más implicaciones en la usabilidad del lenguaje.
fuente
Un lenguaje de secuencias de comandos suele ser :
Si bien un lenguaje sin secuencias de comandos es ser : 1. Escrito estáticamente 2. Compilado, con énfasis en el rendimiento 3. Requiere más código repetitivo, lo que lleva a una creación de prototipos más lenta pero a una mayor legibilidad y capacidad de mantenimiento a largo plazo 4. Se utiliza 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 se pueden usar de cualquier manera. Y muchos lenguajes de programación, tanto modernos como antiguos, difuminan la línea de todos modos (¡y era borrosa en primer lugar!).
Lo triste es que he conocido a algunos desarrolladores que detestan lo que perciben como "lenguajes de scripting", pensando que son más simples y no tan poderosos. Mi opinión es ese viejo cliché: use la herramienta adecuada para el trabajo.
fuente
Los lenguajes de programación se pensaron originalmente como mecanismos de control para aplicaciones escritas en un lenguaje de programación duro. Los programas compilados no se podían modificar en tiempo de ejecución, por lo que la creación de secuencias de comandos brindaba flexibilidad a las personas.
En particular, el script de shell automatizaba procesos en el kernel del sistema operativo (tradicionalmente, AppleScript en Mac); un rol que pasó cada vez más a las manos de Perl, y luego a Python últimamente. He visto a Scheme (particularmente en su implementación de Guile) usado para declarar escenas de trazado de rayos; y recientemente, Lua es muy popular como lenguaje de programación para los juegos de secuencias de comandos, hasta el punto de que lo único codificado en muchos juegos nuevos es el motor de gráficos / física, mientras que toda la lógica del juego está codificada en Lua. De la misma manera, se pensó en JavaScript para programar el comportamiento de un navegador web.
Las lenguas se emanciparon; nadie piensa ahora en el sistema operativo como una aplicación (o piensa mucho en él), y muchos lenguajes de secuencias de comandos anteriores comenzaron a utilizarse para escribir sus propias aplicaciones completas. El nombre en sí dejó de tener sentido y se extendió a muchos idiomas interpretados que se utilizan hoy en día, independientemente de si están diseñados para ser interpretados desde otro sistema o no.
Sin embargo, "lenguajes de secuencias de comandos" definitivamente no es sinónimo de "lenguajes interpretados"; por ejemplo, BASIC se interpretó durante la mayor parte de su vida (es decir, antes de que perdiera sus siglas y se convirtiera en Visual Basic), pero nadie lo considera como secuencias de comandos.
ACTUALIZACIÓN: Material de lectura como de costumbre disponible en Wikipedia .
fuente
En primer lugar, un lenguaje de programación no es un "lenguaje de secuencias de comandos" o algo más. Puede ser un "lenguaje de secuencias de comandos" y algo más.
Segundo punto, el implementador del lenguaje le dirá si es un lenguaje de scripting.
Su pregunta debería ser "¿En qué implementaciones un lenguaje de programación se consideraría un lenguaje de scripting?", No "¿Cuál es la diferencia entre un lenguaje de scripting y un lenguaje de programación?". No hay intermedio.
Sin embargo, consideraré un lenguaje como un lenguaje de programación si se utiliza para proporcionar algún tipo de software intermedio. Por ejemplo, consideraría la mayoría de las implementaciones de JavaScript como un lenguaje de programación. Si JavaScript se ejecutara en el sistema operativo, no en el navegador, entonces no sería un lenguaje de programación. Si PHP se ejecuta dentro de Apache, es un lenguaje de programación. Si se ejecuta desde la línea de comandos, no lo es.
fuente
Veo un lenguaje de secuencias de comandos como cualquier cosa que no requiera un paso de 'compilación' evidente de sensación de peso. La característica principal desde el punto de vista de los programadores es: edita el 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 lo es realmente.
fuente
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 los lenguajes de scripting se interpretan. Sin embargo, creo que este argumento es completamente falso ... ¿por qué?
Sobre esa 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 propia máquina (memoria, gráficos, sonido, etc.).
Un lenguaje de secuencias de comandos tiene una caja de arena y solo tiene acceso a los objetos expuestos a la caja de arena. No tiene acceso directo a la máquina subyacente.
fuente
En mi opinión, diría que los lenguajes interpretados dinámicamente como PHP, Ruby, etc ... siguen siendo lenguajes "normales". Yo diría que 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 encadenar programas existentes en un sistema en una serie de comandos coherentes y relacionados, como:
Así que diría que la diferencia (para mí, de todos modos) es más en cómo se utiliza el lenguaje. Los lenguajes como PHP, Perl, Ruby podrían usarse como "lenguajes de scripting", pero normalmente los veo usados como "lenguajes normales" (excepto Perl que parece funcionar en ambos sentidos.
fuente
Seguiré adelante y migraré mi respuesta de la pregunta duplicada
El nombre "Lenguaje de secuencias de comandos" se aplica a una función muy específica: el lenguaje en el que escribe comandos para enviar a una aplicación de software existente. (como un "guión" tradicional de televisión o película)
Por ejemplo, una vez, las páginas web HTML eran aburridas. Siempre estaban estáticos. Entonces, un día, Netscape pensó: "Oye, ¿qué pasa si dejamos que el navegador lea y actúe sobre pequeños comandos en la página?" Y así, se formó Javascript.
Un comando javascript simple es el
alert()
comando, que instruye / ordena al navegador (una aplicación de software) que está leyendo la página web para mostrar una alerta.Ahora, ¿está
alert()
relacionado, de alguna manera, con C ++ o con cualquier lenguaje de código que el navegador realmente use para mostrar la alerta? Por supuesto no. Alguien que escribe "alert ()" en una página .html no comprende cómo el navegador muestra realmente la alerta. Solo está escribiendo un comando que el navegador interpretará.Veamos el código javascript simple
Estas son instrucciones que se envían al navegador para que el navegador las interprete por sí mismo. El lenguaje de programación por el que pasa el navegador para establecer una variable en 4 y poner eso en una alerta ... no tiene ninguna relación con javascript.
A esa última serie de comandos la llamamos "secuencia de comandos" (por eso se incluye entre
<script>
etiquetas). Simplemente 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 es los actores, ni la cámara, ni los efectos especiales. El guión simplemente les dice qué hacer.
Ahora, ¿qué es un lenguaje de secuencias de comandos? , exactamente?
Hay muchos lenguajes de programación que son como diferentes herramientas en una caja de herramientas; algunos lenguajes fueron diseñados específicamente para ser usados como escrituras.
Javasript es un ejemplo obvio; Hay muy pocas aplicaciones de Javascript que no entren en el ámbito de las secuencias de comandos.
ActionScript (el lenguaje para animaciones Flash) y sus derivados son lenguajes de scripting, en el sentido de que simplemente envían 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 fin: enviar comandos al reproductor flash.
Python y Ruby también se utilizan comúnmente como lenguajes de programación. Por ejemplo, una vez trabajé para una empresa que usaba Ruby para crear secuencias de comandos para enviar a un navegador que eran del tipo "vaya a este sitio, haga clic en este enlace ..." para realizar algunas pruebas básicas automatizadas. Yo no estaba un "Desarrollador de Software" de ninguna manera, en ese trabajo. Acabo de escribir scripts que envían comandos a la computadora para enviar comandos al navegador.
Debido a su naturaleza, los lenguajes de secuencias de comandos rara vez se 'compilan', es decir, se traducen a código de máquina y se leen directamente por la computadora.
Incluso las aplicaciones GUI creadas a partir de Python y Ruby son scripts que se envían 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 puede decir que Machine Language / C son lenguajes de scripting, porque son scripts que la computadora usa para interactuar con la placa base / tarjetas gráficas / chips básicos?
Hay algunas líneas que podemos dibujar para aclarar:
Cuando puede escribir un lenguaje de secuencias de comandos y ejecutarlo sin "compilar", es más una especie de secuencia de comandos directa. Por ejemplo, no es necesario hacer nada con un guión para decirles a los actores qué hacer con él. Ya está allí, usado, como está. Por esta razón, excluiremos a los lenguajes compilados de ser llamados lenguajes de scripting, aunque se pueden usar con fines de scripting en algunas ocasiones.
El lenguaje de secuencias de comandos implica el envío de comandos a una aplicación de software compleja ; esa es la razón por la que escribimos scripts en primer lugar, por lo que no necesita conocer 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 ensamblador no son suficientes.
fuente
Puedo sugerir que los lenguajes de secuencias de comandos ha sido un término del que mucha gente se está alejando. Yo diría que hoy en día se reduce principalmente a lenguajes compilados y lenguajes dinámicos.
Quiero decir que realmente no puedes decir algo como Python, o Ruby son lenguajes de "scripting" en esta época (incluso tienes cosas como IronPython y JIT-your-favorite-language , la diferencia se ha difuminado aún más).
Para ser honesto, personalmente ya no siento que PHP sea un lenguaje de programación. No esperaría que a la gente le guste categorizar PHP de manera diferente a como dice Java en su currículum.
fuente
Los lenguajes de secuencias de comandos tienden a ejecutarse dentro de un motor de secuencias de comandos 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.
fuente
Un lenguaje de scripting es un lenguaje que se interpreta cada vez que se ejecuta el guión, implica tener un intérprete y la mayoría son muy legibles por humanos, para ser útil un lenguaje de scripting es fácil de aprender y usar.
Cada lenguaje compilable se puede convertir en un lenguaje de escritura y viceversa, todo depende de la implementación de un intérprete o un compilador, como un ejemplo, C ++ tiene un intérprete, por lo que se puede llamar lenguaje de escritura si se usa así (no es muy práctico en general como C ++ es un lenguaje muy complejo), uno de los lenguajes de script más útiles en la actualidad es Python ...
Entonces, para responder a su pregunta, la definición está en el uso de un intérprete para ejecutar programas con guiones rápidos y fáciles, para abordar tareas simples o aplicaciones prototipo, el uso más poderoso que se puede hacer de los lenguajes de guiones es incluir la posibilidad de que cada uso extienda un aplicación compilada.
fuente
Prefiero que la gente no use el término "lenguaje de secuencias de comandos", ya que creo que disminuye el esfuerzo. Tomemos un lenguaje como Perl, a menudo llamado "lenguaje de secuencias de comandos".
¿Por qué incluso necesitamos distinguir entre un lenguaje como Java que está compilado y Ruby que no lo es? ¿Cuál es el valor del etiquetado?
Para obtener más información sobre esto, consulte http://xoa.petdance.com/Stop_saying_script .
fuente
Una diferencia importante es la escritura fuerte (versus la escritura débil ). Los lenguajes de secuencias de comandos suelen tener un tipo débil , lo que hace posible 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 dificulta la refactorización del código.
fuente
Los lenguajes de scripting son lenguajes de programación en los que los programas se entregan normalmente a los usuarios finales en una forma textual legible y donde hay un programa que aparentemente puede ejecutar ese programa directamente. (El programa bien 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 secuencias de comandos admitan una sesión interactiva en la que los usuarios pueden simplemente escribir su programa y ejecutarlo de inmediato. Esto se debe a que se trata de una extensión trivial del requisito esencial del primer párrafo; el principal requisito adicional es la adición de un mecanismo para averiguar cuándo está completa una declaración escrita para poder enviarla al motor de ejecución.
fuente
Para una visión ligeramente diferente de la pregunta. Un lenguaje de programación es un lenguaje de programación, pero un lenguaje de programación no es necesariamente un lenguaje de programación. Se utiliza un lenguaje de programación para controlar o programar un sistema. Ese sistema podría ser un sistema operativo donde el lenguaje de secuencias de comandos sería bash. El sistema podría ser un servidor web con PHP como lenguaje de programación. Los lenguajes de secuencias de comandos están diseñados para cubrir un nicho específico; son lenguajes de dominio específico. Los sistemas interactivos han interpretado lenguajes de scripting dando lugar a la noción de que los lenguajes de scripting se interpretan; sin embargo, esto es una consecuencia del sistema y no del lenguaje de programación en sí.
fuente
Un lenguaje de secuencias de comandos es un lenguaje que configura o amplía un programa existente.
Un lenguaje de secuencias de comandos es un lenguaje de programación.
fuente
La definición de "lenguaje de secuencias de comandos" es bastante confusa. Lo basaría en las siguientes consideraciones:
Los lenguajes de secuencias de comandos no suelen tener pasos de compilación visibles para el usuario. Normalmente, el usuario puede ejecutar programas con un sencillo comando.
Los programas en lenguajes de secuencias de comandos normalmente se transmiten en formato fuente.
Los lenguajes de secuencias de comandos normalmente tienen tiempos de ejecución que están presentes en una gran cantidad de sistemas, y los tiempos de ejecución se pueden instalar fácilmente en la mayoría de los sistemas.
Los lenguajes de secuencias de comandos tienden a ser multiplataforma y no específicos de la máquina.
Los lenguajes de secuencias de comandos facilitan la llamada a otros programas y la interfaz con el sistema operativo.
Los lenguajes de secuencias de comandos suelen integrarse fácilmente en sistemas más grandes escritos en lenguajes de programación más convencionales.
Los lenguajes de secuencias de comandos están normalmente diseñados para facilitar la programación y con mucha menos consideración por la velocidad de ejecución. (Si desea una ejecución rápida, el consejo habitual es codificar las partes que consumen mucho tiempo en algo como C, e incrustar el lenguaje en C o llamar a los bits C desde el lenguaje).
Algunas de las características que enumeré anteriormente son ciertas para las implementaciones, en cuyo caso me refiero a las implementaciones más comunes. Ha habido intérpretes de C, con (AFAIK) ningún paso de compilación obvio, pero eso no es cierto para la mayoría de las implementaciones de C. Ciertamente podría compilar un programa Perl en código nativo, pero no es así como se usa normalmente. Algunas otras características son de naturaleza social. Algunos de los criterios anteriores se superponen un poco. Como dije, la definición es borrosa.
fuente
Yo diría que el lenguaje de secuencias de comandos es el que manipula mucho las entidades que no define por sí mismo. Por ejemplo, JavaScript manipula objetos DOM proporcionados por el navegador, PHP opera una enorme biblioteca de funciones basadas en C, y así sucesivamente. Por supuesto que no es una definición precisa, más una forma de pensar si lo es.
fuente
Si no se ejecuta / no se ejecuta en la CPU, es un script para mí. Si un intérprete necesita ejecutarse en la CPU debajo del programa, entonces es un script y un lenguaje de script.
¿No hay razón para hacerlo más complicado que esto?
Por supuesto, en la mayoría (99%) de los casos, está claro si un lenguaje es un lenguaje de programación. Pero considere que una máquina virtual puede emular el conjunto de instrucciones x86, por ejemplo. ¿No haría esto que el código de bytes x86 sea un lenguaje de secuencias de comandos cuando se ejecuta en una máquina virtual? ¿Qué pasaría si alguien escribiera un compilador que convirtiera el código perl en un ejecutable nativo? En este caso, ya no sabría cómo llamar al idioma en sí. Lo que importaría sería el resultado, no el idioma.
Por otra parte, no estoy al tanto de que se haya hecho algo como esto, por lo que por ahora todavía me siento cómodo llamando lenguajes interpretados de scripting.
fuente
Un guión es un programa relativamente pequeño . Un sistema es un programa relativamente grande o una colección de programas relativamente grandes.
Algunos lenguajes de programación están diseñados con características que el diseñador del lenguaje y la comunidad de programación consideran útiles al escribir programas relativamente pequeños. Estos lenguajes de programación se conocen como lenguajes de secuencias de comandos , por ejemplo, PHP.
De manera similar, otros lenguajes de programación están diseñados con características que el diseñador del lenguaje y la comunidad de programación consideran útiles al escribir programas relativamente grandes. Estos lenguajes de programación se conocen como lenguajes de sistemas. , por ejemplo, Java.
Ahora, los programas grandes y pequeños se pueden escribir en cualquier idioma. Un pequeño programa de Java es un script. Por ejemplo, un programa Java "Hello World" es un script, no un sistema. Un programa grande, o colección de programas, escrito en PHP es un sistema. Por ejemplo, Facebook, escrito en PHP, es un sistema, no un script.
Es cuestionable considerar una característica de un solo lenguaje como una "prueba de fuego" para decidir si el lenguaje es el más adecuado para scripts o programación de sistemas. Por ejemplo, los scripts pueden compilarse en código de bytes o código de máquina, o pueden ejecutarse mediante interpretación directa de árbol de sintaxis abstracta (AST).
Por lo tanto, un lenguaje es un lenguaje de secuencias de comandos si se usa normalmente para escribir secuencias de comandos . Se puede utilizar un lenguaje de secuencias de comandos para escribir sistemas, pero es probable que estas aplicaciones se consideren dudosas.
fuente