¿Cuál es la diferencia entre un script y un programa?

No, no hay diferencia (esencial). El script es un tipo de programación.

Solía ​​ser (antes de la web) que, en la mayoría de los casos, para escribir un programa, escribirías un montón de código en un lenguaje como C o COBOL o uno de muchos otros y ejecutarías algún tipo de compilador para crear un ejecutable, luego ejecuta el ejecutable para hacer lo que haya programado.

Supongamos que por ‘scripting’ te refieres a “escribir código JavaScript para ejecutar cuando visualizas una página web”. Las secuencias de comandos (al menos para la web con JavaScript) son realmente lo mismo, pero en lugar de tener que escribir absolutamente todo, está escribiendo código (JS) para responder a varios eventos que el navegador está creando, como clics y movimientos y carga de páginas. Si solo está haciendo cosas como manejar eventos de clic o mover, las cosas generalmente pueden ser simples. Pero si desea hacer algo más complicado como administrar una aplicación de una sola página utilizando un marco como React o Angular o Ember o Vue o uno de muchos otros, terminará creando un código mucho más complejo, con un nivel similar de complejidad a esos programas compilados.

Editar: según las buenas respuestas de Moray y Tushar, debo incluir que hay muchos idiomas en los que puedes escribir, idiomas para shells de línea de comandos como bash, por ejemplo, y que la falta de compilación es a menudo una gran característica que define un guión (aunque no todos los idiomas que no se compilan son guiones).

Depende de a quién le preguntes; en general, aquellos que dicen que son completamente diferentes tienen un “real” implícito frente a la “programación”.

La programación solo significa escribir instrucciones para una computadora, en una forma que (a través de varios otros programas) puede ejecutarse sola. Ya sea compilado o interpretado, ya sea almacenado en la web, almacenado en su disco, almacenado como firmware o algo efímero que escribió en la memoria (ya sea para quedarse un poco, como una subrutina bash o una vieja interactiva de 8 bits BÁSICO … o simplemente para correr una vez como un bash one liner) todo es programación, y aunque algunos programadores pueden recibir un mejor pago, no hay una forma de programación “más real” que ninguna otra.

La secuencia de comandos es un tipo de programación, y no está muy bien definida. Originalmente proviene de scripts de shell en Unix, que en realidad no es tan diferente de los archivos por lotes de DOS: estaba destinado a coordinar cosas entre otros programas, en lugar de escribir directamente en las aplicaciones. Y hace 40 años, cuando las computadoras eran más simples y mucho más lentas, había una GRAN diferencia de velocidad entre los idiomas interpretados y los compilados. Entonces, los lenguajes que originalmente evolucionaron para ser “como scripts de shell, pero mejores”, como Perl o Tcl, comenzaron a llamarse “lenguajes de scripting” y originalmente se usaron principalmente para ese tipo de coordinación.

OTOH, la definición de “guiones” se ha vuelto cada vez más vaga; la primera web se basaba en “scripts CGI” que eran programas, a veces pequeños, pero a veces bastante más grandes, que generaban contenido dinámico. Varios lenguajes modernos de “secuencias de comandos”, especialmente Python y Ruby, evolucionaron como lenguajes modernos orientados a objetos, que simplemente tenían un tiempo de ejecución interpretado. Se utilizan (algunos) para tareas de estilo de “script”, pero también para sistemas de software muy grandes para la web (Ruby / Rails) y ciencias de datos (Python).

Algunas personas tratarán cualquier lenguaje interpretado como “script”, pero eso parece una distinción terriblemente artificial en este día de compilación justo a tiempo, y lenguajes como Java y C # que tienen un “paso de compilación” que va a un intermedio interpretado representación.

Los guiones, por definición técnica, son programas interpretados, que generalmente se escriben para acompañar programas y servicios. Esta es una razón por la que Python se conoce como un lenguaje de secuencias de comandos.

Además, la palabra “secuencia de comandos” puede referirse informalmente a un programa “rápido y sucio” creado por razones triviales.

Un programa, por otro lado, se compila previamente con el código de máquina nativo y se ejecuta después.

Entonces, ¿cuál es mejor?

Lo que sea que haga el trabajo.

Pocos estarían en desacuerdo con que un guión bien escrito es favorable para un programa apresurado. Pero los programas y los scripts son ambos código al final.

Código bueno> Código malo.

Así de simple

El término script sugiere algo que se puede ejecutar o escribir automáticamente línea por línea a mano. Un programa solo puede ejecutarse automáticamente; no se puede ingresar a mano como líneas individuales. Realmente no tiene nada que ver con el código interpretado o compilado, excepto que los scripts normalmente se interpretan porque no se pueden compilar otros idiomas independientemente línea por línea (generalmente).

El código que se ejecuta en un navegador o en un servidor web a menudo se denomina scripting, principalmente por razones históricas.

Los archivos Perl, PowerShell, MATLAB, MS-DOS .BAT y varios intérpretes de línea de comandos son ejemplos de lenguajes de secuencias de comandos. Puede ingresar comandos individualmente o encadenarlos y ejecutarlos de forma secuencial y automática.

La diferencia entre scripting y programación.

Es una cuestión de grado. Los scripts se escriben para inyectar alguna funcionalidad en una página web o para ejecutar tareas más complejas. La programación es codificar esas cosas más carnosas.

En general, los scripts se interpretan cada vez que se necesitan, mientras se compilan los programas y se ejecuta el código compilado.

Técnicamente, el código web front-end es scripting, pero en estos días se ha vuelto tan complejo que hay poca diferencia.

La comunidad de Programación Funcional ha visto su oportunidad de hacerse cargo de ese espacio. Las extensiones funcionales de Javascript han permitido que la programación real se realice en el front-end.

En principio, o conceptualmente, no, no hay diferencia.

La línea entre un lenguaje de programación y un lenguaje de secuencias de comandos es muy borrosa, y realmente no se puede definir.

He escrito pequeños scripts en TCL, esos son scripts, pero también he escrito un paquete gráfico de correo electrónico en TCL, no lo llamaría un script …

No creo que haya una definición clara real, solo lo sabes cuando lo ves …

Sí, hay una diferencia entre los scripts y el lenguaje de programación.

Puede decir que todos los lenguajes de secuencias de comandos son lenguajes de programación. La diferencia básica entre estos dos es que los lenguajes de programación como C, C ++, etc., deben compilarse antes de ejecutarse, mientras que los lenguajes de script como JavaScript, PHP, etc., no necesitan compilarse.

Script es un programa interpretado que se utiliza para varios software y tecnologías, y el programa en realidad son instrucciones que realizan alguna tarea. Creo que son bastante similares o van de la mano.