¿Cuál es la diferencia entre escribir un programa, un script o un algoritmo?

¡Buena pregunta!

Estaba charlando con un autor que escribe libros de programación para niños pequeños de pre-K (¡enganche pronto!). ¿Deberíamos usar más la palabra “programa” o “algoritmo”? ¿Cómo delimitas claramente entre los dos? ¿Cuándo son intercambiables?

El consenso general entre los informáticos es que un algoritmo generalmente se refiere a una abstracción matemática de un programa (es decir, con almacenamiento de memoria + sustrato computacional cuyos detalles físicos se “abstraen”. Todo lo que queda son estructuras de datos como listas / matrices vinculadas, y tal vez una pizarra 🙂

El “programa” sería la implementación física de ese programa, es decir, el intérprete de Python + un script que describe el algoritmo + todas las bibliotecas dinámicas proporcionadas por el sistema operativo para soportar la ejecución de este programa.

Sin embargo, en la práctica, las cosas están un poco borrosas: algunos algoritmos son extremadamente específicos del entorno en el que se ejecutan y no tiene sentido “abstraer” estos detalles. Las características del sistema operativo que proporcionan estructuras de datos de programa compatibles con su algoritmo “abstracto” (p. Ej., Matrices STL de C ++ frente a la lista vinculada al algoritmo abstracto) se implementan utilizando otros algoritmos, que están respaldados por estructuras de programación más abstractas, que son a su vez algoritmos. Entonces son algoritmos hasta el final. O al final del día, todo es solo un programa y los algoritmos son solo una estructura matemática que usamos para razonar sobre los programas convenientemente sin sudar los detalles.

Un script es un tipo de programa que generalmente se interpreta en lugar de compilarse (pero no es coloquialmente irrazonable “guiar”, o “automatizar” o “personalizar” algún software como Game Engine escribiendo pequeños fragmentos de código C ++ que se compilan) . Y la distinción moderna entre programas interpretados y compilados es un poco borrosa de todos modos, por lo que no creo que sea importante trazar una línea entre los scripts y los programas (o scripting y programación).

No hay una gran diferencia entre un script y un programa. Sin embargo, los scripts generalmente se usan para manipular otra aplicación de software, se escriben en muchas menos líneas de código y generalmente se interpretan

Ahora un algoritmo es solo una solución a cierto problema. Toma el problema como una entrada y, utilizando cierto método o técnica, produce una salida. Por ejemplo, un algoritmo de clasificación toma una lista de elementos sin clasificar y se los devuelve de forma ordenada. En este sentido, un programa y puede ser el mismo.

Básicamente, lo que estoy tratando de decir es que un script es un subconjunto de un programa y un programa puede ser un algoritmo, pero un algoritmo no tiene que ser un programa.

Un script es realmente lo mismo que un programa, pero “script” implica que está “interpretado” (es decir, analizado y entendido mientras se está ejecutando). Sí, lo sé, hay compiladores para Javascript e intérpretes para .NET IL, por lo que es un área confusa. Funcionalmente, no hay diferencia.

Un algoritmo es un método para resolver un problema. Los algoritmos a menudo se implementan como programas, pero también pueden presentarse en un libro o representarse mediante árboles de decisión, manuales de instrucciones, recetas, etc.

También podría tener un programa que no represente un algoritmo. Un requisito matemático para un algoritmo es que se complete en un tiempo finito. ¿Alguna vez una computadora se “congeló”? Es un programa que no implementa un algoritmo.

Cuando escribe y ejecuta un script de shell, no crea un nuevo proceso por sí mismo. El script que escribe se ejecuta en la terminal, que es un proceso. Un guión a menudo se interpreta.

Un código, por otro lado, es capaz de crear un nuevo proceso en sí mismo. Un código necesita compilación, no necesariamente cierto.

Un programa es una solución que se puede compilar, ejecutar para obtener los resultados deseados.

Un script es un fragmento de código que se utiliza junto con el programa para abordar un área específica del problema, por lo que no se ejecuta de forma independiente. También en la mayoría de los casos se interpreta y no se ejecuta.

El algoritmo solo se enfoca en resolver el problema que luego puede ser un programa.

Un algoritmo es un procedimiento o secuencia de pasos a seguir para completar una tarea.

Un programa es una secuencia de instrucciones, basadas en un algoritmo, que le indican a la computadora qué hacer.

Un script es una secuencia de instrucciones, basadas en un algoritmo, que le indican a los programas qué hacer.

No hay una diferencia sustancial entre un script y un programa.

Sin embargo, un algoritmo es una descripción matemática del trabajo que un programa podría hacer.

Un programa es una implementación real de un algoritmo o algoritmos.