8. segunda era

10

Click here to load reader

Upload: daniel-merchan

Post on 11-Jul-2015

119 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 8. segunda era

Daniel Merchán López. 2013

85 Historia del software en computación aplicado a la informática educativa.

3.6.2. Segunda era (1955-1965).[32][37][35][7][19][38][36][44][12][11]

La multiprogramación y los sistemas multiusuario introdujeron nuevos conceptos de interacción hombre - máquina. Las técnicas interactivas abrieron un nuevo mundo de aplicaciones y nuevos niveles de sofisticación del hardware y del software. Los sistemas de tiempo real podían recoger, analizar y transformar datos de múltiples fuentes, controlando así los procesos y produciendo salidas en milisegundos, en lugar de minutos. Los avances en los dispositivos de almacenamiento en línea condujeron a la primera generación de sistemas de gestión de bases de datos.

La introducción del transistor, a mediados de la década de 1950, alteró el panorama radicalmente. Los computadores se hicieron lo bastante fiables como para poderse fabricar, y vender a clientes comerciales, con la expectativa de que seguirían funcionando el tiempo suficiente para realizar algo de trabajo útil. Por primera vez, había una separación clara entre diseñadores, constructores, operadores, programadores y personal de mantenimiento.

Sistemas Operativos.

En la primera Era del software un trabajo o programa se procesaba de manera independiente a otro. En esta generación el tipo de operaciones era similar a la anterior, pues cuando un programa finalizaba, se detenía la máquina, y se debía preparar manualmente para la traducción, o carga y ejecución del siguiente. Para que el computador procesara un trabajo y a la vez preparara y grabara nuevos trabajos, se mejoró el hardware de los sistemas de entrada/salida. Normalmente los grababa en una computador periférico pequeño, después en una cinta magnética los iban colocando uno detrás de otro, como si fuera una cola de trabajos en la cinta, más conocido como procesamiento batch. El programador escribía primero el programa en papel, en esta Era podía utilizar el lenguaje FORTRAN o el ensamblador, y luego lo perforaba en tarjetas.

Una vez que la cinta contenía una cola de trabajos, se ubicaba en una unidad de entrada del computador central, y ésta, por medio de un programa supervisor o monitor, que residía permanentemente en memoria, iba cargando programa tras programa tan pronto como los pudiese ejecutar. A grandes rasgos, podríamos decir que esto fue el nacimiento de los sistemas operativos.

Como se ha señalado en la primera Era, se perdía mucho tiempo sin sistema operativo, por lo que los programadores de la época intentaron buscar una solución ya que todo el proceso costaba mucho dinero. La solución que se adoptó generalmente, fue el sistema operativo por lotes. Para que el procesamiento fuese más rápido, los programas con necesidades similares se agrupaban en lotes y se introducían en el

Page 2: 8. segunda era

Daniel Merchán López. 2013

86 Historia del software en computación aplicado a la informática educativa.

computador como un grupo. Los programadores dejaban sus programas con el operador; éste acomodaba los programas para formar lotes con necesidades similares y, cuando el computador quedaba disponible, ejecutaba cada lote. La salida de cada trabajo se devolvía al programador apropiado. Cuando el operador ya había hecho el lote de tareas, se llevaba la cinta a la máquina que realizaba el procesamiento, esta máquina era muy cara pero disponía de una alta capacidad de procesamiento para esos tiempos. Después el operador cargaba un programa especial que leía la primera tarea de la cinta y la ejecutaba, escribiéndose la salida en una segunda cinta. Cuando finalizaba cada tarea, el sistema operativo cargaba la siguiente y así sucesivamente hasta finalizar todas las tareas contenidas. El operador remplazaba las cintas de entrada y salida, la cinta de entrada se remplazaba con una nueva que contenía otro lote para su ejecución, la cinta de salida se llevaba a una máquina económica de bajo procesamiento, que realizaba la impresión fuera de línea (off-line), o lo que es lo mismo, no conectada a la computadora principal.

