Objetivos de la programación
En la preparación de un programa, el programador puede tener que escoger entre soluciones alternativas en muchos puntos. Cada elección debe hacerse para satisfacer los objetivos y restricciones de la tarea de programación particular. Aquí asumiremos como apropiados para toda tarea de programación los siguientes objetivos:
EXACTITUD
Un objetivo obvio en la escritura de cualquier programa de computador es que tiene que satisfacer su especificación exactamente. A menudo, sin embargo, a causa de la complejidad de la labor del programa, y de un entendimiento o cuidado inadecuados de parte del programador, un programa falla en satisfacer alguna parte de su especificación. Un programador tiene que ser en todo tiempo cuidadoso de la exactitud o pertinencia del programa para su propósito especificado.
Un factor clave en el logro de exactitud es la simplicidad. Escogiendo el algoritmo o técnica más simple disponible, es más probable que un programador vea si satisface o no los requerimientos de la especificación del programa, y es menos probable que la describa incorrectamente en su programa. La innecesaria complejidad no cumple propósito alguno en la programación de computadores.
Algunos programas son, por supuesto, inherentemente complejos. Para tales programas, el programador debe adoptar un tratamiento sistemático que controle y limite la complejidad de la que tiene que ocuparse en cada etapa.
CLARIDAD
Un programa es necesariamente tan complejo como el algoritmo que describe. Sin embargo, es importante que la forma en que el algoritmo esté descrito, por el texto del programa, no sea mas complicada de lo que es necesario. La claridad del programa es una ayuda importante para el programador mismo en el diseño y limpieza del programa; y para otros que puedan tener que leer y alterar el programa en alguna etapa posterior.
La claridad del programa es lograda casi en la misma forma que para cualquier texto escrito, tal como un ensayo o un libro en los cuales se requiere:
a).- Una separación lógica del texto en partes comprensibles (capítulos, secciones, etc.) que reflejen la distinción entre los temas que describen, y su presentación en una secuencia lógica que refleje las relaciones entre ellas;
b).- Una selección cuidadosa de las características del lenguaje, usadas en cada parte para expresar su sentido propuesto tan precisamente como sea posible;
c).- Otra selección cuidadosa de las palabras usadas para denotar los objetos y conceptos involucrados;
d).- La inclusión de comentarios y preámbulos para clarificar el texto principal cuando sea necesario;
e).- Un aprovechamiento de los dispositivos para presentación de textos, tales como las líneas en blanco y la sangría, para enfatizar la relación entre partes componentes de textos.
Un programador podría ser tan diligente en el uso de éstas técnicas para lograr claridad como el autor de cualquier texto. En muchos casos, la utilidad de un programa es determinada tanto por la claridad de su texto como por las cualidades del algoritmo que describe.
EFICIENCIA
El costo de ejecutar un programa de computador, es medido normalmente en términos de:
a).- El tiempo tomado por el computador para llevar a cabo la secuencia de operaciones involucradas;
b).- La cantidad de memoria de computador usada en hacerlo.
En muchos ambientes (de máquina), el programa competirá con otros programas por el uso de esos recursos del computador, y es, por tanto, lógico minimizar los requerimientos del programa para cada uno.
El tiempo tomado para ejecutar el programa, es directamente proporcional al número de operaciones que el procesador tiene que realizar al hacerlo. El programador debe, por tanto, escoger un algoritmo que minimice las operaciones implicadas, y tener cuidado de evitar cualquier operación redundante al expresar el algoritmo como un programa de computador.
La memoria usada por el programa durante su ejecución, es determinada por la cantidad de datos que tienen que ser guardados, y por el número de instrucciones del procesador requeridas para definir el programa, ya que éstas también tienen que ser guardadas en la memoria. Para minimizar el almacenamiento usado por su programa, el programador debe, por tanto, considerar los datos manipulados y el número de operaciones especificadas por el programa.
Para algunos programas, o partes de programas, el uso eficiente del tiempo o del almacenamiento puede ser crítico; para otros puede serlo menos. El programador debe estar enterado de cualquiera de tales requerimientos de eficiencia cuando escriba su programa.