Fundamentos: ¿Qué es el software?

En esta primera entrega, veremos los fundamentos básicos del software, su funcionamiento, su uso y su creación. A su vez introduciremos los principales conceptos sobre la programación moderna.

Desde siempre, las computadoras han sido máquinas con la única capacidad de llevar a cabo instrucciones, como imprimir un texto en un dispositivo de salida o sumar dos números. Un programa es un conjunto de instrucciones y datos que juntos y, de manera sistemática, permiten resolver problemas. Podemos entonces definir el software como el conjunto de programas que funcionan en una computadora y que permiten realizar una o varias tareas específicas.

Es importante resaltar que, al hablar de computadoras, no nos referimos sólo a las personales (PC), sino a cualquier dispositivo capaz de leer instrucciones de una memoria, y ejecutarlas. Por lo tanto, podemos encontrar software en un lavarropas, en un respirador artificial y hasta en automóviles modernos.

Según su uso, el software se puede clasificar en dos grandes grupos: el software de sistema y el software de aplicación. El software de sistema es el conjunto de programas básicos para el funcionamiento de la computadora, como por ejemplo el sistema operativo (Windows o Linux), los drivers, etcétera., mientras que el software de aplicación son los programas para realizar tareas específicas, como un procesador de texto, un juego o un compilador.

Los términos software y sistema se utilizan para referirse a lo mismo. Sin embargo, la palabra sistema por sí sola no tiene nada que ver con el software. Un sistema es un conjunto de elementos que interactúan de alguna manera, como puede ser el sistema digestivo o el sistema solar. Otro ejemplo de sistema, son los sistemas de información, sin que esto tampoco implique un software. Por ejemplo, un sistema contable es un conjunto de métodos y de herramientas que permiten mantener la información sobre los movimientos económicos y los bienes de una empresa, pero se pueden utilizar libros en papel para alcanzar el objetivo. Finalmente, un sistema de información basado en computadora es la implementación con herramientas computacionales (programas y datos) de un sistema de información. Por lo tanto, como sinónimo de software podemos utilizar sistema de información basado en computadora. Por otro lado, los términos programa y sistema suelen utilizarse indistintamente, pero no está bien. Generalmente, podemos decir que un sistema es un grupo de programas que interactúan para realizar ciertas tareas. Un programa es una unidad mucho más pequeña, independiente y sencilla que un sistema.

EL HARDWARE

El otro componente importante de una computadora es el hardware, que incluye todos los elementos físicos o materiales que la conforman. La diferencia entre el hardware y el software es que este último es intangible (lo vemos, pero no podemos tocarlo), mientras que el hardware es totalmente palpable.

UN POCO DE HISTORIA

Muchos autores coinciden en afirmar que la idea de programa como secuencia de instrucciones se remonta a principios del siglo XIX y no tiene nada que ver con la computación. Efectivamente, en 1801 un francés llamado Joseph Marie Jacquard ideó un mecanismo de tarjetas perforadas para controlar los dibujos que formaban los hilos en una máquina para tejer. De esa manera, lograba programar las puntadas de la máquina para obtener tramas y figuras repetibles.

En 1843, Ada Augusta Lovelace, hija del poeta inglés Lord Byron, planteó la idea de usar tarjetas perforadas para controlar la Máquina Diferencial de Babbage y lograr que repita ciertas operaciones. Unos años más tarde, su idea fue tomada para desarrollar un sistema de cómputo para la oficina de censos de los Estados Unidos. Las tarjetas estaban diseñadas de tal modo que los agujeros representaban la edad, raza, sexo, etcétera. Este desarrollo permitió que el tiempo en obtener los resultados del censo de 1890 fuera de 5 años menos que el censo anterior.

La idea de lady Ada tuvo tal repercusión que, al día de hoy, se la considera como la primera programadora, y las tarjetas perforadas fueron utilizadas en centros de cómputos hasta no hace mucho tiempo.

LA MÁQUINA DIFERENCIAL

En el año 1812, Charles Babbage, preocupado por los errores de cálculo en las tablas matemáticas, pensó que sería útil poder calcularlos de forma automática. Ideó, entonces, una máquina capaz de obtener aproximaciones al resultado de una función matemática, mediante un método llamado de las diferencias. Si bien por limitaciones propias de la época nunca llegó a terminar su construcción, su denominada Máquina diferencial sentó las bases de la computación moderna.

Ya en el siglo XX, el físico estadounidense John Atanasoff, conocedor de las teorías de Babbage y consternado por la cantidad de cálculos que debía realizar, pensó en construir una máquina de cálculo que, a diferencia de las mecánicas, sería digital, y su funcionamiento se basaría en el sistema binario. Su aparato fue conocido como ABC Atanasoff-Berry-Computer, y por eso es considerado el iniciador de la computación digital.

Luego, durante la Segunda Guerra Mundial, se construyó y comenzó a funcionar en instalaciones militares de los Estados Unidos una máquina llamada ENIAC (Electronic Numeric integrator and Computer). Su funcionamiento se basaba en tubos de vacío, interruptores y relés para hacer operaciones matemáticas utilizando el sistema binario. Por su tamaño, ocupaba una habitación entera.


La ENIAC fue una de las primeras computadoras del siglo XX. Su poder de cálculo era menor al de una calculadora de bolsillo actual.

A partir de la ENIAC, las computadoras fueron evolucionando año tras año, a un ritmo cada vez más vertiginoso hasta llegar a las computadoras que conocemos en la actualidad. Sin embargo, a pesar de esta evolución, las computadoras mantienen dos características esenciales: están basadas en el sistema binario y necesitan que se les provea de una secuencia ordenada de instrucciones para poder funcionar.

LA MÁQUINA DE TURING

Creada por Alan Turing, consistía en una cinta y un cabezal que podía leer y escribir caracteres en dicha cinta, como también moverse hacia la izquierda y hacia la derecha. La cinta podría verse como el conjunto de entradas y salidas de un programa. Turing demostró que su máquina podría resolver cualquier problema representable por un algoritmo y que, si no era capaz de resolverlo, entonces resultaba, insoluble en una computadora. Su trabajo se convirtió en el tema central de estudio de la Teoría de la Computación.