El primer sistema operativo creado fue un sistema operativo por lotes, desarrollado por la General Motors para usar en una computadora IBM 701 (Fig. 51). El nombre de este sistema operativo es GM-NAA I/O, lo que es lo mismo, sistema de entrada/salida de General Motors y Norte América Aviación. El creador de este sistema fue Bob Patrick en el año 1956. La base de su creación fue un sistema monitor, creado en 1955, por programadores de la General Motors. Su principal función era ejecutar automáticamente un nuevo programa una vez terminaba el que se estaba ejecutando en ese momento. Este sistema estaba formado por unas rutinas accesibles a los programas que proporcionaban un acceso común a los dispositivos de entrada/salida. Más adelante este sistema se mejoró y se incorporó a la computadora IBM 704 por una serie de clientes de IBM. Al principio de los 60, un conjunto de vendedores ya habían desarrollado sistemas operativos por lotes para sus computadores. El sistema operativo IBSYS de IBM, se creó para los computadores 7090/7094 e influyó en muchos sistemas de la época.

Fig. 50. Proceso del sistemas operativos por lotes.

En la figura 50 se puede ver el proceso del sistema operativo por lotes, para ello se utiliza la computadora IBM 1401. Primero los diferentes programadores llevan sus

Page 3: 8. segunda era

Daniel Merchán López. 2013

87 Historia del software en computación aplicado a la informática educativa.

tarjetas a la computadora 1401, ésta lee los lotes de los trabajos y los graba en cinta. Después un operador lleva la cinta de entrada a otra computadora 7094 más costosa que la anterior porque era la que realizaba la computación. De la 7094 sale una cinta de salida que el operador lleva a la 1401 que dispone de una impresora donde se imprime la salida con todos los datos. Otro sistema operativo de la época es el Fortran Monitor System (FMS).

Fig. 51. Computadora IBM 701 en la que se incluye el primer sistema operativo por lotes.

La principal mejora de un sistema por lotes es la falta de interacción entre el usuario y el trabajo mientras éste se ejecuta. El trabajo se prepara y se entrega, y cierto tiempo después aparece en la salida. El tiempo de retorno o retardo entre la presentación de un trabajo y su terminación puede ser el resultado del volumen del cómputo requerido. En este entorno de ejecución, la CPU con frecuencia esta inactiva. Esta inactividad ocurre porque el hardware de E/S, que es mecánico, es más lento que los dispositivos electrónicos. Incluso una CPU lenta realiza sus operaciones en tiempos de orden de microsegundos, y ejecuta miles de instrucciones cada segundo. Más adelante y con las mejoras a la tecnología se pudieron diseñar dispositivos de E/S más rápidos. Desafortunadamente, las velocidades de CPU aumentaron a un ritmo mayor, de modo que el problema no solo no se resolvió, sino que las diferencias eran cada vez mayores.

Una solución a este problema fue la introducción de la tecnología de discos. Con esta mejora En lugar de leer las tarjetas directamente del lector a la memoria, para después procesar el trabajo, las tarjetas se leen del lector al disco. La ubicación de las imágenes de tarjeta se registra en una tabla mantenida por el sistema operativo. Cuando se ejecuta un trabajo, el sistema operativo satisface sus solicitudes de entradas del lector de tarjetas leyendo del disco. Así mismo, cuando el trabajo solicita la impresión al

Page 4: 8. segunda era

Daniel Merchán López. 2013

88 Historia del software en computación aplicado a la informática educativa.

computador, la salida se imprime realmente. Esta forma de procesamiento, se llama spooling.

Realmente, el disco se utiliza como buffer de gran tamaño, para leer por adelantado todo lo que sea posible de los dispositivos de entrada y para guardar los archivos de salida hasta que los dispositivos de salida puedan aceptarlos. En el caso de que los datos de entrada/salida se almacenaran en memorias intermedias se denominaría buffering. También se utilizaban técnicas de acceso directo a memoria (DMA) en las que el procesador no interviene a la hora de realizar alguna operación con los periféricos en la memoria.

