Informática Empresarial 05.

Historia de la informática digital.

Este capítulo se divide en eventos, periféricos, lenguajes y software. Los eventos contemplan diversos desarrollos, formación de compañías, etc. Aunque “lenguajes” podría considerarse dentro de “software”, aquí se separa para una mejor perspectiva.

Eventos.
Luego de la invención del computador en la década de 1940, se desarrollaron varias tecnologías y metodologías, una historia sucinta de las cuales, se intenta reseñar aquí. Se destaca en cada caso las primeras manifestaciones de cada tecnología; al correr de pocos años (y a veces meses), la cantidad de bifurcaciones que se producen es tal que su tratamiento requeriría espacios mayores de los que se dispone y mecanismos de análisis y expresión más apropiados.

Una reflexión es válida aquí: Tiene que ver con cierta visión lineal de la historia de la computación que lleva a considerar a ésta como un continuo que iría desde la concepción de Babbage, pasando por la máquina de Turing, a los desarrollos de la década de 1940, y de allí a nuestros días. Marchas y contramarchas, intentos fallidos, que asemejan ese desarrollo a los tanteos de la evolución biológica (con especies que desaparecen, otras desarrollando complejos equilibrios, etc.) desmienten esa apreciación simplista. Agentes importantes no considerados complementan ese cuadro. Una sola firma, escasamente mencionada en las historias standard, la Northrop Aircraft Inc., produjo no menos de 14 compañías y 23 tipos de computadores después de 1945. Richard Sprague afirma que la gente y no las corporaciones hacen los ordenadores. Las raíces de los desarrollos de Northrop provinieron de proyectos de aeroespacio, control de proyectiles (missiles) desde el lanzamiento al blanco, mejor diseño de computación y resolución de problemas y talento humano. No obstante, los problemas financieros de la empresa, entre 1948 y 1950 pronto la llevaron a su decadencia. De haber podido Northrop, asegura el autor, financiar todos los proyectos originados internament, sería la IBM de la época.

Veamos algunos de los eventos.

· En 1884, J. A. Fleming de Gran Bretaña inventa el diodo en base a un experimento de Edison. Se trata de una dispositivo electrónico importante ya que permite el paso de la corriente eléctrica en un solo sentido.

· 1906. Lee de Forest de los Estados Unidos, introdujo una grilla entre el filamento y la placa de un diodo, obteniendo el triodo que funciona como amplificador.

· El circuito impresoes inventado en 1943 por el inglés P. Eisler. La técnica permite reemplazar ciertos componentes de un circuito por un trazado bidimensional en un soporte aislante.

· El 27 de enero de 1947, en los Bell Telphone Laboratories, se hace el anuncio de la invención del transistor por el equipo dirigido por William Bradford Shockley (1910 1989), compuesto por Walter Houser Brattain (1902 1987), John Bardeen (1908 1991). El transitor es un amplificador de tres electrodos que emplea un semiconductor como germanio o silicio. Los tres recibieron el Premio Nobel de física en 1956 y Bardeen lo recibió por segunda vez en 1972. Las bases teóricas del transistor pueden rastrearse a los trabajos de Michael Faraday (1791 1867) en la década de 1830. En efecto, Faraday observó que la conductividad eléctrica del sulfuro de plata aumentaba al calentarse, comportamiento este contrario al de los conductores metálicos. En 1874, Karl Ferdinand Braun (1850 1918), profesor de física de Marburgo y Premio Nobel de física en 1909, conjuntamente con Guglielmo Marconi (1874 1937), descubrió los rectificadores de cristal. Los rectificadores se hacían con cristales de galena, un mineral de sulfuro de plomo (PbS) y se aplicaron en los primeros aparatos de radio. R. W. Pohl predijo, en 1933, que las válvulas de radio podrían ser reemplazadas por cristales en los cuales podría ser controlado el flujo de electrones.

· En 1945, aparece un artículo de Vanevar Bush (1890-1974) “As We May Think” en el Atlantic Monthly, en el que desarrollaba la idea de un almacén de conocimiento, fácilmente accesible e individualmente configurable. Douglas Engelbart y Ted Nelson se inspiraron en él para su concepción de Hypertext.

· 1948. El Massachusett Institute of Technology (MIT) dicta el primer curso de investigación de operaciones en el ámbito civil.

· Durante 1952 se libera el computador inglés Atlas, de la Ferranti, que presentaba el concepto de memoria virtual, la cual era una memoria mayor a la de la memoria principal. El Atlas, sin embargo no fue muy exitoso en el mercado y Ferranti abandonó la idea para sus siguientes productos. Ver apéndice sobre “El caso de la memoria virtual”.

· 1952. La Machines Research Corporation introduce la primera máquina de OCR, Optical Character Recognition, es decir, Reconocimiento Óptico de Caracteres.

· 1953. La Compagnie de Machines Bull, la empresa francesa de tarjetas perforadas, produjo su primer computador, el Gamma 3.

