7. primera era

5

Click here to load reader

Upload: daniel-merchan

Post on 04-Jun-2015

115 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 7. primera era

Daniel Merchán López. 2013

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

realiza cualquier acción con el software que no esté permitida se produciría una piratería de software. Estas licencias llegan hasta el punto de regular el número de copias que pueden ser instaladas e incluso los fines concretos para los cuales puede ser utilizado. La mayoría de estas licencias limitan fuertemente la responsabilidad derivada de fallos en el programa. Normalmente, los fabricantes de programas sometidos a este tipo de licencias ofrecen servicios de soporte técnico y actualizaciones durante el tiempo de vida del producto.

Algunos ejemplos de este tipo de licencias son las llamadas CLUFs (Contrato de Licencia para Usuario Final) o EULAs (End User License Agreement) por sus siglas en Inglés.

El software de dominio público, es decir, que no dispone de licencia, puede ser utilizado, copiado, modificado y redistribuido con o sin fines de lucro.

3.6. Eras del software. Hasta ahora hemos visto que hay diferentes tipos de software. En este punto veremos cómo ha ido cambiando su importancia y utilidad desde el inicio de la computación. Podemos decir que el software ha evolucionado a través de eras o generaciones que coinciden aproximadamente con las décadas. Por ahora hay cinco eras o generaciones que explicaremos a continuación.

3.6.1. Primera Era (1945-55).[7][37][32][19][11][9]

Como ya se ha dicho en la introducción de la evolución del software durante los primeros años de la aparición de las computadoras, el software se contemplaba como un añadido. Desde entonces hasta ahora, el software se ha desarrollado tremendamente.

El software se desarrollaba sin ninguna planificación anterior y con un alto coste monetario, ya que el coste de los programadores asociados a un centro de computación superaba el coste del ordenador, en una escala creciente, pues la tecnología iba bajando de precio, y con ello descendían los precios de los ordenadores. El software se realizaba virtualmente y a menudo los planes no salían como ellos querían. Los programadores intentaban hacer bien todas las operaciones pero esto requería mucho esfuerzo, aunque a menudo les salían con éxito. Los problemas que debían resolver eran técnicos y se centraban principalmente en expresar algoritmos conocidos en algún lenguaje de programación. El software era realizado por una sola persona, lo escribía, lo ejecutaba y lo depuraba.

Page 2: 7. primera era

Daniel Merchán López. 2013

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

Debido a este entorno, el diseño era un proceso implícito, realizado en la mente de alguien, y la documentación normalmente no existía. Los vendedores exageraban tanto sus prestaciones, en la peor tradición comercial engañosa, que resultaron contraproducentes y generaron un amplio escepticismo hacia estos sistemas.

Podemos decir que en esta generación el hardware era de propósito general mientras que el software se diseñaba a medida para cada aplicación y tenía una distribución relativamente pequeña.

Los computadores de la primera generación no disponían de sistema operativo, el programador interactuaba directamente con el hardware del computador. La introducción y control de la ejecución de programas se hacía manualmente y uno a uno. Para interactuar con estas máquinas se disponía de una consola compuesta por conmutadores, indicadores luminosos, un dispositivo de entrada (por ejemplo un lector de tarjetas) y una impresora. Los programas, que estaban hechos en código máquina, se cargaban desde el dispositivo de entrada. Cuando se producía algún error, éste se indicaba a través de los indicadores luminosos. Así el programador podía determinar la causa del error examinando los registros y la memoria principal. Cuando el programa se ejecutaba correctamente proporcionaba los resultados a través de la impresora.

Como hemos dicho anteriormente el programa era ejecutado uno a uno y manualmente. Esto lo hacía un solo programador que era el que en ese momento accedía a la máquina. Uno de los principales problemas era que en ésta generación el computador estaba la mayor parte del tiempo desocupado pues tardaba mucho tiempo en realizar las transferencias de datos con los periféricos de entrada/salida. El tiempo de cada programador era anotado en una hoja de reservas; cada operador reservaba el tiempo que él creía que tardaría en terminar la tarea. Para empezar a operar el programador debía insertar su tablero de conmutación en la computadora y cuando terminaba antes de la hora prevista dejaba el computador desocupado. La mayoría de las operaciones consistían en cálculos numéricos directos, como la producción de tablas de senos y cosenos.

Otro gran problema era el tiempo de preparación de los programas también, llamado trabajo. Para cada uno se cargaba un compilador y se guardaba en la memoria, salvaba el programa compilado y por último cargaba y montaba el programa objeto junto con las funciones comunes. Aparte de toda esta tarea, que se realizaba a mano y por cualquier error debía volver al inicio del proceso, el programador debía tener cuidado con los tubos de vacío, era fácil que alguno fallara y tuvieran que realizar todas las operaciones más de una vez. Esto implicaba una pérdida considerable de tiempo. Este modo de operación lo podemos denominar proceso en serie puesto que refleja el hecho de que los usuarios accedían al computador en serie.

Page 3: 7. primera era

Daniel Merchán López. 2013

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