Fig. 52. Diferencia entre buffering y spooling. Para entender mejor el sistema por lotes hay que explicarlo desde los dos puntos de vista, el del monitor y el del procesador. El programa monitor es un elemento del software, idea central del proceso por lotes. Dicho de otro modo, el monitor es quien controla la secuencia de sucesos. Para que esto sea posible, gran parte del monitor debe estar siempre en la memoria principal y disponible para su ejecución. Esta parte del monitor se conoce como monitor residente. El resto del monitor consta de utilidades y funciones comunes que se cargan como subrutinas a los programas de los usuarios al comienzo de cualquier trabajo que las necesite.

El monitor lee los trabajos uno a uno de un lector de tarjetas o una unidad de cinta magnética. A medida que lo lee, el trabajo actual se ubica en la zona del programa del usuario y el control pasa al trabajo. Cuando el trabajo termina, se devuelve el control al monitor, quien lee inmediatamente un nuevo trabajo. Los resultados de cada trabajo se envían al dispositivo de salida, por ejemplo una impresora, y se entregan al usuario. Es el monitor el que gestiona el problema de la planificación. Se pone en cola un lote de trabajos y estos son ejecutados tan rápidamente como sea posible, sin que haya tiempo alguno de inactividad. El monitor mejora también el tiempo de organización del trabajo. Con cada trabajo, se incluyen instrucciones de una forma primitiva de lenguaje de control de trabajos (JCL), que es un tipo especial de lenguaje de programación empleado para dar instrucciones al monitor.

Page 5: 8. segunda era

Daniel Merchán López. 2013

89 Historia del software en computación aplicado a la informática educativa.

Fig. 53. Estructura de un trabajo FMS.

La estructura de un trabajo de entrada típico es la siguiente (Fig. 53). El trabajo comenzaba con una tarjeta $JOB, que especificaba el tiempo de ejecución máximo en minutos, el número de cuenta al que se debía cobrar el trabajo, y el nombre del programador. Luego venia una tarjeta $FORTRAN, que ordenaba al sistema operativo leer el compilador de FORTRAN de la cinta del sistema. Esta tarjeta iba seguida del programa por compilar y por una tarjeta $LOAD, que ordenaba al sistema operativo cargar el programa objeto recién compilado. Los programas compilados a menudo se escribían en cintas temporales y tenían que cargarse explícitamente. Luego venia la tarjeta $RUN, que ordenaba al sistema operativo ejecutar el programa con los datos que le seguían. Por último, la tarjeta $END marcaba el final del trabajo. Estas tarjetas de control primitivas eran los precursores de los lenguajes de control de trabajos e intérpretes de comandos modernos.

Desde el punto de vista del procesador, éste, en un cierto momento, estará ejecutando instrucciones de la zona de memoria principal que contiene al monitor. Estas instrucciones hacen que el trabajo siguiente sea leído en otra zona de la memoria principal. Una vez que el trabajo se ha leído, el procesador encuentra en el monitor una instrucción de bifurcación que ordena al procesador continuar la ejecución en el inicio del programa de usuario. El procesador ejecuta entonces las instrucciones del programa de usuario hasta que encuentre una condición de finalización o de error. Cualquiera de estos dos sucesos provoca que el procesador vaya a por la instrucción siguiente del programa monitor. Dicho de otra manera cuando el control se le pasa al

Page 6: 8. segunda era

Daniel Merchán López. 2013

90 Historia del software en computación aplicado a la informática educativa.

trabajo el procesador pasa a leer y ejecutar instrucciones del programa de usuario, mientras que cuando el control vuelve al monitor el procesador, pasa ahora a leer y ejecutar las instrucciones del programa monitor.

Lenguajes de programación.

A mediados de la década de 1950 se empezaron a introducir los lenguajes de alto nivel. Estos lenguajes permitían escribir programas en una forma más próxima a la naturaleza del problema a resolver que al conjunto de instrucciones que interpreta directamente el procesador (instrucciones máquina). Estos lenguajes, además podían utilizarse en distintas máquinas.