· En 1954 se comercializa, con entregas a partir de 1955, el IBM 704. Este computador presentaba características muy interesantes. Entre ellas la memoria de toros de ferrita concebida por Gene Myron Amdahl (n. 1922), quien formaría después su propia compañía, Amdahl, Inc. También usaba FORTRAN como lenguaje de programación, y era el primer ordenador comercializado con punto flotante (implica una mantisa de tamaño prefijado y un exponente, por ejemplo, 314159265359E01 traduce 0,314159265359 ´ 101, es decir 3,14159265359. Gracias a esta máquina se extendió el uso de los registros índice (la IBM 704 tenía 3), aunque habían aparecido en 1949 en la Manchester Automatic Digital Machine (MADM) llamados B Box o B Register. Un ingeniero de la General Motors, Bob Patrick escribió el primer sistema monitor para esta máquina.

· 1956. Los Bell Lab construyen Leprechaum , la primera máquina totalmente transistorizada.

· 1956. el profesor Jacques Perret propone la palabra “ordinateur” respondiendo a un pedido de la IBM de Francia de 1954, para dotar a la lengua francesa de un término equivalente a Data Processing Machine o calculateur. En su carta a esta compañía, Perret les dice ques una palabra formada correctamente, que se encuentra en el LITTRÉ como adjetivo designando a Dios que pone orden en el mundo. “Una palabra de ese género tiene la ventaja de dar fácilmente un verbo ordenar, un nombre de acción ordenación.” Pero les advierte de un inconveniente menor: Ordenación designa una ceremonia religiosa. Sin embargo, los dos campos de significación, religión y contabilidad se encuentran muy alejados. “Además, la máquina de ustedes será ordenador (y no ordenación) y esa palabra es a todo efecto fuera del uso teológico.”
Luego del éxito de la palabra, IBM decidió abandonar sus derechos sobre ella. España y luego el mundo de habla hispana, utiliza la palabra “ordenador” para referirse al computador. Ambos vocablos, sin embargo, parece que subsistirán en el castellano como sinónimos, al menos en Latinoamérica.

· 1958. El Bank of America lanza la primera tarjeta de crédito.

· 1958. Jack. Kilby, fundador de Texas Instruments patenta el primer circuito integrado.

· En 1961, la MITRE Corporation, bajo el proyecto 473 la fuerza aérea de los Estados Unidos, comienza a trabajar en una implementación experimental de planificación de transporte, conocida luego como Experimental Transport Facility (ETF). Esta aplicación fue significativa en cuanto demostró que usando características de base de datos descriptas externamente, dos diferentes aplicaciones podrían utilizar el mismo conjunto de implementaciones generalizadas de recuperación (retrieval). La experiencia con esta aplicación y el proyecto 481 (Post Attack Command an Control System) indicaron que el enfoque era válido. En agosto de 1962 se inició el proyecto ADAM (Advanced Data Management System), concluido en agosto de 1966. Corría en un IBM 7030 (STRETCH), con 65K de memoria. Tenía capacidad de definición, creación, actualización e interrogación de archivos. La estructura de almacenamiento era secuencial. El lenguaje de interrogación, FABLE (First ADAM Basic Language), era cercano al inglés. Su formato se puede apreciar en la siguiente expresión metalingüística:

FOR nombre de archivo [lista de entrada] [cláusula booleana,] {frase de salida/SAVE} {lista de items/ALL} [cláusula booleana]. [NAME nombre]

Tenía interfaces para todos los lenguajes disponibles para el sistema operativo MCP. No podía transferirse (se decía entonces; hoy diríamos que no tiene “portabilidad”) a otro hardware ni a otro sistema operativo. Pero ya en 1963, General Electric implementó la primera versión de IDS (Integrated Data Store) utilizando un computador IBM 702. Desde julio de 1968, IBM tenía operativo el NMCS (National Military Command System) S/360. Los orígenes del sistema pueden ser remontados a los trabajos del sistema 438L para los computadores 702 y 709 de 1959. Hasta 1969, todos los manejadores de bases de datos examinados por CODASYL (once) eran jerárquicos (modo árbol).

· En 1962, fue fundada por los hermanos Ken y Sam Olsen y Harland Anderson, la Digital Equipment Corporation (DEC). Ken había trabajado en el proyecto Whirlwind en el MIT. El primer computador de la serie PDP, el PDP 1 estuvo listo ese año.

· También en 1962, aparecen los circuitos MOS, Metal Oxyde Semiconductor. S. Hoftein y F. Heiman, U. S. A,, son sus inventores. El diseño original contenía dieciseis transistores, pero la tecnología abrió la puerta a la integración en gran escala, LSI, Large Scale Integration.

· En el verano de 1964, General Electric toma control de Compagnie de Machines Bull.

· 1965. Robert Bremer crea ASCII (American Standard Code for Information Interchange), un código normalizado de 7 bits. En él, todas las mayúsculas vienen antes que las minúsculas.

· 1965. Digital Equipment Corporation, DEC, libera el computador PDP-8. Se afirma que “estableció el concepto de minicomputadores”, dando origen a una “multibillion dollar industry”.

· 1966. La American National Standards Institute (ANSI) libera la fuente OCR-A.

· En 1967 se crea Fairchild Semiconductor por Eugene Kleiner, quien trabajó con William Shockley, uno de los creadores del transistor y posteriormente cofundador de Netscape, y Gordon Moore, cofundador de Intel en 1968, y autor de la ley que lleva su nombre. Moore ontrató al científico húngaro Andrew Grove. Rock Arthur fue el inversionista que recaudó capital para Fairchild Semiconductor, ayudó a levantar el capital para Intel en 1968, e invirtió en Apple en 1978. Robert Noyce sacó una versión independiente del microchip en 1959.

· En septiembre de 1969, una empresa japonesa, ETI, encargó a Intel la fabricación de un chip para utilizar en su línea de computadores de escritorio (desktop calculators). Así nació en noviembre de 1971 el microprocesador de 4 bits 4004. El chip había sido desarrollado por Marcian Edward “Ted” Hoff (n. 1939) (arquitectura e instruction set), Federico Faggin (n. 1941), ingresado en abril de 1970, quien luego fundó la Zilog, Inc., detalló el diseño del circuito y disposición (layout), y Stanley Mazor (n. 1941). El producto contenía más de 2100 transistores. Los microchips 8008 y 8080 estuvieron en el mercado en 1975. El primero de ellos desarrollado para una compañía llamada Computer Terminal Corporation (CTC), y luego Data Point.

· En junio de 1970, Edgar Codd, de la IBM, publica “A Relational Model for Large Shared Data Banks” en Communications of ACM. En 1971 aparece el libro de C. J. Date, Introduction to Database Systems, publicado en Addison-Wesley. Esto implica el comienzo de la tecnología triunfante se manejadores de bases de datos. Sin embargo, en la época, aparte de los manejadores jerárquicos existía un modelo denominado red o plexo. Cincom Systems comercializaba un paquete denominado Total a principio de la década de 1970 (por lo menos desde 1972). IBM competía en la época con IMS/DL 1, y se consideraba por el proveedor como jerárquico.

· 1971. Steve Wozniak y Bill Fernández construyen el computador “Cream Soda”.

· 1971. Ray Tromlinson de Estados Unidos introduce la arroba (@) como separador.

· 1972. Texas Instruments produce la primera calculadora de bolsillo. Gary Kildall de Intel había escrito CP/M.

· 1973. La empresa R2E, de Francia fabrica el primer microcomputador; se llamaba Micral. Fue diseñado por Trung Trong Thi pero representó un fracaso comercial.

· 1975. La compañía MTIS (Micro Instrumentation Telemetry System), dirigida por Ed Roberts, anuncia el computador Altair en Popular Eectronics, máquina basda en el chip Intel 8080, con 256 posiciones de memoria. La empresa duró hasta el 22 de mayo de 1977 cuando fue vendida a Pertec.

· También en 1975, William Henry Stacey “Bill” Gates III (n. 1955) y Paul Allen (1953) fundan Microsoft (renombre de Traf-O-Data) y hacen su primera venta de software: El BASIC para la Altair .

· En el mismo año 1975 aparece el primer número de la revista Byte, creación de Wayne Green. Su primer editor fue Carl Helmers.

· A mediados de julio de 1975, Dick Heiser abrió una pequeña tienda en el área del oeste de Los Ängeles. Su nombre era: Arrow Head Computer Company. En letras más pequeña decía: The Computer Store. Por este último nombre fue reconocida.

· 1976. Steve Wozniak y Stephen Jobs fundan Apple Computers (con la ayuda de Mike Markkula). Jobs afirma que hubo tres acontecimientos en la computación personal: Apple en 1973, el PC de IBM en 1981 y McIntosh con interfase gráfica en 1983. “El McIntosh costaba $2.500, es decir, $1.000 más que el PC de IBM. Se tuvo que comprar el 19% de Adobe para mejorar la salida de impresión. Existían pocas aplicaciones.” Wosniak regresó a Apple en 1997.

· El 21 de septiembre de 1976, Bill Millard fundó ComputerLand y abrió su tienda piloto en Hayward, California el 10 de noviembre. La primera franquicia abrió el 18 de febrero de 1977 en Morristown, New Jersey.

· En la primavera de 1977, Chuck Peddle introduce el computador PET de Commodore en la primera West Coast Computer Faire, en San Francisco.

· 1981, IBM introduce su computador personal, el PC.

· El 24/06/1984, Apple Computers introduce el Macintosh.

· 1986. Se produce la fusión de Burroughs y Univac que da lugar a Unisys.

1987 se produce el primer contagio masivo de virus sobre MacIntosh. El virus se llamaba Mac Mag o Peace Virus. John von Neumann había anticipado en 1949 la posibilidad de programas que se reprodujeran a sí mismos en “Theory and Organization of Complicated Automata”. Esa posibilidad se se fundamenta en la teoría de los autómatas finitos de Alan Turing. Sin embargo, hay un amplio acuerdo de que el origen de la tecnología se remonta a Core War, un programa de juego porpularizado por A. K. Dewdney, del Department of Computer Science de la University of Western Ontario, en un trabajo para el departamento de “Computer Recreations” de Scientific American en 1984. El juego se inspiraba en la historia de un programa anterior, llamado Creeper (enredadera o trepador), cuya única misión era duplicarse a sí mismo cada vez que corría. La corporación infectada desarrolló otro programa, denominado Reaper (segador), cuyo propósito era destruir copias de Creeper hasta su extinción; entonces, autodestruirse. Esta historia, que puede ser falsa, parece basarse en un juego de computador llamado Darwin, desarrollado por M. Douglas McIlroy de AT&T Bell Laboratories, y por Worm, programa escrito por John F. Shoch de Xerox Palo Alto. Darwin se describe en Software Practice and Experience, Vol. 2, 1972, 93-96. Una vaga descripción de lo que parece ser el mismo juego aparece en la edición de 1978 de Computer Lib. En Darwin cada jugador proporciona un número de programas en assembler llamados organismos. Éstos intentan eliminar y ocupar el espacio de los organismos de la otra especie (es decir, los pertenecientes al otro jugador). McIlroy inventó un programa inmortal, pero ganó pocos juegos (baja agresividad). Worm fue creado para optimizar el uso de una red de minicomputadores. Su objetivo era evitar interferir grandes procesos cuando alguien necesitaba utilizar una máquina ocupada. Posteriormente, el autor citado y B. G. Jones proporcionaban guías por correo a quienes les escribían para implementar un “campo de batalla de guerra de núcleos (en alusión a las antiguas memorias de toros de ferrita) propio”. El lenguaje en el que se programaba se llamaba Redcode, similar a un assembler, y existía un programa ejecutivo, Mars (Memory Array Redcode Simulator, pero, además, Mars es el nombre del dios de la guerra Marte) , para interpretarlo. Las reglas del juego eran las siguientes:

Rules of Core War

The rules of Core War are few and simple. The simpler the rules are, the simpler the referee program needs to be. Here are the rules we have been using:

1. Two battle programs are loaded into CORE at randomly chosen starting locations, subject to the constraint that the programs cannot overlap.

2. The battle proceeds as Mars executes one instruction from program X, one instruction from program Y, one from X, one from Y and so an, until one of two events happens:

i) A previcusly specified number of instructions has been executed and both programs are still running. The battle is then declared a draw and ended.

