¡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.
- ¿Por qué la mayoría de los científicos escriben con letra cursiva?
- ¿Cuáles son algunas buenas recomendaciones para escribir una tesis de pregrado o una tesis en general?
- ¿Cómo cambió la fatwa la vida de un escritor?
- ¿Por qué la mayoría de los trabajos de nivel universitario requieren una bibliografía?
- ¿Debo enumerar los sitios de escritura académica como experiencia laboral en mi CV?
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).