De 1954 a 1957, bajo la dirección de Jhon Backus de IBM, se desarrolló el primer lenguaje de programación de amplia difusión: el FORTRAN (Formula Translation), proyectado para la programación de aplicaciones de cálculo científico y técnico. El FORTRAN permite la redacción de expresiones algebraicas en una notación muy próxima a la notación algebraica convencional. No hay que olvidar que los primeros computadores se desarrollaron pensando en la resolución de problemas de tipo matemático. La meta de este lenguaje era un lenguaje de programación en toda forma que incluyera estructuras de control, condicionales y enunciados de entrada y salida.

El programa "Hola, mundo" escrito en FORTRAN:

PROGRAM HOLA IMPLICIT NONE PRINT *, '¡Hola, mundo!' END

Pocos pensaban que el lenguaje resultante pudiera competir con el lenguaje ensamblador codificado a mano, por lo cual se concentraron todos los esfuerzos en su ejecución eficiente y se diseñaron diversos enunciados específicamente para la IBM 704. Los conceptos como la ramificación aritmética de tres vías de FORTRAN provinieron directamente del equipo físico (hardware) de la 704. FORTRAN tuvo un éxito extraordinario, tanto es así que cambió para siempre la programación y probablemente preparó el escenario para su reemplazo final por otros lenguajes. En esa época, la utilidad de cualquier lenguaje de alto nivel estaba abierta al cuestionamiento por parte de programadores formados en programación de lenguaje ensamblador. Su queja más seria se refería a la eficiencia de ejecución del código compilado a partir de programas en lenguajes de alto nivel. Como consecuencia, el diseño de las primeras versiones de FORTRAN estaba fuertemente orientado a proporcionar eficiencia de ejecución. Se hizo una revisión de FORTRAN en 1958 (FORTRAN II). Casi todos los fabricantes implementaron una versión del lenguaje y reinaba el caos. Finalmente, en 1966 se convirtió en estándar con el nombre de FORTRAN 66 siendo actualizado varias veces desde entonces hasta la versión actual, la FORTRAN 2010.

Page 7: 8. segunda era

Daniel Merchán López. 2013

91 Historia del software en computación aplicado a la informática educativa.

Después de FORTRAN, se desarrollaron varios lenguajes de importancia, éstos utilizaban también la idea de las abstracciones de datos. En 1958 el ALGOL58 (ALGOrithmic Language) y su sucesor el ALGOL60 (1960), uno de los creadores fue el científico holandés Edsger Dijkstra, éste se convirtió en el lenguaje académico de computo estándar desde los años sesenta hasta principio de los setenta. ALGOL nunca alcanzó éxito comercial en Estados Unidos, aunque consiguió cierto éxito en Europa. Sin embargo tuvo un impacto más allá de su uso. Como ejemplo de ello, Jules Schwartz de SDC (System Development Corporation) desarrolló una versión de IAL (International Algorithmic Language) que se convirtió en una norma para las aplicaciones de la Fuerza Aérea de Estados Unidos. Backus (informático) fue el editor del informe de ALGOL que definía el lenguaje. Usó una notación sintáctica comparable con el concepto de lenguaje libre de contexto desarrollado por Chomsky (lingüista, filósofo y activista estadounidense, y en estos momentos profesor emérito de Lingüística en el MIT). Esto constituyó la introducción de la teoría formal de la gramática al mundo de los lenguajes de programación. A causa de su propio papel y el de Naur (informático europeo del comité ALGOL) en el desarrollo de ALGOL, la notación se conoce ahora como BNF, o Backus Naur Form.

"Hola mundo" escrito en ALGOL:

BEGIN FILE F (KIND=REMOTE); EBCDIC ARRAY E [0:12]; REPLACE E BY "HOLA MUNDO!"; WHILE TRUE DO BEGIN WRITE (F, *, E); END; END.