ii) An instruction is encountered that cannot be interpreted by Mars and hence cannot be executed. The program with the faulty instructían is the loser.

A continuación, se transcribe un extracto de algunos conceptos para colocar al juego “en un nivel más interesante”:
Extensions to Redcode and Mars
The version of Mars presentad here is easy to implement, and many of you may want to sea how you can expand the Core War system. For example, in this version of Mars only two battle programs can be run at once. Would it be hard to let more programs execute? How about a new Redcode instruction that allows a running program to start up another program it has copied into a free area of CORE, and thereby increase the chance that at least one program from its "team" will survive the Core War battle?
The Redcode instruction set given here is a simple one. Those of you with access to a larger computer may want to experiment with new instruction sets and addressing modes, possibly making Redcode more like a real assembly language. Instructions that protect a larger program from a small, hard-to-defeat one would help to elevate Core War to a higher, more interesting level.
We would welcome documentation and listings of Core War systems and Redcode battle programs from anyone who thinks he has come up with a particularly interesting or innovative idea.

· En el mismo año 1984, Fred Cohen dio el concepto de virus informático en una conferencia. en 1988, Robert Morris contaminó Internet y Arpanet con un worm. Unos $100 millones en pérdidas. 1991 apareció el famoso Michelangelo.

· 1990. Microsoft libera Windows. Jobs opina sobre el producto: “Si Apple no la hubiese creado, la interface gráfica no existiría”.

