9. tercera era

9

Click here to load reader

Upload: daniel-merchan

Post on 11-Jul-2015

326 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: 9. tercera era

Daniel Merchán López. 2013

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

3.6.3. Tercera Era (1965-1970).[37][35][7][32][45][46]

A principios de la década de los sesenta casi todos los fabricantes de computadoras disponían de dos líneas de producto distintas e incompatibles. Cada fabricante tenía computadoras comerciales orientadas hacia los caracteres como la 1401, esta computadora era utilizada por bancos y compañías de seguros con la que ordenaban sus datos e imprimían desde una cinta. En el otro extremo, los fabricantes desarrollaban computadoras científicas a gran escala, orientadas hacia las palabras, como la computadora 7094, que era utilizada para cálculos numéricos en ciencias e ingeniería. Todo esto se realizaba entre una terrible competencia de los fabricantes. Los fabricantes debían mantener las dos líneas para poder competir con los demás, lo que les costaba grandes sumas de dinero aparte de que muchos clientes pedían una máquina pequeña para empezar, lo que con la evolución del software rápidamente se le quedaba pequeño, pues las prestaciones eran insuficientes. Estos usuarios requerían una máquina más grande que ejecutara todos los programas que habían utilizado hasta ahora, pero más rápido.

Sistemas operativos.

La compañía IBM introdujo al mercado una serie de máquinas de software compatible para resolver a la vez los problemas de las computadoras comerciales y las computadoras científicas. Esta serie de máquinas se llamaban System/360 utilizadas tanto en la computadora 1401 como en la computadora 7094. La arquitectura y el conjunto de instrucciones de ambas computadoras era la misma por lo que todos los programas escritos para una se podían ejecutar en las demás. La diferencia residía en el rendimiento, pues tenían diferente memoria máxima, velocidad de procesador, número de dispositivos de E/S permitidos y principalmente en el precio. Con esta serie de máquinas la compañía IBM pretendía satisfacer las necesidades de todos los clientes. En años posteriores IBM sacó al mercado máquinas sucesoras comparables a la 360 como las series 370, 4300, 3080 y 3090 con tecnología más moderna.

La System/360 fue la primera línea de computadoras que usaban circuitos integrados, por lo que aventajaban tanto en el precio como en el rendimiento a las máquinas de la segunda generación que se construían con transistores individuales. El software debía funcionar en todos los modelos independientemente de su tamaño. Por un lado se encontraba con sistemas pequeños en los que lo único que hacían era sustituir a la computadora 1401 para copiar las tarjetas en cinta y, por otro, se encontraban los sistemas grandes como el computador 7094 que fue sustituido para realizar pronósticos de tiempo y otros trabajos de computación pesada. Este software tenía que ser eficiente independientemente de que el computador tuviese muchos o pocos periféricos. Este intento de abarcar todos los tipos de computadores fue su error. IBM desarrolló un sistema operativo enorme muy complejo y con dos o tres órdenes de

Page 2: 9. tercera era

Daniel Merchán López. 2013

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

magnitud mayor que el FMS. El sistema estaba compuesto por millones de líneas de lenguaje ensamblador escrito por miles de programadores con miles de errores. Para solucionar estos errores se creaban nuevas versiones, pero estas versiones corregían algunos o traían mas, de modo que los errores se mantenían constantes en el tiempo. A pesar de todos estos errores, este sistema operativo logró satisfacer a los usuarios de la época incluyendo varias técnicas que no se utilizaban en la segunda Era del software.

La técnica que mayor influencia tuvo en esta Era del software fue la multiprogramación. Se impuso a otras técnicas por ser una forma de aprovechar el tiempo en las operaciones con los periféricos. La multiprogramación (Fig.55) consiste en mantener varios trabajos simultáneamente en memoria principal y realizar las operaciones de E/S por acceso directo a memoria, a fin de que se pueda aprovechar el tiempo perdido con otras técnicas.