Como un ejemplo más de la influencia de ALGOL, Burroughs, un vendedor de computadoras que, más tarde, se unió a Sperry Univac para formar Unisys, descubrió la obra de un matemático polaco llamado Lukasiewicz. Él había desarrollado una técnica interesante que permitía escribir expresiones matemáticas sin paréntesis, con un proceso eficiente de evaluación con basado en pilas. Aunque no se trataba de un resultado matemático importante, esta técnica tuvo un efecto profundo sobre la teoría de los compiladores. A través de uso de métodos basados en la técnica de Lukasiewicz, Burroughs desarrolló el hardware de la computadora B5500 basado en una arquitectura de pilas y pronto tuvo un compilador de ALGOL mucho más rápido que cualquier compilador de FORTRAN.

El LISP creado por Jhon McCarty del MIT, en 1962, es muy adecuado para operar con expresiones simbólicas y para aplicaciones de inteligencia artificial. El LISP es diferente de casi todos los demás lenguajes en varios aspectos. El más notable es la equivalencia de forma entre programas y datos en el lenguaje, que permite ejecutar estructuras de datos como programas y modificar programas como datos. Otra característica

Page 8: 8. segunda era

Daniel Merchán López. 2013

92 Historia del software en computación aplicado a la informática educativa.

destacada es la fuerte dependencia de la recursividad como estructura de control, en vez de la iteración (formación de ciclos) que es común en casi todos los lenguajes de programación.

Hola mundo escrito en LISP:

(format t "¡Hola, mundo!")

El SNOBOL es otro de los lenguajes de alto nivel de aquel momento. Fue producido para aplicaciones de tratamiento de caracteres, en el Bell Telephone Lab. por David J. Faber, Ralp E. Griswold e Ivan Polonsky (1962). La implementación clásica se utilizó en la PDP-10 y se ha usado para estudiar compiladores, gramáticas formales e inteligencia artificial, en particular traducción automática y comprensión automática de lenguajes naturales. Se implementó originalmente en una IBM 7090, de los Laboratorios Bell en Holmdel, Nueva Jersey. Fue diseñado expresamente para la portabilidad así que rápidamente se exportó a otras plataformas. Sobresale de entre los lenguajes de programación más famosos de su tiempo por usar los patrones de búsqueda como un tipo de datos nativo al lenguaje y por proveer operadores para concatenación de patrones y alternación, además de que las cadenas generadas durante la ejecución pueden ser tratadas como programas que pueden a su vez ser ejecutados.

Un patrón de búsqueda puede ser muy simple o extremadamente complicado. Un ejemplo de patrón simple puede ser una cadena de texto (v.g.: "ABCD"), y un ejemplo de patrón complicado puede ser una gran estructura que describa la gramática completa de un lenguaje de programación de computadoras. Ofrece al programador una amplia variedad de características incluyendo algunas muy exóticas, de ahí que se pueda usar como si fuera un lenguaje orientado a objetos, un lenguaje de programación lógica, un lenguaje de programación funcional o un lenguaje de programación imperativa cambiando el conjunto de características usadas para escribir un programa. También concatena cadenas que estén una junto a la otra en una sentencia y mantiene las cadenas en un montículo de memoria liberando así a los programadores de preocupaciones tales como asignación de memoria y manejo de cadenas.

También se desarrollaron lenguajes de programación de alto nivel para aplicaciones de gestión administrativa. Se caracterizan por utilizar sentencias que, con nemónicos ingleses, disponen de las funciones matemáticas típicas de gestión (funciones financieras, etc.) y actúan fundamentalmente con archivos de información alfanumérica. El lenguaje de mayor incidencia fue el COBOL, definido en 1959 por la CODASYL. Una característica importante del COBOL es el uso de palabras inglesas para construir las expresiones e instrucciones del lenguaje, incluidas las operaciones aritméticas. El motivo de este uso era para hacer los programas comprensibles a programadores y ejecutivos. El principal error de COBOL era que no se podían pasar

Page 9: 8. segunda era

Daniel Merchán López. 2013

93 Historia del software en computación aplicado a la informática educativa.