· 1991. Linus Torvalds crea Linux en Helsinski. Promueve la idea de que todo software debe ser gratis.

· 1997. Intel libera el Pentium: 7,5 millones de transistores en un chip.

Periféricos.
Las primeras impresoras utilizadas en los computadores utilizaban tecnologías de los equipos convencionales de tarjetas perforadas. La impresión se producía por impacto de martillos que golpeaban, a través del papel y la cinta de impresión, sobre un tipo (número, letra o carácter especial), montado en una barra o en una rueda. 1960, IBM libera la IBM 1403, asociada al computador IBM 1401, que presentaba una cadena de 5 juegos de caracteres que pasaban frente a un juego de 132 martillos.

Las unidades de cinta magnética aparecieron como dispositivos de grabación de audio de media pulgada, carrete a carrete (reel to reel) en 1934, fabricados por la compañía alemana AEG utilizando cintas de BASF. Para 1945, la IBM había desarrollado su propia versión. 1951 fue introducida la Univac Uniservo, que usaba cinta de metal de 1200 pies de longitud.

En 1981, IBM inventó los discos flexibles (floppy disks) de 8 pulgadas de diámetro y 400 Kbytes de capacidad. 1956 IBM introdujo el RAMAC 350, que almacenaba 4,4 megabytes. 1962 el primer paquete discos removible, de 14 pulgadas, 6 discos, 10 caras y 3 millones de caracteres, el IBM 1311, para el IBM 1440. 1976, Shugart Associates produjo el floppy de 5 1/4 pulgadas y 110 Kbytes de capacidad. La empresa llegó a despachar 4.000 unidades diarias. La producción fue entonces trasladada a Matsushita, en Japón, llegando esta empresa a ser el mayor fabricantes de discos flexibles del mundo. Durante 1981, Sony introdujo el diskette de 3 1/2 pulgadas con 438 Kbytes de almacenamiento. La capacidad fue revisada a 1 Mbytes (720 KBytes formateado).

Figura 1.

La idea de almacenamiento óptico se remonta a 1927, cuando John L. Baird demostrón un “Phonovision System”, basado en un disco encerado exhibido por un explorador (scanner) óptico. 1935, Baird Radiovision ofrecía en las tiendas por departamento de Londres, 6 minutos de exhibición de video. 1961, 3M comenzó a trabajar en grabación óptica y en 1965 había conseguido varias patentes. 1974, Philips demostró un grabador y lector de laser. 1978 demostró se sistema de discos compactos (CD) de audio, que hicieron obsoletos los discos fonográficos. Los primeros dispositivos ópticos para computadores fueron embarcados en 1983. Se trataba de los WORMs (Write Once Read Many times) de 12 pulgadas. Los CD de audio fueron la base de los CD-ROM que comenzaron a despacharse en 1985.