A la hora de realizar un trabajo, si este necesita una operación de E/S, el sistema operativo se debe encargar de congelar el trabajo solicitante, después iniciar la operación por DMA (Acceso directo a memoria) y por último pasar a realizar otro trabajo residente en memoria. Todas estas tareas se realizan de forma transparente al usuario.

Fig. 55. Multiprogramación.

Con la multiprogramación se dividía la memoria en varias secciones, y en cada una de ellas había un trabajo distinto. De este modo, mientras un trabajo esperaba que terminara su E/S, otro trabajo distinto podía utilizar la CPU cargando la memoria principal y así la CPU estaba constantemente ocupada. Para proteger cada trabajo, la computadora 360 disponía de hardware especial porque al haber múltiples trabajos en memoria siempre había perjuicios en la empresa por parte de otros empleados.

El tiempo compartido o timesharing (Fig.56) permiten que varios usuarios trabajen de forma interactiva o conversacional con la computadora desde diferentes terminales. En estos años los terminales eran teletipos electromecánicos. El sistema operativo repartía el tiempo de la CPU entre los usuarios, este tiempo lo asignaba en intervalos pequeños de forma rotativa también llamados time slice. Este tipo de sistemas hace que cada usuario piense que la computadora solo le atiende a él. De este modo aparecen los planificadores.

Page 3: 9. tercera era

Daniel Merchán López. 2013

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

Fig. 56. Ejemplo de tiempo compartido o timesharing.

Otros modos de funcionamiento son los multiprocesadores, el concepto de independencia de dispositivo y, por primera vez, aparecen los sistemas en tiempo real. Un multiprocesador está compuesto por varios procesadores que forman una sola computadora de mayores prestaciones.

Como se ha señalado anteriormente hay una independencia de dispositivo, pues el usuario ya no tiene que referenciar, en los programas que realice, la cinta magnética o la impresora donde van a ir. Solo tiene que especificar que quiere grabar un archivo concreto o imprimir unos resultados. El sistema operativo es el encargado de asignar el dispositivo de E/S que esté disponible e indicar al operador que monte la cinta o el papel correspondiente en la unidad seleccionada. En cuanto a la aparición de los sistemas en tiempo real, son sistemas utilizados en aplicaciones militares y más concretamente para la detención de ataques aéreos. La computadora se conecta a un sistema externo que debe responder rápidamente las necesidades de ese sistema. Los primeros sistemas de ese tipo estaban escritos en ensamblador y se ejecutaban sobre la máquina desnuda, lo que hacía de estas aplicaciones sistemas muy complejos, debemos señalar que una máquina desnuda carece de sistema operativo y en sí misma no hace nada.

En esta Era se desarrollaron varios sistemas operativos, uno de ellos es CTSS (Compatible Time-Sharing System) que fue desarrollado en el MIT y se considera como el primer sistema operativo de tiempo compartido. El grupo que lo desarrolló se llamaba Proyecto MAC ( Machine-Aided Cognition o Multiple-Access Computers) y este sistema operativo fue utilizado primero para una IBM 709 en 1961 y después en una IBM 7094. Comparado con otros sistemas que se desarrollaron posteriormente se puede considerar primitivo, pero funcionaba. Era muy simple, lo que minimizaba el tamaño del monitor. Una ventaja era que los trabajos siempre se cargaban en las

Page 4: 9. tercera era

Daniel Merchán López. 2013

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

mismas posiciones de memoria, no era necesario utilizar técnicas para reubicarlas durante la carga. Al ejecutar en una 7094, daba soporte como mucho a 32 usuarios. El sistema se ejecutaba con una memoria de 32.000 palabras de 36 bit con un monitor residente que consumía 5.000 de las mismas. Cuando se le asignaba el control a un usuario interactivo, el programa del usuario y los datos eran cargados en las restantes 27.000 palabras de la memoria principal. El sistema también disponía de un reloj de sistema, que generaba interrupciones cada 0,2 segundos y en cada una de ellas el sistema se adueñaba del control y asignaba el procesador a otro usuario.

