Software: Tecnología para el Procesamiento de Información

El mundo actual está experimentando un cambio social y económico, una nueva Revolución Industrial, debido en gran medida a la nueva tecnología para el procesamiento de información, representado por el crecimiento en el uso de software en la computación y las comunicaciones.

Desarollos Anteriores

Durante miles de años, la humanindad ha creado centenares de formas para manejar y controlar la materia y la energía mediante el uso de herramientas, a fin de dominar y modelar su medio ambiente. Sin embargo, en contraste, el procesamiento de información había permanecido hasta hace poco sin alguna modificación o cambio considerable, debido tal vez a que el cerebro humano es, por sí mismo, un poderoso medio para el manejo y control de información.

Hasta hace apenas unos cuantos años, es posible considerar que sólo había tres grandes desarrollos en el área de procesamiento de información: la invención del lenguaje escrito, hace aproximadamente 5 mil años; el desarrollo de las operaciones aritméticas simples utilizando lo que se conoce en la actualidad como representación numérica, hace alrededor de 4 mil años; y la creación de métodos de impresión, hace 500 años. El lenguaje escrito representa la capacidad de hacer un registro de información que puede trascender espacio y tiempo, mediante operaciones tales como almacenar, recobrar y comunicar información. La aritmética proporciona la habilidad de manipular datos cuantitativos de una forma precisa y repetible. La impresión permite la creación de copias idénticas del mismo registro, a fin de difundirlo como mensaje a un número mayor de personas.

Software: un Nuevo Desarrollo

Durante los últimos 40 años, el progreso ha sido sorprendente: las comunicaciones electrónicas y los medios de información se han diseminado, y las computadoras proliferan, volviéndose cada vez más veloces, poderosas, pequeñas y baratas.

Hoy, mucho de la actividad humana depende del procesamiento de información. Actualmente, la información no sólo puede ser almacenada, recobrada, comunicada y difundida en grandes cantidades y velocidades, sino que también puede ser reordenada, seleccionada, dirigida y transformada mediante el uso de software. Hasta hace relativamente poco, todas estas actividades eran solo del dominio del cerebro humano. Sin embargo, ahora, todo procesamiento mecánico y repetitivo de información es susceptible de realizarse mediante el uso de computadoras y software. De hecho, cualquier procesamiento, en forma de una secuencia de operaciones que pueda ser precisamente especificada, puede realizarse sin mayor intervención humana, de tal forma que el cerebro humano puede dedicarse a actividades mas complejas como la creatividad, juicio, apreciación estética o moral.

Programación de Software -- Lenguajes de Alto nivel

Software es el conjunto de instrucciones que le dicen a la computadora qué hacer. Su importancia es actualmente mayor que la computadora misma. Una computadora sin software es tan sólo un máquina inútil compuesta de circuitos electrónicos. La cantidad de conocimiento necesario para crear el software básico que convierta a la máquina en una computadora útil es comparable al requerido para crear la computadora misma. El proceso de creación de software, conocido como programación, puede muy posiblemente convertirse en el alfabetismo del tercer milenio, en el que el conocimiento de software será considerado como parte importante de la educación. De hecho, el explosivo crecimiento de la industria del software es un elemento de determinante que está marcando el ritmo de desarrollo de la Revolución Informática.

Un lenguaje de alto nivel, o algebraico, es una manera que tiene los programadores para representar software mediante términos del lenguaje natural humano. Algunos de los lenguajes de alto nivel más comunes son Ada, Algol, APL, Basic, C, Cobol, Fortran, Lisp, Pascal, así como muchos de sus dialectos y derivaciones, como podrían ser Simula, C++, Java, Haskel o Miranda.

La característica común de todos estos lenguajes, que los clasifica como de alto nivel, es que cada una de sus instrucciones se compone o traduce en un cierto número de instrucciones más sencillas en lenguaje de máquina, que es finalmente lo que la computadora puede ejecutar. Más allá de esto, estos lenguajes se diferencían entre sí de acuerdo al tipo de programa para el cual son utilizados. Aún cuando la mayoría puede realizar las mismas tareas básicas, algunos lenguajes han sido desarrollados con una intención específica.

Dada tal característica común, se hace necesario contar con un traductor para convertir un programa en algún lenguaje de alto nivel a lenguaje de máquina. Este traductor bien puede ser otro programa de software. Así, contamos con dos tipos o clases de programas traductores: intérpretes y compiladores.

Un intérprete trabaja durante el tiempo de ejecución: empezando con la primera instrucción del programa en lenguaje de alto nivel, va traduciendo una a una las instrucciones a lenguaje de máquina, ejecutándolas enseguida. En contraste, un compilador traduce todo el programa en lenguaje de alto nivel a un programa objeto en lenguaje de máquina. El programa es traducido tal como se encuentra en memoria, fuera del tiempo de ejecución. Las instrucciones son almacenadas en el programa objeto, de tal forma que las instrucciones del programa original se ejecutan al invocar o cargar en memoria al programa objeto.

Cualquier lenguaje de alto nivel tiene la capacidad de manejar una variedad de estructuras de datos (maneras de organizar la información dentro de la memoria de la computadora, como pueden ser arreglos, listas, cadenas, árboles, colas y pilas). La eficiencia en cuanto a la operación sobre los datos en memoria depende de la forma como cada lenguaje representa estructuras de datos, y la manera como organiza su almacenamiento en memoria.

Software de Computadora