Lenguajes.
La doctora Grace Brewster Murray Hooper (1906 1992) de la Eckert-Mauchly Computer Corporation dirigió el primer esfuerzo comercial en programación automática. El Univac I (liberado en 1951) se programaba en un código mnemotécnico excesivamente rudimentario.

Flowmatic, un lenguaje que tendría gran importancia en el desarrollo de COBOL, fue liberado en 1956. Como líder del proyecto de la IBM 704 , John Backus (n. 1924) encargó a un equipo el desarrollo de un lenguaje para científicos, matemáticos e ingenieros. 1954 estaba listo el paper. Así se produjo el FORTRAN (FOrmula TRANslation), en abril de 1957, luego de 25 años-hombre de trabajo. Posteriormente, una VI versión de FORTRAN fue renombrada PL/I en 1965.

En la primavera de 1958 apareció The Preliminary Report on an International Algebraic Language, denominado posteriormente ALGOL.

En mayo de 1959, por iniciativa del ministerio de defensa norteamericano, se crea CODASYL, sigla del Commitee on Data Systems Languages. Aparecen en ese año las especificaciones para la Backus-Naur Form o BNF.

El primer reporte sobre COBOL (Common Oriented Bussines Language), se produjo en abril de 1960; la implementación mejorada apareció en 1961 (COBOL 61).

A comienzos de la década de 1960, IBM libera RPG (Report Program Generator) para facilitar la conversión de equipos convencionales de tarjeta perforada al IBM 1401. Este sistema de generación de reportes fue repetido para el IBM/360 modelo 20, IBM System/3 (RPG II), IBM System/38 (RPG III), etc. Ésta es otra prueba de la propagación de modos de trabajo que, a pesar de las mutaciones tecnológicas y sus posibilidades, provenían de los viejos sistemas electromecánicos.

En mayo de 1964, John Kemeny y Thomas Kutz del Darmouth College liberaron BASIC (Beginner’s All-Purpose Symbolic Instruction Code). El proyecto había na inicialmente con el propósito de facilitar la enseñanza de la computación a estudiantes de carreras no científicas , pero su sencillez lo convirtió en uno de los más populares lenguajes, primero para time sharing y luego para minicomputadores. Bill Gates asegura que BASIC no llegó a ser el lenguaje de computación más conocido y más accesible sólo porque viene gratis con cada máquina. Entre los atributos que el creador de Microsoft le encontraba estaban la simplicidad de usar un intérprete, su poderoso manejo de strings, la riqueza del lenguaje, sus palabras clave (keywords) y sintaxis semejante al inglés (English-like), y la libertad que brinda a los programadores. Obviamente, para standards actuales, algunas de estas posibles ventajas son controvertibles. Sin embargo, un hecho es cierto, empresas como Basic Four, por ejemplo, se apoyaron fuertemente en este lenguaje para forjar sus éxitos. Hoy en día, Microsoft mantiene una versión de este lenguaje: Virtual Basic.

Pascal, un lenguaje estructurado, desarrollado por Niklaus Wirth (n. 1934) del Institute für Informatik en Zurich, Suiza, liberado en 1968. Pascal fue inspiración de varios “Pascal-like languages”, como el C, C++, Ada , etc..

Software.
Los primeros microcomputadores entraron en escena en 1975, de compañías como MITS y Southewest Technical Products. Sus pequeñas memorias sólo permitían que trabajaran en lenguaje de máquina. Bill Gates y Paul Allen desarrollaron una versión de BASIC
para la máquina de 4 bits Altair de MITS. Era importante, recuerda Gates, usar un prompt “OK” en lugar de “Ready” para ahorrar memoria.
1979, Bob Frankston (1949) y Dan Bricklin (1951), dos graduados del MIT, crearon VisiCalc, la primera hoja de cálculo (spreadsheet, pero no llamada así originalmente)., para Apple II. VisiCalc fue programado en assembler 6502. Tenía 254 filas por 63 columnas. Seguía dos patrones de recálculo: barría las columnas de izquierda a derecha y las columnas de arriba a abajo, produciendo frecuentemente referencias circulares irresolubles. El texto no se extendía más allá de las columnas. Frankston y Bricklin fundaron la compañía Software Arts el 2 de enero de 1979 (luego absorbida por Lotus). El software fue rápidamente portado a virtualmente todos los computadores personales basados en microchips 6502 y Z80. Sin embargo, VisiCalc no corría en el sistema operativo CP/M: Esto sucedió después que Sorcim tomó ese nicho con SuperCalc. Microsoft respondió con Multiplan. 1983, Lotus barrió el mercado con 1-2-3



Apéndice.

El Caso de la memoria virtual (basado en un trabajo corporativo del autor de septiembre de 1974).

¿Qué es memoria virtual?