Otro sistema también desarrollado en el MIT es el MULTICS (Multiplexed Information and Computing Service) por Bell Labs y General Electric. Con este sistema intentaban proporcionar potencia de cómputo a todos los usuarios de Boston. No pensaban que años después, computadores más potentes que su GE-645 se fueran a vender por poco dinero. Por ello, tanto Bell Labs como General Electric abandonaron este proyecto. Sin embargo MULTICS tuvo una gran influencia sobre los sistemas siguientes.

Un gran avance en esta Generación es la aparición y crecimiento de las minicomputadoras como la PDP-1 en 1961. PDP-1 fue también el hardware original donde se jugó el primer videojuego computarizado de la historia, el Spacewar de Steve Russell. Un operario de Bell Labs que había trabajado en el proyecto de MULTICS, Ken Thompson se propuso escribir una versión de MULTICS reducida a un usuario para la minicomputadora PDP-1.

Este trabajo evolucionó para convertirse en el sistema operativo UNIX, popularizándose en las dependencias del gobierno, el mundo académico y muchas otras compañías.

Fig. 57. Slogan que nos muestra la filosofía de UNIX.

Page 5: 9. tercera era

Daniel Merchán López. 2013

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

La filosofía de UNIX (Fig. 57) se basa en la idea de que un sistema informático potente y complejo debe ser simple, general y extensible, y que esto proporciona importantes beneficios tanto para los usuarios como para los que desarrollan programas. Otra manera de expresar los objetivos de la filosofía UNIX es resaltar que, en toda su complejidad y tamaño, el Sistema UNIX aún refleja la idea de que "lo pequeño es bello". Este planteamiento queda reflejado en la forma que el sistema UNIX trata a los archivos pues ve de la misma manera los directorios, los archivos ordinarios, los dispositivos, y los teclados y terminales de pantalla. El sistema de archivos oculta al usuario detalles del hardware sobre el que se ejecuta. Esta simplicidad le permite concentrarse en lo realmente necesario: los datos y la información de cada archivo.

El hecho de que la pantalla y el teclado se traten como archivos permite utilizar con ellos los mismos programas u órdenes que con archivos almacenados de manera ordinaria, tomando la entrada desde el terminal o visualizando la información sobre él.

Lenguajes de programación.[12][47][11]

En esta Era nace en programación lo que se denomina programación estructurada. Edsger W. Dijskstra expone en un trabajo suyo donde señala que el ser humano es un ser incapaz de razonar en presencia de un número excesivo de detalles y que la claridad de un razonamiento es inversamente proporcional a la cantidad de elementos que intervienen en él. Eso explica el gran problema que había en la época: programas voluminosos, lenguajes con construcciones inseguras y para probar que no había errores sólo disponían de pocos casos de prueba. La prueba de programas consistía en seleccionar un conjunto de casos de prueba y comprobar si después de ejecutarlos el programa funcionaba. La programación estructurada utilizaba construcciones simples para facilitar la tarea de razonamiento. Una de ellas es go to, que la mayoría de los lenguajes de la época incluían. Esta construcción representa un salto incondicional a un punto arbitrario del programa, con ella se puede salir de un bucle o saltar a un punto arbitrario de un procedimiento.

El lenguaje desarrollado para representar las ideas de la programación estructurada es el Pascal, llamado así en honor a Blaise Pascal, autor de las primeras calculadoras mecánicas (explicado en el apartado 2.4). El creador de este lenguaje de programación fue Niklaus Wirth, profesor del Instituto Federal de Tecnología de Zurich. Este lenguaje fue utilizado para iniciarse en la ciencia de la computación hasta los últimos años ochenta. Hoy día el lenguaje dominante es el C. Fue creado para intentar solucionar muchas deficiencias del lenguaje de la generación anterior Algol, aunque tenía su misma simplicidad. Entre las construcciones nuevas que tenía respecto a éste se encuentran los registros, punteros, separación entre for y while, instrucción case, etc.

Page 6: 9. tercera era

Daniel Merchán López. 2013

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

