El arte de la buena programación
Antes de abordar el estudio del lenguaje PASCAL se van a examinar brevemente
algunas características importantes de los programas bien escritos. Ello es aplicable a
cualquier lenguaje, no sólo al PASCAL.
Después será conveniente utilizar este esquema como guía cuando se comience a
escribir programas en PASCAL para adquirir la costumbre de hacerlo bien desde el
principio.
FIABILIDAD:
Un programa ha de ser fiable ante todo. Deben estar previstos todos los casos que
se puedan presentar durante su ejecución y los resultados deben ser correctos.
A veces, el programador que no ha seguido método y disciplina tiene que dedicar
mucho tiempo y esfuerzo a depurar el programa hasta que se ejecuta sin errores
sintácticos. Para él, el éxito ha consistido en conseguir un programa que cumple las
reglas sintácticas del lenguaje ( funciona ) y no tiene errores de escritura. Ello le ha
costado un gran esfuerzo y no se detiene a comprobar si el programa funciona bien.
Luego, el usuario puede sufrir las consecuencias de obtener resultados incorrectos que
obligarán al programador a una depuración que puede resultar laboriosa y poco fiable
por la falta de método en el diseño. En esas condiciones, es frecuente que todo el
proceso deba repetirse varias veces con los consiguientes trastornos que se ocasionan al
usuario.
Antes de instalar un programa, debe someterse a un conjunto exhaustivo de
pruebas para garantizar cotas altas de fiabilidad.
EFICIENCIA:
Se suele valorar en términos de tiempo de ejecución y consumo de memoria.
El aumento de potencia de los procesadores y el abaratamiento de los componentes
han permitido que los programadores trabajen con gran abundancia de medios, lo que
induce a muchos a no preocuparse por la eficiencia de los algoritmos que aplican. Estas
circunstancias, unidas a la divulgación alcanzada en el uso de las herramientas
informáticas, están dando lugar a que la potencia de los ordenadores se desaproveche.
Una parte del tiempo ejecutan cálculos inútiles por la aplicación de algoritmos
ineficientes. En las comunidades de usuarios universitarios, ya es típica la figura de
aquel a quien cualquier máquina se le queda pequeña, acude al Administrador del
Sistema para solicitar la disponibilidad de grandes cantidades de memoria y días enteros
de uso de procesador; y cuando se analiza su caso , se encuentra que tales necesidades
tan desmesuradas eran consecuencia de la programación de algoritmos súmamente
ineficientes.
La eficiencia de los algortimos es un aspecto fundamental a considerar en la
programación. Antes de utilizar un algoritmo debe analizarse su complejidad, que puede
representarse mediante la variación del tiempo de cálculo en función de la dimensión del
problema.
Para comprobar que la cuestión tiene enorme trascendencia, se puede considerar
como ejemplo la comparación entre dos algoritmos para localizar un elemento en una
lista ordenada. Con el método de búsqueda secuencial, es necesario recorrer toda la lista
en el peor de los casos. Con el método de bisección o búsqueda binaria, se va partiendo
por la mitad la lista en consideración hasta que queda vacía en el peor de los casos. En
el algoritmo de búsqueda secuencial, el tiempo crece linealmente con el tamaño de la
lista (n); en el de bisección, varía según log
2
n.
El segundo es un algoritmo de orden inferior porque crece más lentamente con
"n"; así que cuanto mayor sea el valor de "n", más tiempo se ahorra utilizando el
segundo algoritmo. Para una lista de 50.000 elementos, con la búsqueda secuencial se
necesitarían 50.000 comparaciones en el peor de los casos; mientras que con la
búsqueda binaria nunca se necesitarían más de log
2
(50.000), que es alrededor de 16.
El segundo algoritmo supone un factor de mejora de 3.000.Introducción
1 - 5
Pero el tema de la eficacia debe ser enfocado desde un punto de vista realista y
pragmático. No sería razonable la obsesión del programador que dedica un gran
esfuerzo en complicar extraordinariamente un algoritmo sólo para ahorrar algunos
milisegundos en tiempo de cálculo, porque resultaría antieconómico y el producto final
podría llegar a ser indescifrable para el propio autor.
Para la mayor parte de los casos, se admite que es preferible renunciar a la
optimización total de los algoritmos en beneficio de la sencillez y claridad en la
programación.
Sin embargo, también hay que considerar que en algunos tipos de aplicaciones,
como el control de procesos en tiempo real, por ejemplo, el tiempo de ejecución puede
ser crítico obligando a utilizar algoritmos de la máxima eficiencia.
CLARIDAD:
El programa debe estar escrito de forma que resulte legible especialmente en su
lógica subyacente.
Si un programa está escrito con claridad, deberá ser posible que otro programador
siga su lógica sin un esfuerzo excesivo.
Cuando un programa es poco claro, su mismo autor puede tener dificultades para
entenderlo al cabo de un tiempo, hasta el punto de preferir escribirlo de nuevo si tiene
que hacer alguna modificación.
Uno de los objetivos del PASCAL es favorecer la consecución de programas
claros y legibles a través de un acercamiento disciplinado a la programación.
SIMPLICIDAD:
La fiabilidad y la claridad de los programas se potencian generalmente si se
mantienen tan sencillos como sea posible.
Un programa simple es más fácil de modificar y ello adquiere importancia en la
fase de mantenimiento de las aplicaciones. Las aplicaciones informáticas suelen simular
sistemas reales que, son cambiantes por naturaleza. Cambian las circunstancias, los
criterios, las condiciones, y es inevitable tener que modificar los programas alguna vez.
En ese momento puede ocurrir que el autor no pueda dedicarse a ello porque ya no
pertenezca a la organización o por estar dedicado a otro proyecto, y tenga que hacerlo
otra persona. Entonces es cuando adquiere importancia la simplicidad de diseño en el
programa.
En muchas ocasiones es preferible sacrificar parte de la eficacia de cálculo para
mantener una estructura simple y directa. Ello no será posible en casos específicos
donde se necesitan respuestas en tiempos críticos o existen condiciones muy restrictivas
en la configuración del ordenador.
No hay comentarios:
Publicar un comentario