En el ENIAC el control de las operaciones estaba parcialmente
integrado en el equipo. Dicho control era realizado por un circuito
que requería un alambrado específico para cada aplicación.
Imaginemos lo engorroso que resultaba realambrar el circuito cada
vez que cambiaba el uso del ENIAC.
Hasta este momento, no se percibía una diferencia
sustancial entre el equipo y el control de las operaciones. El
concepto de programa de control almacenado en memoria, aportación
popularmente atribuida a John von Neumann, precipitó el
desarrollo de software. En éste se perfilaron dos tendencias de desarrollo:
los programas de aplicación y los de servicio. Estos
últimos tenían como propósito facilitar el desarrollo de
programas a partir de programas.
Algunos programas de servicio fueron simples cargadores que permitieron emplear notaciones como el octal o hexadecimal más compactas que el binario.
Otros como los ensambladores simplificaron más el proceso
al reemplazar las notaciones numéricas con los símbolos mnemónicos que
aportaron para describir a cada instrucción de la máquina.
El siguiente paso significativo fue la traducción de fórmulas,
que permitió la descripción de los algoritmos con el empleo de
expresiones algebraicas. Dicha traducción se realiza con programas que se denominan compiladores, generan programas que al ejecutarse producen los resultados.
Es importante destacar que en tanto los programas de aplicación saturaron los recursos de los equipos, imponiendo sus requerimientos en cuanto a velocidad, precisión en la aritmética y capacidad en los almacenamientos; los programas de servicio repercutieron en la evolución de la arquitectura de los equipos (hardware). Entre las aportaciones más notables, podemos citar el empleo de pilas y el reemplazo de referencias físicas por lógicas.
Con la pila (Push Down List), se da lugar al manejo recursivo de los
procesos. Por ejemplo, esto ocurre en una oficina administrativa,
cuando se pospone la solución de un problema para resolver otro
de mayor exigencia. El problema original se suspende y se aborda
nuevamente cuando el de mayor exigencia ya ha sido resuelto.
Con el reemplazo de referencias físicas por lógicas, se obtuvo
un incremento más real que virtual de los recursos disponibles.
Almacenamientos secundarios, registros operacionales, memoria
virtual, memoria cache e hizo translapes (overlay), son algunas
de las técnicas que emplean este concepto. El efecto es similar
al de las operaciones bancarias nominales con que las
instituciones de crédito prestan varias veces su capital.
Los elementos aportados por los programas de servicio, al
interrelacionarse configuran el sistema operativo con el cual se
administran los recursos disponibles en las computadoras y se
establecen líneas de producción para el proceso de programas con
una mínima participación del operario: la automatización de la
automatización. Al principio, los sistemas operativos brotan como
extensiones de los lenguajes. Posteriormente, el fenómeno se
invierte de modo que los sistemas operativos configuren el
ambiente en el que se desempeñan las aplicaciones y los
programas de servicio.