El programa "Hola mundo" escrito en Pascal sería así:

Program HolaMundo; Begin Write('¡Hola, Mundo!'); ReadLn; End.

Pascal era fácil de transportar debido a la estructura que tenía, además su compilador estaba escrito en el mismo lenguaje. Solo necesitaba reescribir el intérprete de código-P para ejecutarlo en el nuevo sistema. Era de un sólo paso, es decir recorría una sola vez el texto del programa de izquierda a derecha.

Otra clave del éxito de Pascal es el desarrollo y difusión del P-kit, con el que se podía tener disponible Pascal en cualquier máquina sin casi ningún tipo de esfuerzo. Esta idea ha sido imitada por numerosos lenguajes posteriormente. El P-kit estaba compuesto por tres elementos: el código fuente del compilador, escrito en Pascal, el código P resultante de compilar el compilador y el intérprete de código-P, escrito en Pascal. La tarea que debía realizar el operador de la máquina X consistía en traducir manualmente el intérprete de código-P al lenguaje que utilizase en la máquina X.

Otro lenguaje importante de esta época es el Simula 67. Incorpora por primera vez las ideas de lo que se conoce actualmente como la programación orientada a objetos (POO). Este lenguaje fue desarrollado por Kristen Nyaard y Olejohan Dahl, noruegos, en el Centro Noruego de Computación en Oslo entre 1962 y 1967. El objetivo de este lenguaje era definir un lenguaje de propósito específico para aplicaciones de simulación. La primera versión salió en 1964 e incluía pocos aspectos innovadores tales como la gestión dinámica de memoria y la introducción de la idea de procesos concurrentes aparte de proporcionar operaciones primitivas para su sincronización e interacción. Al mejorar lenguajes específicos de simulación como SIMSCRIPR y GPSS tuvo un gran éxito entre los usuarios americanos.

"Hola mundo" escrito en Simula 67:

Begin comment aquí comienza el programa ; OutText("¡Hola Mundo!"); OutImage; End of program;

Al ser un lenguaje orientado a objetos también se puede escribir utilizando una clase que se encarga de escribir el saludo:

Page 7: 9. tercera era

Daniel Merchán López. 2013

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

Begin Class Saludos; Begin OutText("¡Hola Mundo!"); OutImage; End of class saludos; REF(Saludos) objeto; objeto :- New Saludos; End of module program; La primera innovación que se introducida fue la distinción entre una clase (texto suministrado por el programador) de entidades y los objetos (ejemplares de la misma creados y destruidos dinámicamente a lo largo de una ejecución completa) que se derivan de ella. Esta innovación escapaba de la estructura de bloques de ALGOL 60, pues a diferencia de las reglas que rigen la estructura de bloques, un objeto ha de sobrevivir al procedimiento que lo crea y necesitaba un tipo de datos "referencia a un objeto" que permitiera que una misma variable designara objetos en distintos momentos. Este tipo, llamado ref, era un puntero.

La otra gran innovación es el concepto de subclase. El objetivo era ahorrar declaraciones cuando el comportamiento de una entidad era muy parecido al de la otra. La idea esencial, en realidad es muy simple. Si una clase B ha de repetir declaraciones de variables y de procedimientos que ya están en otra clase A, se indica que la clase B es una subclase de la clase A y se definen en B tan sólo las variables y los procedimientos que son específicos de B. Posteriormente esto es denominado por los propios autores concatenación de clases, aunque el término original es el de prefijo. Actualmente se le denomina herencia y decimos que la clase B hereda de la clase A.

Bases de datos.[44][48]

El empleo generalizado de los discos duros a finales de los años 60 modificó el procesamiento de los datos. Los discos duros permitían el acceso directo a los datos. La ubicación de los datos en el disco no era importante, ya que se podía tener acceso a cualquier posición del disco en sólo unas decenas de milisegundos. El acceso directo a los datos era mucho más rápido que el acceso secuencial utilizado hasta la fecha, pues no tenían que recorrer todo el disco para acceder a un dato. Gracias a la utilización de los discos se pudieron crear las bases de datos en red y las bases de datos jerárquicas, permitiendo que las estructuras de datos como las listas y los árboles pudieran almacenarse en disco. Los programadores podían crear y manipular estas estructuras de datos.