En esta generación, los computadores se programaban en lenguaje máquina, estando por tanto, cada instrucción constituida por una secuencia de números, con los consiguientes inconvenientes en cuanto a legibilidad, falta de versatilidad, dependencia del computador, etc. Es de destacar el concepto de subrutina. La subrutina ya estaba presente en esta primera etapa, y con ellas los programadores no tenían que reprogramar módulos comunes a un mismo programa, o lo que es lo mismo disponían de subrutinas abiertas.

El programa "Hola mundo" escrito en código binario (Utilizo el código ASCII extendido de 8 bits) sería:

0100 1000 = H

0110 1111 = o

0110 1100 = l

0110 0001 = a

0010 0000 = espacio()

0110 1101 = m

0111 0101 = u

0110 1110 = n

0110 0100 = d

0110 1111 = o

Hola = 0100 1000 - 0110 1111 - 0110 1100 - 0110 0001 Espacio () = 0010 0000

mundo = 0110 1101 - 0111 0101 - 0110 1110 - 0110 0100 - 0110 1111

A comienzos de 1950 se idean los primeros lenguajes simbólicos, con los que las operaciones se pueden representar por nemónicos. Un nemónico es un dato simbólico que identifica a un comando generalmente numérico (binario, octal, hexadecimal) de una forma más sencilla que su numeración original, lo cual facilita radicalmente la memorización de este comando para el programador. La rutina había mejorado un poco con la introducción de las tarjetas perforadas. Ahora era posible escribir programas en tarjetas e introducirlas para ser leídas, en lugar de usar tableros de conmutación; por lo demás, el procedimiento era el mismo.

Page 4: 7. primera era

Daniel Merchán López. 2013

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

En 1952, Grace Hopper (Fig. 48), desarrolló un sistema de programación automática con un primer compilador: A-0, del que más adelante salieron nuevas versiones como, A-1 y A-2, siendo ésta última la que en 1953 se puso a disposición de los clientes del UNIVAC I. Para Hopper este compilador era solamente una rutina que produce un programa específico para un problema particular, o lo que es lo mismo, este compilador servía para copiar unas determinadas subrutinas en el lugar apropiado del nuevo programa realizado. Fig. 48. Grace Hopper con el UNIVAC 1. En 1953 Nathan Rochester diseñó el primer lenguaje ensamblador e implementó el programa correspondiente que traducía instrucciones simbólicas en instrucciones máquina. Con los lenguajes ensambladores se cometían menos errores y el consumo de tiempo de la programación era menor que en los lenguajes de primera generación utilizados por los primeros computadores, liberando a los programadores de trabajos como recordar códigos numéricos o cálculo de direcciones. Un lenguaje ensamblador conocido de la época fue el SOAP utilizado para el computador IBM 650.

Este sería el programa "Hola Mundo" escrito en lenguaje ensamblado x86 para GNU/Linux:

section .data msg db "¡Hola Mundo!", 0Ah len equ $ - msg section .text global _start _start: mov eax, 04h mov ebx, 01h mov ecx, msg mov edx, len int 80h mov eax, 01h mov ebx, 00h int 80h

Page 5: 7. primera era

Daniel Merchán López. 2013

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

Se desarrollaron otras ayudas en la programación como generadores de programas (Short Code, Speedcoding, Sort-Merge Generator, Autocode) y los primeros esbozos de compiladores (serie A de Remington Rank). El Short Code era de John Mauchly, éste operaba originariamente en un BINAC como lenguaje interpretado. Las rutinas correspondientes a los símbolos se encontraban en memoria y eran invocadas por el sistema. El UNIVAC heredó este sistema. Los programas escritos en este lenguaje interpretado eran unas 50 veces más lentos que el mismo programa en el lenguaje máquina. Por su parte, el Sort-Merge Generator era una aplicación desarrollada para el UNIVAC, que producía el programa en código máquina para ordenar y mezclar ficheros que contenían las operaciones de entrada y salida, aunque antes había que especificar los ficheros con los que iba a operar.

Laning y Zieler desarrollaron un programa para traducir ecuaciones matemáticas para el Whirlwind I de Jay Forrester en el MIT (una máquina que se terminó de construir en el año 1951), y construyeron el primer compilador que no tuvo un nombre específico. En enero de 1954, el MIT distribuyó copias de este compilador a unos pocos usuarios del Whirlwind.

Fig. 49. Computador Whirlwind para el que desarrollaron el programa de traducir ecuaciones.

Estos primeros sistemas también llamados sistemas de programación automática (automatic programming systems), se limitaban a proporcionar códigos de operación mnemotécnicos y direcciones simbólicas, o a obtener subrutinas de una biblioteca de rutinas e insertar el código previa sustitución de las direcciones de los operandos. Algunos sistemas permitían la interpretación de operaciones de coma flotante y de indexación (indexing). De todas maneras, con excepción del compilador A-2 y el sistema algebraico de Laning y Zierler, hasta el año 1954 ni siquiera los sistemas más potentes proporcionaban más que una maquina sintética con un código diferente al de la máquina real.