Memoria Virtual (Virtual Storage), es una técnica de almacenamiento que permite al Sistema Operativo funcionar como si tuviese una memoria prácticamente ilimitada. Los programas a ser ejecutados se cargan en la memoria virtual la cual consiste en un espacio en la memoria real (la clásica memoria central) y más un espacio adicional en un dispositivo de acceso directo (disco a tambor magnéticos).
Cuando los programas se están ejecutando, las partes activas de la memoria virtual son asignadas a la memoria real en pequemos bloques o páginas. Para conseguir un adecuado ajustes al espacio real se lo divide en marcos (page frames). Las páginas de un programa determinado pueden estar en cualquier espacio disponible de la memoria principal, independientemente de donde ellas se encuentren en el almacenamiento virtual. Cuando se necesita el espacio real ocupado por una página, ésta es devuelta al disco a tambor magnético. Cuando el programa la requiera nuevamente se producirá una demanda de página y la misma será llevada otra vez del dispositivo de acceso directo a la memoria, donde se almacenará en cualquier espacio disponible.

¿Cómo se desarrolló el concepto de memoria virtual?
· 1952. El computador inglés Ferranti Atlas corría múltiples series de trabajos (job streams), utilizando una estructura de páginas de tamaño fijo . Este sistema proponía una política de reemplazo de páginas intentando detectar una conducta cíclica en la referencia a éstas, minimizando el tráfico de páginas retirando de la memoria principal las que no esperaba usar por largo tiempo. Este método fue exitoso para programas cíclicos pero su rendimiento no fue bueno para programas con demanda aleatoria de páginas. Su implementación, además, fue muy costosa .
· 1952. El Gamma 60 de la compañía Bull de Francia ejecutaba trabajos totalmente parralelos desde un cierto número de procesadores periféricos. Aparentemente, suoperatividad no fue buena pues la Compañía de Ferrocarriles de Francia cambia, en 1965, este computador por un Univac 1107 .
· 1960, El EMIDEC 2400 corría en esa fecha hasta 24 procesos paralelos independientes. Esta fué una máquina totalmente asincrónica diseñada por N. Brown y su equipo (forman parte, ahora, del grupo ICI en Inglaterra).
· 1962. Burroughs instala con éxito, en los Estados Unidas, su serie 5000 basada en un disco de cabeza fija y en un intercambio (swap), de segmentos de longitud variable. Como es sabido, ningún trabajo puede establecerse a priori dentro de una longitud fija; ni siquiera dentro de longitudes que sean múltiplo de una longitud fija determinada. Citando a E. J. Gaudion, podemos decir que "el tamaño de la información es una variable independiente que cambia dinámicamente dentro de instrucciones y grupos de datos, entre instrucciones y grupos de datos y también de aplicación en a aplicación. De aquí derivamos la ley: Cualquier tamaño de página fijo es automáticamente de valor erróneo". Por azar a la que sea, Burroughs resolvíó este problema permitiendo a los segmentos de trabajo ser de la longitud que debían de ser (hasta un máximo de 1024 palabras), lo cual no es común an en nuestros días. Según el autor citado, por primera vez en la historia, los "sufrientes usuarios" consiguieron algo importante de los fabricantes. Burroughs proporcionaba un sistema fácil de usar. Volviendo a la cita: "Infortunadamente, nadie supo lo bueno que era hasta el históric anuncio del Sistema/360 y hasta que el trauma de su lenguaje de control de trabajos llega a ser autoevidente".
Los que intervinieron en el concepto de Burroughs fueran, entra otros, King, Glaser, Lonergan y Barton. El Burrougha 5000 propuso, además, novedosas ideas: el apuntador (pointer). que evita el traslado de grandes masas de información y la pila (stack), simple. Como resultado también dió nacimiento al primer sistema viable y "sin pena" de multiprogramación. Más tarde, para acomodar multiproceso y compartimiento de archivos, surgió el concepto de "cactus stack" que estuvo corriendo exitosamente en las series 6500.
Los programas en el B 5000 eran segmentados por los compiladores a nivel de bloques de ALGOL o parágrafos de COBOL. El segmento es usado directamente como unidad de almacenamiento. Cada segmento se obtenía cuando se hacía referencia a información perteneciente a él. A cada programa en el sistema se asocia una tabla de referencia del programa (PRT). Esta tabla es el segmento inicial de cada programa y se establece un registro especial para que apunte a la dirección de comienzo de la tabla. Todo segmento del programa está representado por una entrada en esta tablas la cual brinda la dirección base del segmento y su extensión el mismo tiempo que una indicación de si el segmento está o no en ese instante en el almacenamiento de trabajo.
Se emplearon múltiples estrategias de reemplazo durante el desarrollo del sistema pero se acepta como más efectiva una estrategia esencialmente cíclica.
El B 8500 es similar a la serie 5000. Su más notable adelanto es su memoria de película delgada de 44 palabras. Dieciséis palabras se utilizan para la óbtención de datos e instrucciones y veinticuatro para almacenamiento temperario del PRT y registros usados. las cuatro restantes conforman una cola.
· 1962. La Rice University tiene implementado un espacio segmentado para su computador análogo al B 5000. Su unidad de almacenamiento era el segmento. Estos eran inicialmente colocados secuencialmente en la memoria en un bloque de direcciones contiguas, la primera de las cuales era una referencia a la palabra código del segmento, palabras estas que eran usadas para proporcionar una compacta caracterización de programas individuales a segmentos de datos (muy similares a los descriptores a elementos PRT del B 5000). Cuando un segmento pierde su significación se lo designa como inactivo y su primera palabra se llena con el tamaño del bloque y la dirección del próximo bloque inactivo. Cuando se requiere un espacio, se explora secuencialmente la cadena de bloques inactivos para encontrar uno de tamaño suficiente. Si esta operación fracasa la búsqueda se hace por un algoritmo de reemplazo que toma en cuenta la existencia de una copia del segmento en la memoria de respaldo y el uso o no del segmento desde la última vez que fue considerado para reemplazo
· 1963. Univac, bajo la influencia de Lonergan, reconoció la importancia de intercambiar programas entre la memoria principal y un medio externo, y sus sistemas operativos tuvieron, a partir de entonces, el acceso rápido a tambor magnético implementado. Desafortunadamente, aunque ellos dividían el programa en piezas que distribuían rápidamente entre tambor y memoria, carecieron de una frase feliz como fue "memoria virtual". Además, el sistema requería la intervenciónn del usuario en la división inicial del programa y "vueltas" del sistema operativo en el proceso de almacenamiento.
· 1965. La Control Data Corporation automatiza el proceso de almacenamiento de páginas mediante páginas de tamaño fijo y simplifica la división inicial efectuando la partición en módulos de igual tamaño al de la memoria real (la Digital Equipment Corpora tion tuvo una idea aproximada a este enfoque) .
El CDC 3300, del cual hablaremos con algún detalle, no proporcionaba reubicacíón dinámica, entre otras razones, por tener un tamaño fijo de tabla por cada programa, sin presentar la tabla espacio alguno para estadística de páginas y siendo el tamaño del espacio de direcciones que estaba a disposición del programador, menor que la memoria principal de la máquina.
El sistema provisto por CDC estaba totalmente implementado por hardware. Podían correr hasta ocho programas simultáneamente pero sólo uno tenía el control del computador en un determinado período. El supervisar de multiprogramación controlaba la progresión de un programa a otro. Con tal fin fijaba el registro de programa para indicar el programa que tenía el control. El corazón del sistema de hardware era un archivo de páginas que proveía dieciséis registros por cada uno de los ocho programas. Cada registro proporcionaba una entrada de traducción que relacionaba el número de segmento de un programa y el númara de bloque para ese segmento dentro de la memoria. El número de segmento variaba úntre 1 y 16 y las páginas direccionables eran 1289 teniendo cada página 2.000 palabras. Cuando se buscaba un segmento desde el registro de instrucción, podía suceder que la correspondiente entrada estuviera indicando que el bloque requerido estaba ausente. Esto producía una interrupción del monitor de multiprogramación, el cual podía obtener la información desde la Memoria principal.
· 1967. GE/Honeywell puso operativo el sistema MULTICS, cuyo padre fue, entre otros, el ya mencionado Glaser. Se trata del MULTiplexed Information and Computing Service, y fue un proyecto conjunto del Instituto Tecnológico de Massachusetts (MIT), los laboratorios de la Bell Telephone y la Compañía General Electric. El sistema inicial estaba implementado en un GE 645 configurado con dos procesadores de 128 K words de almacenamiento de núcleos, cuatro millones de palabras en almacenamiento de tambor y dieciseis millones en disco. El sistema fue concebido para dar servicio a un gran número de usuarios. A diferencia del B 5000, el segmento en este sistema no era la unidad de almacenamiento. Esto se efectúa mediante una variante del sistema estándar: El sistema tiene dos tamaños de página que son 64 y 1024 palabras. Mediante esta técnica, al costo de una mayor complejidad en las estrategias de reemplazo, se logra reducir la pérdida de almacenamiento producida por fragmentación dentro de las páginas. Utiliza dos niveles de direccionamiento indirecto mediante una tabla de segmentos y un grupo de tablas de páginas. Cada entrada en la tabla de segmentos indica la ubicación de la tabla de páginas correspondiente a ese segmento. Una pequeña memoria asociativa se utiliza para mantener las direcciones de las páginas recientemente accesadas y, de este modo, reducir el sobretiempo producido por el proceso de direccionamíento. El programador podía indicar módulos de datos o programas que deseaba mantener en memoria, la información que por la frecuencia de uso debería, de ser posible, estar en memoria y la información que no iba a ser accesada nuevamente por el programa, con la cual ayudaba al proceso de demanda de pá gina.
· 1967. IBM adapta la línea regular del 360 mediante la adición de un mecanismo de intercambio (swapping), y nace el IBM/360-67, Este fue tambié un sistema de página de tamaíño fijo, pero no fue bautizado con el nombre de memoria virtual. Sin embargo, ya para esa fecha, IBM habla desarrollado un computador experimental diseñado e instalado en el Thomas J. Watson Research C entar. El hardware básico de este sistema, denominado M449 era un computador 7044 extensamente modificado principalmente por la adición de aproximadamente 200.000 palabras de memoria de núcleos. El tiempo de acceso era de 8 microsegundos. A cada uno de los usuarios que se comunicaban con el sistema por medio de un terminal, le "daba la impresión" de que estaba usando un computador separado (llamado 44X), con dos millones de palabras de espacio de memoria, un repertorio completo de instrucciones y el esqueleto de un sistema operativo. Esta "máquina virtual" era, en efecto, controlada por un sistema operativo modular (MOS), que corría en el M44. Poseía además un archivo de discos IBM 1301. consistente en 9 millones de palabras y que se usaba como almacenamiento de respaldo, El tamaño de la página podía variarse al arranque del sistema y esto se hacía con propósitos de experimentación. Se usaron también varios algoritmos de reemplazo. Uno de ellos, de particular intarés, seleccionaba el azar entre varias candidatas aceptables en función de su frecuencia de uso y la modificación o no de la página. Aunque poco uso se hizo de esta facilidad, por lo cual no pudo saberse cuan efectiva fue el M44, disponía de instrucciones para indicar si una página se utilizaba dentro de un corto tiempo o si no se usaba dentro de un cierta tiempo.
Volviendo al modelo IBM /360-67, agreguemos que una configuración típica, de acuerd a las descripciones suministradas, sería como sigue: 2 procesadores de 256 KBytes cada uno, un tambor de 4 MB y cerca de 500 MB en disco. De este equipo se previeron dos versiones: una con direcciones de 24 bits y otra con direcciones de 32 bits. El espacio de memoria disponible era un millón de bytes con un máximo número de segmentos igual a 16 para direccionamiento de 24 bits y 4096 para 32 bits. En el primer caso, por el limitado número de segmentos, puede ser necesario colocar varios programas dentro del mismo segmento. Dispone de una memoria asociativa de nueve registros, ocho de los cuales se utilizan para almacenar entradas de tabla para páginas recientemente accesadas; el noveno se usa para acelerar el direccionamiento del contador de instrucciones a una dirección física real. Se lleva un registro automático de las madificacio nes que sufre la información contenida en los marcos de página .
· 1970. Radio Corporation of America fue la primera compañía en comercializar la expresión "memoria virtual". El Spectra 70, casi un duplicado del IBM /360, utilizaba un tambor y páginas de tamano fijo . La comunicación a la ACM de G. Oppenheimer y N. Weizer de la RCA, anuncia: "El Sistema Operativo de Tiempo Compartido (TSOS), del Spectra 70, está diseñado para controlar un sistema de tiempo compartido y multiprogramación en lote (batch), de tamaño mediano que soporte hasta 48 usuarios conversacionalea y un grupo combinado de 64 tareas batch e interactivas, procesando simultáneamente". Se gún estos autores, sus páginas eran de 4 KB, el tambor tenla una capacidad de 800 a 1600 páginas, con una velocidad de transferencia de 333 KB, la memoria física de 131 o 262 KB y dos millones de bytes de almacenamiento virtual. Por supuesto, el modelo virtual Spectra 70/46, tenía incorporado el hardware de traducción de direcciones de memoria.

