Programas y algoritmos
Un algoritmo es una
secuencia no ambigua, finita y ordenada de instrucciones que han de seguirse
para resolver un problema. Un programa normalmente implementa (traduce a un
lenguaje de programación concreto) uno o más algoritmos. Un algoritmo puede
expresarse de distintas maneras: en forma gráfica, como un diagrama de flujo, en forma de código como en pseudocódigo o un lenguaje de programación, en forma
explicativa, etc.
Los programas suelen subdividirse en partes menores, llamadas módulos,
de modo que la complejidad algorítmica de cada una de las partes sea menor que
la del programa completo, lo cual ayuda al desarrollo del programa. Esta es una
práctica muy utilizada y se conoce como "refino progresivo".
Según Niklaus Wirth, un programa
está formado por los algoritmos y la estructura de datos.
Se han propuesto diversas técnicas de programación cuyo objetivo es
mejorar tanto el proceso de creación de software como su mantenimiento. Entre ellas, se pueden
mencionar las siguientes:
- programación
estructurada
- programación
modular
- programación
orientada a objetos (POO)
- programación
declarativa
El programa escrito en un lenguaje de
programación (fácilmente comprensible por el programador) es llamado programa fuente y no
se puede ejecutar directamente en una computadora. La opción más común es compilar el
programa obteniendo un módulo objeto, aunque también puede ejecutarse en forma
más directa a través de un intérprete informático.
El código fuente del programa se
debe someter a un proceso de
traducción para convertirlo en lenguaje máquina, código éste
directamente ejecutable por el procesador. A este proceso se le llama compilación.
Normalmente la creación de un programa ejecutable (un
típico.exe para Microsoft Windows o DOS)
conlleva dos pasos. El primer paso se llama compilación (propiamente dicho) y
traduce el código fuente escrito en un lenguaje de
programación almacenado en un archivo a código en bajo nivel
(normalmente en código objeto, no directamente a lenguaje máquina). El segundo
paso se llama enlazado en el
cual se enlaza el código de bajo nivel generado de todos los ficheros y
subprogramas que se han mandado compilar y se añade el código de las funciones
que hay en las bibliotecas del compilador para que el ejecutable pueda
comunicarse directamente con el sistema operativo, traduciendo así finalmente
el código objeto acódigo máquina, y
generando un módulo ejecutable.
Estos dos pasos se pueden hacer por separado, almacenando el resultado
de la fase de compilación en archivos objetos (un típico.obj para Microsoft
Windows, DOS o para Unix); para enlazarlos en fases
posteriores, o crear directamente el ejecutable; con lo que la fase de
compilación se almacena sólo temporalmente. Un programa podría tener partes
escritas en varios lenguajes (por ejemplo C, C++ y ensamblador), que se
podrían compilar de forma independiente y luego enlazar juntas para formar un
único módulo ejecutable.
No hay comentarios:
Publicar un comentario