sustained - terminology synonym
¿Cuál es la diferencia entre un "script" y una "aplicación"? (20)
A menudo es solo un argumento semántico, o incluso una forma de denigrar ciertos lenguajes de programación. En lo que a mí respecta, un "guión" es un tipo de programa, y la definición exacta es algo vaga y varía con el contexto.
Podría usar el término "guión" para referirme a un programa que se ejecuta principalmente de forma lineal, en lugar de con una gran cantidad de lógica secuencial o subrutinas, muy parecido a un "guión" en Hollywood, es una secuencia lineal de instrucciones para que ejecute un actor. Podría usarlo para referirme a un programa que está escrito en un lenguaje incrustado dentro de un programa más grande, con el propósito de conducir ese programa. Por ejemplo, la automatización de tareas bajo el viejo Mac OS con AppleScript o la conducción de un programa que se expone de alguna manera con una interfaz TCL integrada.
Pero en todos esos casos, un script es un tipo de programa.
El término "lenguaje de scripting" se ha usado para lenguajes interpretados dinámicamente (a veces compilados), generalmente estos tienen muchas características comunes como instrucciones de alto nivel, hashes incorporados y listas de longitud arbitraria y otras estructuras de datos de alto nivel, etc. Pero esos lenguajes son capaces de programas muy grandes, complicados, modulares y bien diseñados, así que si piensas en un "script" como algo más que un programa, ese término podría confundirte.
Ver también ¿Es un programa Perl o un script Perl? en perlfaq1.
Me refiero a distinciones como en esta respuesta :
... bash no es para aplicaciones de escritura es para, bueno, scripting. Así que, seguro, su aplicación puede tener algunos scripts de limpieza, pero no va a escribir
critical-business-logic.sh
porque probablemente otro idioma sea mejor para ese tipo de cosas.
Como programador que trabajó en muchos idiomas, esto parece ser C, Java y otros snobbery de lenguaje compilado. No estoy buscando la aplicación de mi opinión o las respuestas onduladas a mano. Más bien, genuinamente quiero saber a qué diferencias técnicas se refieren.
(Y uso C en mi trabajo diario, así que no solo estoy a la defensiva).
En realidad, la diferencia entre una secuencia de comandos (o un lenguaje de scripting) y una aplicación es que una secuencia de comandos no requiere que se compile en el lenguaje de máquina. Ejecuta la fuente de la secuencia de comandos con un intérprete. Una aplicación compila la fuente en código de máquina para que pueda ejecutarlo como una aplicación independiente.
Este es un tema interesante, y no creo que haya muy buenas pautas para diferenciar un "guión" y una "aplicación".
Echemos un vistazo a algunos artículos de Wikipedia para tener una idea de la distinción.
Script (Wikipedia -> lenguaje de scripting):
Un lenguaje de script, lenguaje de script o lenguaje de extensión, es un lenguaje de programación que controla una aplicación de software. "Scripts" a menudo se tratan como distintos de los "programas", que se ejecutan independientemente de cualquier otra aplicación. Al mismo tiempo, son distintos del código central de la aplicación, que generalmente se escribe en un idioma diferente, y al ser accesibles para el usuario final, permiten que el comportamiento de la aplicación se adapte a las necesidades del usuario.
Aplicación (Wikipedia -> Software de aplicación -> Terminología)
En informática, una aplicación es un programa informático diseñado para ayudar a las personas a realizar cierto tipo de trabajo. Por lo tanto, una aplicación difiere de un sistema operativo (que ejecuta una computadora), una utilidad (que realiza tareas de mantenimiento o tareas de uso general) y un lenguaje de programación (con el que se crean programas informáticos). Dependiendo del trabajo para el que fue diseñado, una aplicación puede manipular texto, números, gráficos o una combinación de estos elementos.
Leer las entradas anteriores parece sugerir que la distinción es que un script está "alojado" en otro software, mientras que una aplicación no lo está. Supongo que se puede argumentar, como las secuencias de comandos de shell que controlan el comportamiento del shell, y las secuencias de comandos perl que controlan el comportamiento del intérprete para realizar las operaciones deseadas. (Siento que esto puede ser un poco exagerado, por lo que puede que no esté completamente de acuerdo con eso).
A mi juicio, la distinción coloquial se puede hacer en términos de la escala del programa. Los scripts son generalmente de menor escala en comparación con las aplicaciones.
Además, en términos de la finalidad, una secuencia de comandos generalmente realiza tareas que se deben tener en cuenta, por ejemplo, crear scripts que producen versiones de lanzamiento múltiples para una determinada pieza de software. Por otro lado, las aplicaciones están orientadas a proporcionar una funcionalidad que es más refinada y orientada hacia un usuario final. Por ejemplo, Notepad o Firefox.
La secuencia de comandos para mí implica una interpretación línea por línea del código. Puede abrir un script y ver sus contenidos legibles por el programador. Una aplicación implica un ejecutable compilado independiente.
Personalmente, creo que la separación es un paso atrás de la implementación real.
En mi opinión, una aplicación está planeada. Tiene múltiples objetivos, tiene múltiples entregables. Hay tareas reservadas en el momento del diseño antes de la codificación que la aplicación debe cumplir.
Sin embargo, una secuencia de comandos simplemente se junta como trajes y se necesita poca planificación.
Sin embargo, la falta de una planificación adecuada no lo rebaja a una secuencia de comandos. Posiblemente, hace que su aplicación sea una colección mal organizada de scripts mal planeados.
Además, una aplicación puede contener scripts que agregan el conjunto. Pero un script solo puede hacer referencia a una aplicación.
Por lo general, es "secuencia de comandos" frente a "programa".
Estoy de acuerdo con ustedes en que esta distinción es principalmente "esnobismo de lenguaje compilado", o para citar a Larry Wall y tomar el otro lado de la valla, "un guión es lo que los actores tienen, un programa se le da a la audiencia".
Tomando Perl como ejemplo, puede escribir scripts Perl o aplicaciones perl.
Una secuencia de comandos implicaría un único archivo o un único espacio de nombres. (por ejemplo, updateFile.pl).
Una aplicación sería algo compuesto por una colección de archivos o espacios de nombre / clases (por ejemplo, una aplicación perl diseñada por OO con muchos archivos de módulo .pm).
Tradicionalmente se compila un programa y se interpreta un guión, pero eso ya no es realmente importante. Puede generar una versión compilada de la mayoría de las secuencias de comandos si realmente lo desea, y de hecho se interpretan otros lenguajes "compilados" como Java (en el nivel de código de bytes).
Una definición más moderna podría ser que un programa está destinado a ser utilizado por un cliente (tal vez uno interno) y, por lo tanto, debe incluir documentación y soporte, mientras que un script está destinado principalmente para el uso del autor.
La web es un interesante contraejemplo. Todos disfrutamos buscar cosas con el motor de búsqueda de Google. La mayor parte del código que entra en la creación de la ''base de datos'' a la que hace referencia es utilizada solo por sus autores y mantenedores. ¿Eso lo convierte en un guion?
Un lenguaje de scripting no tiene una biblioteca o plataforma estándar (o no mucho de uno). Es pequeño y ligero, diseñado para integrarse en una aplicación más grande. Bash y Javascript son excelentes ejemplos de lenguajes de scripting porque dependen absolutamente de otros programas para su funcionalidad.
Usando esta definición, un script está diseñado para conducir una aplicación más grande (suite). Un Javascript podría llamar a Firefox para abrir ventanas o manipular el DOM. Un script Bash ejecuta programas existentes u otros scripts y los conecta junto con pipes.
También pregunta por qué no los lenguajes de scripting, entonces:
¿Hay incluso alguna herramienta de pruebas de unidad para lenguajes de scripting? Parece una herramienta muy importante para aplicaciones "reales" que falta por completo. Y rara vez hay enlaces de biblioteca reales para lenguajes de scripting.
La mayoría de las veces, las secuencias de comandos podrían reemplazarse con un lenguaje real y ligero como Python o Ruby de todos modos.
Un script generalmente se ejecuta como parte de una aplicación más grande dentro de un motor de scripts, por ejemplo. JavaScript -> Navegador Esto está en contraste tanto con los lenguajes compilados tipeados tradicionales como con los lenguajes dinámicos, donde el código pretende formar la parte principal de la aplicación.
Un script tiende a ser una serie de comandos que comienza, se ejecuta y termina. A menudo requiere poca / poca interacción humana. Una aplicación es un "programa" ... a menudo requiere interacción humana, tiende a ser más grande.
Una aplicación es una colección de scripts orientados a un conjunto común de problemas.
Un script es un poco de código para realizar una tarea bastante específica.
OMI, la diferencia no tiene nada que ver con el idioma que se usa. Es posible escribir una aplicación compleja con bash, y es posible escribir un script simple con C ++.
Yo diría que un script generalmente es un conjunto de comandos o instrucciones escritos en texto plano que son ejecutados por una aplicación de alojamiento (navegador, intérprete de comandos o shell, ...).
No significa que no sea potente o no compilado de alguna manera cuando se ejecuta. Pero un script no puede hacer nada por sí mismo, es solo texto sin formato.
Por naturaleza, puede ser solo un fragmento, necesita combinarse para crear un programa o una aplicación, pero los scripts extendidos y completamente desarrollados o el conjunto de scripts se pueden considerar programas o aplicaciones cuando los ejecuta el host, al igual que un grupo de archivos fuente puede convertirse en una aplicación una vez compilada.
Yo diría que una aplicación tiende a ser utilizada interactivamente, donde una secuencia de comandos seguiría su curso, adecuada para el trabajo por lotes. No creo que sea una distinción concreta.
Una aplicación es grande y será utilizada una y otra vez por personas y tal vez se venda a un cliente.
Una secuencia de comandos comienza siendo pequeña, se queda pequeña si tienes suerte, rara vez se vende a un cliente y puede ejecutarse automáticamente o caer en desuso.
En primer lugar, me gustaría dejar en claro que un guión es un programa . En otras palabras, una secuencia de comandos es un conjunto de instrucciones.
Programa:
Un conjunto de instrucciones que se compilará se conoce como un Programa.
Guión:
Un conjunto de instrucciones que se interpretará se conoce como Script.
Qué pasa:
Guión:
Un script es un archivo de texto (o colección de archivos de texto) de instrucciones de programación escritas en un lenguaje que permite que las declaraciones escritas en él se interpreten directamente en el código ejecutable de la máquina antes de ejecutar cada una de ellas y con la intención de que esto ocurra .
Solicitud:
Una aplicación es cualquier programa de computadora cuya funcionalidad principal consiste en proporcionar servicio a un actor humano.
Por lo tanto, un programa basado en scripts escrito en un lenguaje de scripting puede, teóricamente, modificar sus enunciados textuales mientras se ejecuta el script (con gran riesgo, por supuesto). La situación análoga para los programas compilados es invertir bits en la memoria.
¿Ningún arrendatario? :)
John Ousterhout (el inventor de TCL) tiene un buen artículo en http://www.tcl.tk/doc/scripting.html donde propone una distinción entre los lenguajes de programación del sistema (para implementar bloques de construcción, énfasis en la corrección, tipo de seguridad) vs lenguajes de scripting (para combinar elementos básicos, énfasis en la capacidad de respuesta a entornos y requisitos cambiantes, fácil conversión dentro y fuera de representaciones textuales). Si opta por ese sistema de categorización, entonces el 99% de los programadores realizan trabajos que son más apropiados para los lenguajes de script que para los lenguajes de programación del sistema.
@ La respuesta de Jeff es buena. Mi explicación favorita es
Se interpretan muchos (¿la mayoría?) Lenguajes de scripting, y pocos lenguajes compilados se consideran lenguajes de scripting, pero la cuestión de compilado vs. interpretado solo está vagamente relacionada con la cuestión de los lenguajes "scripting" vs. "serious".
Mucho del problema aquí es que "scripting" es una designación bastante vaga, significa un lenguaje que es conveniente para escribir scripts, en lugar de escribir "programas completos" (o aplicaciones). Pero, ¿cómo se distingue un script complejo de una aplicación simple? Esa es una pregunta esencialmente incontestable. En general, un script es una serie de comandos aplicados a un conjunto de datos, posiblemente en un orden definido por el usuario ... pero luego, se podría extender esa descripción para aplicarlo a Photoshop, que es claramente una aplicación importante. Los scripts generalmente son más pequeños que las aplicaciones, hacen algo bien definido y son "más simples" de usar, y normalmente se pueden descomponer en una serie clara de suboperaciones, pero todas estas cosas son subjetivas.
Referenciado desde aquí .
Creo que no hay ninguna cuestión de si el código está compilado o interpretado.
La verdadera diferencia está en la lógica central del código:
Si el código crea una nueva funcionalidad que no está implementada en otros programas del sistema, es un programa. Incluso puede ser manipulado por un script.
Si el código se manipula PRINCIPALMENTE por acciones de otros programas y el resultado total es PRINCIPALMENTE el resultado del trabajo de programas manipulados, es un script. Literalmente un script de acciones para algunos programas.