Este bosquejo concluye con los anuncios de IBM y Burroughs sobre la disponibilidad de memoria virtual en sus sistemas 370 y 1700 respectivamente. De Burroughs, transcribimos esta lacónica expresión aparecida en el B 1700 System Reference Manual: "Memoria virtualmente infinita...”.

Figura 2.

Este recorrido hístórico nos lleva a comprender que el concepto de memoria virtual tenía unos 18 años de vida en el mercado antes de ser anunciado como tal. Volvemos a leer nuestros apuntes sobre el Ferranti Atlas: “El almacenamiento físico era un tambor de 98,304 palabras. Las páginas eran de 512 palabras. La estrategia de reemplazo se basaba en un programa que aprende (learning program). Este programa hace uso de información que registra el tiempo desde la última vez que la página fue accesada en un cuadro y la duración previa de inactividad de esa página”. Todos los elementos fundamentales de la memoria virtual están allí.

Bibliografía.
· Byte staff, “Micro, Micro: Who Made the Micro?”, Byte, January 1991, 305-312.
· CODASYL, A Survey of Generalized Data Base Management Systems, May 1969.
· Dewdney, A. K., “In the game called Core War hostile programs engage in a battle of bitd”, Scintific American, May 1984, 15-19.
· Evans Christopher, The Making of teh Michro, New York, Van Nostrand Reinhold, 1981.
· Freiberger Paul, Swaine Michael, Fire in the Valley, Berkeley, Ca., Osborne/McGraw-Hill, 1984.
· Gaskin Robert R., “Paper, Magnets, and Light”, Byte, November 1989, 391-399.
· Gates Bill, “The 25th Birthday of Basic”, Byte, October 1989, 268-276.
· Keep Christopher, McLaughlin Tim, Parmar Robin.
<http://www.iath.virginia.edu/elab/elab.html> 1993-2000. Consulta: 19/12/2002.
· Kidder Tracy, The Soul of a New Machine, Boston, Atlantic-Little, Brown, 1981.
· Licklider Tracy Robntt, “Ten Years of Rows and Columns”, Byte, December 1989, 324-331.
· Moore Business Forms, The World of Optical Character Recognition, Moore Business Forms Inc., M4045, Niagara Falls, New York, 1971.
· Moreau R., Ainsi Naquit l’Informatique, Paris, Dunod, 21982.
· Neibauer Alan, “A History of Programming Languages”, 80 Micro, July 1983, 228-236.
· Reid-Green Keith, “History of Computers. The IBM 704”, Byte, January 1979, 190-192.
· Sweet Frank, “What, if Anythig, is a Relational Database?, Datamation, July 15 1984, 118-124.
· Von Neuman John, “Teoría General y Lógica de los Autómatas (The General and Logical Theory of Automata”, 1951, en Zenon W. Pylyshyn (ed.), Perspectivas de la Revolución de los Computadores, Madrid, Alianza, 1975.