parámetros a los procedimientos. En este sentido, COBOL representó un paso atrás respecto a FORTRAN. COBOL se difundió rápidamente y fue convertido en estándar ANSI en 1968, 1974 y 1985. La CODASYL vigiló su evolución para evitar que se realizaran versiones incompatibles lo que dio una gran estabilidad al lenguaje.

"Hola mundo" escrito en COBOL:

IDENTIFICATION DIVISION.

PROGRAM-ID. HELLO.

ENVIRONMENT DIVISION.

DATA DIVISION.

PROCEDURE DIVISION.

DISPLAY "Hola mundo".

STOP RUN.

Con la introducción de su nueva línea de computadoras 360 en 1963, la IBM desarrolló NPL (New Programming Language; Nuevo lenguaje de programación) en su laboratorio Hursley en Inglaterra. Después de algunas quejas por parte del English National Physical Laboratory (Laboratorio de Física Nacional Inglés), el nombre se cambio a MPPL (Multi-Purpose Programming Language; lenguaje de programación de usos múltiples) y más tarde se acortó a solo PL/I. El PL/I incorporó todas las innovaciones de los lenguajes anteriores, es decir, fusionó los atributos numéricos de FORTRAN con las características de programación para negocios de COBOL. El PL/I alcanzó un éxito moderado en los años setenta.

Bases de Datos.

Los primeros SGBD datan de los años sesenta, por aquella época no se les denominaba así. Estaban orientados a facilitar la utilización de grandes conjuntos de datos en los que las interrelaciones eran complejas. El arquetipo de aplicación era el Bill of materials o Parts explosion, típica en las industrias del automóvil, en la construcción de naves espaciales y en campos similares. Estos sistemas trabajaban exclusivamente por lotes que ya hemos descrito como funcionaban en los sistemas operativos. Los SGBD estaban totalmente relacionados con el software de comunicaciones y de gestión de transacciones. IBM denominaba a este software Data Base/Data Communications (DB/DC).

Page 10: 8. segunda era

Daniel Merchán López. 2013

94 Historia del software en computación aplicado a la informática educativa.

IBM se alió con American Airlines para desarrollar SABRE, un sistema operativo de procesamiento en tiempo real que manejaba la reserva/compra de billetes de American Airlines. SABRE hoy en día resulta uno de los mejores globalizadores de reservas dentro de las agencias, así como uno de los más utilizados para la enseñanza en centros educativos de turismo.

Fig. 54. Interfaz de SABRE.

En esta época se desarrollaron las cintas magnéticas para el almacenamiento de datos. Las tareas de procesamiento de datos, como las nóminas, fueron automatizadas, con los datos almacenados en cintas. El procesamiento de datos consistía en leer datos de una o más cintas y escribir datos en una nueva cinta. Los datos también se podían introducir desde paquetes de tarjetas perforadas e impresos en impresoras. Por ejemplo, los aumentos de sueldo se procesaban introduciendo los aumentos en las tarjetas perforadas y leyendo el paquete de cintas perforadas en sincronización con una cinta que contenía los detalles maestros de los salarios. Los registros debían estar igualmente ordenados. Los aumentos de sueldo tenían que añadirse a los sueldos leídos de la cinta maestra, y escribirse en una nueva cinta; esta nueva cinta se convertía en la nueva cinta maestra. Las cintas y los paquetes de tarjetas perforadas solo se podían leer secuencialmente, y los tamaños de datos eran mucho mayores que la memoria principal; así, los programas de procesamiento de datos tenían que procesar los datos según un determinado orden, leyendo y mezclando datos de cintas y paquetes de tarjetas perforadas. Generalmente la preocupación de esta Era consistía en maximizar el rendimiento: el tiempo de respuesta y las transacciones por segundo.

Para escribir los programas de aplicación se utilizaban lenguajes de alto nivel como COBOL o PL/I, aunque también se disponía de instrucciones y de subrutinas especializadas para tratar las bases de datos que requerían que el programador conociese muchos detalles del diseño físico, y que hacían que la programación fuese muy compleja.