Las computadoras de hoy son diseñadas en cooperación entre arquitectos de computadoras, quienes diseñan lo que la computadora ha de hacer, ingenieros de hardware, quienes diseñan cómo la computadora debe ser construida para ser capaz de hacerlo, e ingenieros de software, quienes diseñan y programan el software para el control del sistema y utilerías de software que permiten y facilitan la ejecución del software de aplicación en la computadora.

La distinción entre cada tipo de software de computadora es difusa. En términos generales, el software de control del sistema se representa por programas considerados indispensables para la operación de la máquina. De éstos, el programa más conocido es tal vez el sistema operativo. Por otro lado, las utilerías de software son programas relacionados con el sistema operativo, que apoyan funciones para el uso de la computadora, como podrían ser intérpretes y compiladores. Finalmente, el software de aplicación incluye todos aquellos programas que realizan tareas especilizadas, y pueden ser indispensables en una computadora, y no en otra.

Software de Control de Sistemas

El software de control del sistema son todos los programas de mantenimiento interno que controlan la operación de los varios componentes de una computadora, tales como impresoras y memorias, de tal manera que puedan trabajar sin problemas en conjunto mientras el software de aplicación realiza sus tareas. Estos productos incluyen sistemas operativos, monitores de comunicación, y programas de control de redes.

El software de control del sistema debe ser capaz de desplegar, mover, modificar, y buscar al menos en la memoria principal de la computadora, así como de iniciar la ejecución de cualquier programa en alguna localidad dada o dispositivo periférico. Utilizando estas funciones conjuntamente con un grupo de comandos apropiados para el manejo de programas, la computadora puede cargar y ejecutar los programas almacenados en su memoria.

Utilerías de Software

Estos productos sirven como intermediarios entre el software de control de sistemas y el software de aplicación, asegurando que los programas de aplicación sean escritos y se ejecuten eficientemente. Este tipo se software incluye: compiladores, los cuales convierten los programas escritos en lenguajes de alto nivel en código que la computadora puede entender; sistemas de control de bases de datos, que acúan como librerías electrónicas para mantener seguimiento de los datos; ambientes integrados, basados en ventanas, que permiten a los usuarios realizar mas de una operación a la vez.

La línea que separa al software de control del sistema y las utilerías de software es puramente conceptual y difícilmente precisa. De hecho, el límite de lo que se considera el sistema operativo está también lejos de estar definido.

Software de Aplicación

Estos programas hace de la computadora un elemento útil, debido a que posibilitan al sistema para manejar una tarea específica. Pueden ser aplicaciones de propósito general, que pueden ser utilizados para una amplia variedad de tareas, como pueden ser contabilidad, administración y procesamiento de palabras. Otros paquetes ajustan a la computadora para acoplarse a necesidades y operaciones específicas, como bancarias, de seguros, hospitales, manufactura, etc.

De nuevo, dependiendo de diversos puntos de vista, algunos programas de software pueden ser considerados como software de aplicación, utilerías o de control del sistema. Algunos ejemplos de programas de software que en general son considerados como software de aplicación se presentan a continuación:

Un sistema de manejo de bases de datos (o DBMS), que puede ser tan solo una utilería para manejo de archivos, o un elaborado programa que permite la organización de los datos en forma relacional e indexada, con su propio lenguaje de comandos especiales, que responde a cualquier pregunta concebible acerca de una estructura de datos grande e intrincada.

Un paquete gráfico, como un conjunto de programas de software que tal vez produce desde algún tipo aceptable de gráficas, histogramas, u otro, en una resolución pasable (200 por 300 pixels, tal vez), hasta quizá un sistema integrado de programas que permiten una resolución 10 veces mayor (2000 por 3000 pixeles), en una gran variedad de colores, con la habilidad de dibujar complicadas formas tridimensionales, sombreadas, iluminadas y texturizadas, que se modifican mediante comandos de un lenguaje especial.

Un programa matemático o estadístico que permite varios niveles de sofisticación, desde la emulación de una sencilla calculadora digital, hasta sistemas con la habilidad de resolver complicadas operaciones aritméticas, algebráicas y de cálculo, analizando complejos conjuntos de datos mediante técnicas numéricas elaboradas, utilizando todo un nuevo y propio lenguaje.

Un procesador de palabras, que puede ser desde una sencilla utilería de edición de programas y archivos para visulaizarlos y modificarlos, hasta complicados paquetes que permiten el uso de diferentes tipos de cartas, reportes, artículos o documentos, permitiendo el uso de diversos formatos, así como diferentes tamaños y estilos de letras y símbolos, con numeraciones de página, generación automática de índices, y verificación de ortografía.

Además de estos, existen un número y variedad enorme de programas de aplicación, que son utilizados con fines de entretenimiento, como son los juegos, hasta programas hechos específicamente para alguna aplicación muy particular, como puede ser de balística, funciones de Bessel, diseño de barcos, etc., producidos por casa de software con varios niveles de eficiencia, sofisticación y confiabilidad.

Epílogo

El mundo de la programación de software es fascinante, intrincado, gratificante, y a la vez inmisericorde, complicado y demandante de grandes esfuerzos y toneladas de paciencia. Yo quisiera invitar a todo aquél con una computadora a su disposición a escribir un programa, o dos. La sensación de logro es grandiosa cuando se observa en acción un programa que uno ha pensado, trabajado y construido. Tal vez es porque el proceso es adictivo, y consume mucho más tiempo de lo que se cree en un principio. Al final, lo cierto es que en cada programador hay un optimista, siempre pensando que cada error en el programa es el último.