Page 8: 9. tercera era

Daniel Merchán López. 2013

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

El sistema de bases de datos en red fue desarrollado por Charles Bachman que formaba parte de la CODASYL. La CODASYL (Conference on Data Systems Languages) era un consorcio de industrias informáticas que tenían como objetivo la regularización de un lenguaje de programación estándar que pudiera ser utilizado en multitud de ordenadores. El modelo en red de los datos permitió la creación de un estándar en los sistemas de bases de datos, gracias a la creación de nuevos lenguajes de sistemas de información.

Los miembros de la CODASYL pertenecían a industrias e instituciones gubernamentales relacionadas con el proceso de datos, cuya principal meta era promover un análisis, diseño e implementación de los sistemas de datos más efectivos; y aunque trabajaron en varios lenguajes de programación como COBOL, nunca llegaron a establecer un estándar fijo, proceso que posteriormente llevó a cabo ANSI.

La crisis del Software.[12][26]

La crisis del software es un término informático acuñado en 1968, en la primera conferencia organizada por la OTAN sobre desarrollo de software, de la cual nació formalmente la rama de la ingeniería de software. El término se adjudica a F. L. Bauer, aunque previamente había sido utilizado por Edsger Dijkstra en su obra The Humble Programmer.

La crisis se fundamentó básicamente en el tiempo de realización del software, pues no se obtenían los resultados deseados, costaba mucho hacerlo y no ofrecía mucha flexibilidad. Se puede decir que se produce un establecimiento del software. El software se desarrollaba para tener una amplia distribución en un mercado multidisciplinario. Los programas se distribuían para computadoras grandes y para minicomputadoras, a cientos e incluso a miles de usuarios. Los patronos de la industria, del gobierno y de la universidad tenían una gran rivalidad para desarrollar el mejor paquete de software y ganar así mucho dinero. Pretendían encontrar un lenguaje de programación que sirviera para todo. Éste debería disponer de una buena notación matemática para la expresión de cálculos numéricos, de suficientes facilidades para la descripción de datos, una entrada/salida versátil y eficiente, y mecanismos para la creación de estructuras dinámicas semejantes a las de LISP. También debería tener algunas características de los lenguajes especializados, tales como el tratamiento de cadenas de caracteres o facilidades para la multiprogramación.

Conforme crecía el número de sistemas informáticos, comenzaron a extenderse las bibliotecas de software de computadora. Las casas desarrollaban proyectos en los que se producían programas de decenas de miles de sentencias fuente. Los productos de software comprados al exterior incorporaban cientos de miles de nuevas sentencias. Una nube negra apareció en el horizonte. Todos esos programas, todas esas sentencias fuente tenían que ser corregidos cuando se detectaban fallos, modificados cuando

Page 9: 9. tercera era

Daniel Merchán López. 2013

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

cambiaban los requisitos de los usuarios o adaptados a nuevos dispositivos hardware que se hubieran adquirido. Estas actividades se llamaron colectivamente mantenimiento del software. El esfuerzo gastado en el mantenimiento del software comenzó a absorber recursos en una medida alarmante.

Para salir de la crisis algunos investigadores como C. A. R. Hoare y N. Wirth, se apartaron del WG 2.1 ocupado en la definición de ALGOL 68 y crearon un nuevo grupo, el WG 2.3, sobre metodología de la programación. Para obtener una metodología adecuada para la concepción de programas se impuso un periodo de reflexión antes de hacerlos. El problema era que las metodologías estaban aún por hacer. Para salir de la crisis necesitaban lenguajes más simples cuyas construcciones fueran completamente comprendidas, y sistemas de tipos más exigentes que eliminaran la mayor cantidad de errores posibles durante la compilación.