¿Cuál es la diferencia entre un “guión” y una “aplicación”?

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

  •  01-07-2019
  •  | 
  •  

Pregunta

Me refiero a distinciones como en esta respuesta:

... bash no es para escribir aplicaciones, es para, bueno, secuencias de comandos.Así que seguro, es posible que tu aplicación tenga algunos scripts de mantenimiento, pero no escribas critical-business-logic.sh porque probablemente otro idioma sea mejor para cosas como esa.

Como programador que ha trabajado en muchos lenguajes, esto parece ser esnobismo de C, Java y otros lenguajes compilados.No busco un refuerzo de mi opinión ni respuestas vacilantes.Más bien, realmente quiero saber a qué diferencias técnicas se hace referencia.

(Y uso C en mi trabajo diario, así que no solo estoy a la defensiva).

¿Fue útil?

Solución

Tradicionalmente se compila un programa y se interpreta un script, pero eso ya no es realmente importante.Puede generar una versión compilada de la mayoría de los scripts si realmente lo desea, y otros lenguajes "compilados" como Java se interpretan de hecho (a 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 (quizás uno interno) y, por lo tanto, debe incluir documentación y soporte, mientras que un script está destinado principalmente al uso del autor.

La web es un contraejemplo interesante.A todos nos gusta buscar cosas con el motor de búsqueda de Google.La mayor parte del código que se utiliza para crear la 'base de datos' a la que hace referencia es utilizado únicamente por sus autores y mantenedores.¿Eso lo convierte en un guión?

Otros consejos

Yo diría que una aplicación tiende a usarse de forma interactiva, donde un script seguiría su curso, adecuado para trabajo por lotes.No creo que sea una distinción concreta.

Por lo general, se trata de "guión" versus "programa".

Estoy de acuerdo con ustedes en que esta distinción es principalmente "esnobismo del lenguaje compilado", o para citar a Larry Wall y tomar el otro lado de la valla, "un guión es lo que tienen los actores, un programa se le da al público".

Este es un tema interesante y no creo que existan 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.

Guion (Wikipedia -> Lenguaje de secuencias de comandos):

Un lenguaje de secuencias de comandos, lenguaje de secuencias de comandos o lenguaje de extensión, es un lenguaje de programación que controla una aplicación de software.Los "scripts" a menudo se tratan como distintos de los "programas", que se ejecutan independientemente de cualquier otra aplicación.Al mismo tiempo, se diferencian del código central de la aplicación, que suele estar escrito en un idioma diferente, y al ser accesibles para el usuario final permiten adaptar el comportamiento de la aplicación a sus necesidades.

Solicitud (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 un determinado tipo de trabajo.Por tanto, una aplicación se diferencia de un sistema operativo (que ejecuta una computadora), una utilidad (que realiza tareas de mantenimiento o de propósito general) y un lenguaje de programación (con el que se crean programas de computadora).Dependiendo del trabajo para el que fue diseñada, una aplicación puede manipular texto, números, gráficos o una combinación de estos elementos.

La lectura de las entradas anteriores parece sugerir que la distinción es que un script está "alojado" por otra pieza de software, mientras que una aplicación no.Supongo que se puede argumentar, como los scripts de Shell que controlan el comportamiento del Shell y los scripts de Perl que controlan el comportamiento del intérprete para realizar las operaciones deseadas.(Siento que esto puede ser un poco exagerado, por lo que es posible que no esté completamente de acuerdo con ello).

A fin de cuentas, en mi opinión, la distinción coloquial puede hacerse 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 del propósito, un guión generalmente realiza tareas eso debe solucionarse, digamos, por ejemplo, crear scripts que produzcan múltiples versiones de lanzamiento para una determinada pieza de software.Por otro lado, las aplicaciones están orientadas a proporcionando funcionalidad que es más refinado y orientado al usuario final.Por ejemplo, el Bloc de notas o Firefox.

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 lenguajes de programación de sistemas (para implementar bloques de construcción, énfasis en la corrección, seguridad de tipos) y lenguajes de scripting (para combinar bloques de construcción, é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 secuencias de comandos que para los lenguajes de programación de sistemas.

Un script tiende a ser una serie de comandos que se inician, ejecutan y finalizan.A menudo requiere poca o ninguna interacción humana.Una aplicación es un "programa"...a menudo requiere interacción humana, tiende a ser más grande.

Para mí, el script implica una interpretación línea por línea del código.Puede abrir un script y ver su contenido legible por el programador.Una aplicación implica un ejecutable compilado independiente.

A menudo es sólo un argumento semántico, o incluso una forma de denigrar ciertos lenguajes de programación.En lo que a mí respecta, un "script" es un tipo de programa y la definición exacta es algo vaga y varía según 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 mucha lógica secuencial o subrutinas, muy parecido a como un "guión" en Hollywood es una secuencia lineal de instrucciones que debe ejecutar un actor.Podría usarlo para referirme a un programa escrito en un lenguaje integrado dentro de un programa más grande, con el fin de impulsar ese programa.Por ejemplo, automatizar tareas en el antiguo Mac OS con AppleScript o ejecutar 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 secuencias de comandos" se ha utilizado para lenguajes interpretados dinámicamente (a veces compilados), generalmente estos tienen muchas características comunes, como instrucciones de muy alto nivel, hashes integrados y listas de longitud arbitraria y otras estructuras de datos de alto nivel, etc.Pero esos lenguajes son capaces de crear programas muy grandes, complicados, modulares y bien diseñados, por lo que si piensa en un "script" como algo más que un programa, ese término puede confundirlo.

Ver también ¿Es un programa Perl o un script Perl? en perlfaq1.

Un script generalmente se ejecuta como parte de una aplicación más grande dentro de un motor de secuencias de comandos, por ejemplo.JavaScript -> navegador Esto contrasta con los idiomas compilados escrita estática tradicional y con los idiomas dinámicos, donde el código está destinado a formar la parte principal de la aplicación.

Una aplicación es una colección de scripts orientados a un conjunto común de problemas.

Un script es un fragmento de código para realizar una tarea bastante específica.

En mi opinión, la diferencia no tiene nada que ver con el idioma que se utiliza.Es posible escribir una aplicación compleja con bash y es posible escribir un script simple con C++.

En primer lugar, me gustaría dejar muy claro que un guión es un programa.En otras palabras, un guión es un conjunto de instrucciones.

Programa:

Un conjunto de instrucciones que se van a compilar se conoce como Programa.

Guion:

Al conjunto de instrucciones que se van a interpretar se le conoce como Script.

Tomando Perl como ejemplo, puede escribir scripts o aplicaciones Perl.

Un script implicaría un único archivo o un único espacio de nombres.(p.ej.updateFile.pl).

Una aplicación sería algo compuesto por una colección de archivos o espacios de nombres/clases (p. ej.una aplicación perl diseñada por OO con muchos archivos de módulo .pm).

Personalmente, creo que la separación es un paso atrás con respecto a la implementación real.

En mi opinión, una solicitud esta planeado.Tiene múltiples objetivos y múltiples resultados.Hay tareas reservadas en el momento del diseño antes de la codificación que la aplicación debe cumplir.

Sin embargo, un guión simplemente se arma como si fuera un traje y requiere poca planificación.

Sin embargo, la falta de una planificación adecuada no te rebaja a un guión.Posiblemente, haga que su aplicación sea una colección mal organizada de scripts mal planificados.

Además, una aplicación puede contener scripts que, en conjunto, forman el todo.Pero un script sólo puede hacer referencia a una aplicación.

Una aplicación es grande y la gente la utilizará una y otra vez y tal vez la venda a un cliente.

Un script comienza siendo pequeño, permanece pequeño si tiene suerte, rara vez se vende a un cliente y puede ejecutarse automáticamente o caer en desuso.

Qué pasa:

Guion:

A guion es un archivo de texto (o colección de archivos de texto) de declaraciones de programación escritas en un lenguaje que permite que las declaraciones individuales escritas en él sean interpretado al ejecutable de la máquina código directamente antes cada uno es ejecutado y con la intención de que esto ocurra.

Solicitud:

Un solicitud es cualquier programa informático cuya funcionalidad principal implica proporcionar un servicio a un Actor humano.

Por lo tanto, en teoría, un programa basado en scripts escrito en un lenguaje de scripting puede tener sus declaraciones textuales alteradas mientras se ejecuta el script (con un gran riesgo de , por supuesto).La situación análoga para los programas compilados es invertir bits en la memoria.

¿Ningún arrendatario?:)

La respuesta de @Jeff es buena.Mi explicación favorita es

Se interpretan muchos (¿la mayoría?) Scripting Languages, y pocos idiomas compilados se consideran idiomas de secuencia de comandos, pero la cuestión de la compilación versus compilada versusInterpretado solo está conectado libremente con la cuestión de "secuencias de comandos" vs.lenguajes "serios".

Gran parte del problema aquí es que "secuencia de comandos" 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?Ésa es una pregunta esencialmente sin respuesta.En general, un script es una serie de comandos aplicados a algún conjunto de datos, posiblemente en un orden definido por el usuario ...Pero entonces, uno podría estirar esa descripción para aplicarse a Photoshop, que es claramente una aplicación importante.Los scripts son generalmente más pequeños que las aplicaciones, hacen algo bien definido y son "más simples" de usar, y generalmente pueden descomponerse en una serie clara de suboperaciones, pero todas estas cosas son subjetivas.

Referenciado desde aquí.

Creo que no importa en absoluto si el código se compila o se interpreta.

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 mediante un guión.

  • Si el código es PRINCIPALMENTE manipulado por acciones de otros programas y el resultado total es PRINCIPALMENTE el resultado del trabajo de los programas manipulados, es un script.Literalmente un guión de acciones para algunos programas.

En realidad, la diferencia entre un script (o un lenguaje de scripting) y una aplicación es que un script no requiere que se compile en lenguaje de máquina.Ejecutas la fuente del script con un intérprete.Una aplicación compila la fuente en código de máquina para que pueda ejecutarla como una aplicación independiente.

Yo diría que un guión suele ser un conjunto de comandos o instrucciones escritas en texto plano que son ejecutado por una aplicación de alojamiento (navegador, intérprete de comandos o shell,...).

Esto no significa que no sea potente o que no esté compilado de alguna manera cuando realmente se ejecuta.Pero un script no puede hacer nada por sí solo, es simplemente texto sin formato.
Por naturaleza, puede ser sólo un fragmento, que debe combinarse para crear un programa o una aplicación, pero los scripts o conjuntos de scripts extendidos y completamente desarrollados pueden considerarse programas o aplicaciones cuando los ejecuta el host, al igual que un montón de archivos fuente. puede convertirse en una aplicación una vez compilada.

Un lenguaje de scripting no tiene una biblioteca o plataforma estándar (o no tiene mucha).Es pequeño y liviano, diseñado para integrarse en una aplicación más grande.Bash y Javascript son excelentes ejemplos de lenguajes de programación porque dependen absolutamente de otros programas para su funcionalidad.

Según esta definición, un script es un código diseñado para controlar una aplicación (suite) más grande.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 mediante tuberías.


También preguntas por qué no los lenguajes de secuencias de comandos, entonces:

¿Existen siquiera herramientas de prueba unitaria para lenguajes de secuencias de comandos?Parece una herramienta muy importante para aplicaciones "reales" que falta por completo.Y rara vez existen enlaces de biblioteca reales para lenguajes de secuencias de comandos.

La mayoría de las veces, los scripts podrían reemplazarse con un lenguaje real y liviano como Python o Ruby de todos modos.

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