HISTORIA DE LOS COMPUTADORES Héctor A. Sanjuán Redondo Proyecto de Investigación Becas de Aprovechamiento Académico Excelente 2005/2006. Comunidad de Madrid. En colaboración con la profesora: María Teresa Higuera Toledano FACULTAD DE INFORMÁTICA. UNIVERSIDAD COMPLUTENSE DE MADRID. 1 ÍNDICE 1. ANTECEDENTES DE LOS COMPUTADORES • 1.1. El Desarrollo del Cálculo en la Historia....................................................................... • 1.1.1. El ábaco: la primera herramienta de cálculo..................................................... • 1.1.2. La Era Mecánica............................................................................................... • 1.1.3. Charles Babbage y Ada Lovelace..................................................................... • 1.2. El Desarrollo de los Automatismos en la Historia....................................................... • 1.2.1. Los autómatas de Herón de Alejandría............................................................. • 1.2.2. El Telar de Jacquard......................................................................................... 2. EL DESARROLLO DE LOS COMPUTADORES • 2.1. Primera Generación de Computadores........................................................................ • 2.1.1. John Von Neumann: el padre de las computadoras.......................................... • 2.1.2. Konrad Zuse y la primera computadora binaria............................................... • 2.1.3. John V. Atanasoff y Clifford Berry: el ABC.................................................... • 2.1.4. Alan Turing: el proyecto Colossus................................................................... • 2.1.5. Howard Aiken, Grace Hopper: las series de Harvard Mark............................. • 2.1.6. John Mauchly y J. Presper Eckert: ENIAC, EDVAC, BINAC y UNIVAC..... • 2.2. Segunda Generación de Computadores........................................................................ • 2.2.1. Avances técnicos de la generación................................................................... • 2.2.2. Los primeros lenguajes de alto nivel................................................................ • 2.2.2.1. FORTRAN • 2.2.2.2. COBOL • 2.2.2.3. ALGOL • 2.2.3 Los computadores más representativos de la Segunda Generación.................. • 2.2.3.1 TRADIC y TX-0 • 2.2.3.2 IBM 7090 • 2.2.3.3 LARC • 2.2.3.4 BM 7030 • 2.3. Tercera Generación de Computadores......................................................................... • 2.3.1. Los circuitos integrados.................................................................................... • 2.3.2. Nuevos lenguajes de programación.................................................................. • 2.3.2.1. BASIC • 2.3.2.2. PASCAL • 2.3.3. Los computadores más representativos de la Tercera Generación................... • 2.3.3.1. Las Series IBM System/360 • 2.3.3.2. General Data NOVA • 2.3.3.3. CDC 6000 Series • 2.4. Cuarta Generación de Computadores.......................................................................... • 2.4.1. Los microprocesadores..................................................................................... • 2.4.2. Los lengajes de programación de la Cuarta Generación.................................. • 2.4.2.1. C • 2.4.2.2. Java • 2.4.3. Los computadores personales........................................................................... • 2.4.3.1. Años 70 • 2.4.3.1.1. MITS Altair 8800 • 2.4.3.1.2. Apple II • 2.4.3.2. Años 80 • 2.4.3.2.1. IBM PC • 2.4.3.2.2. Apple Macintosh • 2.4.3.3. La evolución hasta nuestros días 3. ASPECTOS POLÉMICOS E INFLUENCIA SOCIAL DE LOS COMPUTADORES.......... • 3.1. La Primera Generación, la guerra y la responsabilidad social de ayer y hoy • 3.2. El mercado de los computadores ➢Pág.3 ➢3 ➢4 ➢6 ➢9 ➢9 ➢12 ➢16 ➢16 ➢19 ➢22 ➢25 ➢28 ➢30 ➢34 ➢36 ➢37 ➢41 ➢47 ➢47 ➢49 ➢52 ➢57 ➢57 ➢59 ➢64 ➢75 2 1. ANTECEDENTES DE LOS COMPUTADORES 1.1.EL DESARROLLO DEL CÁLCULO EN LA HISTORIA 1.1.1. El ábaco: la primera herramienta de cálculo El ábaco se considera la primera máquina para realizar cálculos numéricos. Consiste en una tabla con varios hilos por los que se pueden trasladar cuentas de manera que simplifican las operaciones de suma, resta, multiplicación y división. Sus orígenes son inciertos: algunos autores sitúan los primeros ábacos en oriente próximo desde donde se extenderían hasta China y otros países del lejano oriente; otros, sin embargo, emplazan su nacimiento en los últimos ya que hay indicios de que los ábacos existían en China hace más 3.000 años aunque las primeras referencias claras son del siglo II a.C. Debido a la facilidad que otorgaba a la hora de realizar cálculos su uso se extendió y generalizó en toda a Asia y Europa, cobrando especial importancia hacia los siglos XI y XII. A partir del siglo XV la utilización del ábaco en Europa se Dibujo mostrando la enseñanza tradicional y el ábaco chinos fue perdiendo al ritmo que el uso de los números indo-arábigos aumentaba y aparecían nuevos métodos de cálculo1. En la actualidad el ábaco se utiliza para la enseñanza y sigue utilizándose en multitud de comercios de China así como en las Chinatowns particulares de diferentes partes del mundo, lo que demuestra su gran eficiencia. Como curiosidad conviene comentar que en 1946, a poco más de un año del final de la guerra, se realizó una competición patrocinada por el periódico estadounidense de la marina Stars And Stripes entre una calculadora electromecánica operada por un experto militar americano y un ábaco manejado por un funcionario japonés, resultando ganador este último en cuatro de las cinco pruebas Asiático haciendo uso del ábaco realizadas (perdió en la de multiplicaciones). Los periódicos nipones se leyeron cosas como: “La civilización, a las puertas de la era nuclear, sufrió un revés la tarde del lunes cuando el ábaco, de 1http://es.wikipedia.org/wiki/%C3%81bbaco http://www-etsi2.ugr.es/alumnos/mlii/abaco.htm http://www.chinavista.com/experience/abacus/abacus.html 3 2000 años de antigüedad, superó a la calculadora eléctrica en la realización de sumas, restas, divisiones y en un problema de las tres, además de la multiplicación”2. Aunque el cálculo y las matemáticas en general fueron avanzando en mayor o menor grado a lo largo de los siglos, habrá que esperar hasta comienzos del siglo XVII para ver aparecer nuevas herramientas que pudieran sustituir de alguna manera al algo tan sencillo como el ábaco. Antes cabe destacar el Mecanismo de Antikythera, construido alrededor del año 80 a.C.y recuperado en 1900 en la isla griega de Rodas. Era un artefacto de cálculo astronómico con mecanismos de precisión que simulaba el movimiento del sol, la luna y varios planetas, teniendo a la vista la fecha en que se había dado, o se daría, tal El mecanismo de Antikythera combinación. Es tanta su sofisticación que se le ha descrito como “la primera computadora de Occidente”3. 1.1.2. La Era Mecánica Durante el siglo XVII aparecieron nuevos artilugios para realizar cálculos. Basados en múltiples y complicados mecanismos, permitían realizar diversas operaciones de forma más o menos automática. Uno de los primeros ejemplos, “la regla de cálculo”, data de 1610. Su inventor, John Napier, padre los logaritmos, ingenió una simple tabla con un sistema de varillas mediante el cual se podían simplificar las operaciones de multiplicación y división, especialmente cuando se trataba de números muy John Napier elevados. En 1641, el matemático y filósofo francés Blaise Pascal construyó, con 19 años, una máquina mecánica que permitía sumar. La máquina consistía en una serie de ruedas dentadas conectadas de manera que se podían realizar adiciones. Este invento fue recogido años más tarde por Leibniz, que propuso Blaise Pascal utilizar el sistema binario para realizar los cálculos, y que diseñó 2 http://www.ee.ryerson.ca:8080/~elf/abacus/abacus-contest.html 3 http://www-etsi2.ugr.es/alumnos/mlii/Antikythera.htm 4 en 1670 una máquina capaz de realizar sumas, restas, multiplicaciones y divisiones. Sin embargo, la tecnología disponible le imposibilitó la realización de las operaciones con exactitud. Cabe decir que, por lo visto, ni Pascal ni Leibniz fueron los primeros en realizar inventos de tales características. Fue un estudiante alemán de la Universidad de Tubingen, Wilhelm Schickard, el que supuestamente había construido ya una máquina entre 1623 y 1624, de la que hace unas breves descripciones en dos cartas dirigidas a Johannes Kepler. Por desgracia, la máquina quedó destruida en un incendio, y el propio Schickard murió poco después, víctima de la peste bubónica. La máquina de Leibnitz fue mejorada en 1727 por Jacob Leupold y, en 1777, Charles Mahon diseña una máquina aritmética y otra lógica, el Demostrador de Stanhope. En 1825, el francés Charles Xavier Thomas de Colmar diseñó una máquina calculadora que posteriormente conseguiría Gottfried Wilhelm Leibnitz (1646 - 1716) comercializar con éxito4. La Pascalina 4 http://www.monografias.com/trabajos12/hiscompu/hiscompu.shtml, http://www.angelfire.com/de/jbotero/co/cohistoria.html, http://www-etsi2.ugr.es/alumnos/mlii/#prehistoria 5 1.1.3. Charles Babbage y Ada Lovelace: La Máquina Diferencial y la Máquina Analítica Charles Babbage es considerado por muchos como el padre de los computadores modernos. Nacido en 1792, hijo de un adinerado banquero inglés, le apasionaban las matemáticas. En 1811 ingresa en el Trinity College de Cambridge y pronto alcanza un nivel superior al de sus propios tutores. Fue uno de los fundadores de la Sociedad Analítica para la promoción de las matemáticas y elegido miembro de la Royal Society en 1816. A partir de 1820 comenzó a interesarse enormemente por las máquinas de calcular. De ésta pasión surgió un primer proyecto: la Máquina Diferencial. Pretendía dispositivo de seis dígitos para resolver construir un ecuaciones polinómicas. Sin embargo, conforme el modelo inicial progresaba, aparecían constantemente nuevas necesidades y partes que añadir a la máquina. Al final Babbage acabó Charles Babbage invirtiendo 50 veces el presupuesto inicial, sin conseguir resultados. Tan mal resultó su apuesta, que el primer ministró inglés, Benja Disraeli, escribiría que “para lo único que podía servir aquel aparato era para calcular las enormes sumas de dinero público que se habían derrochado ya con él”5. Babbage no se resignó y decidió dar un paso más con el diseño de la Máquina Analítica. Con ella, pretendía realizar un dispositivo de cálculo general, y en él puso todos sus esfuerzos y recursos económicos. Para llevar a cabo su invención, compró una casa que transformó en taller y fundición para las piezas. Contrató proyectistas, dibujantes, técnicos y trabajó sin cesar en el perfeccionamiento del diseño, aunque ni siquiera sabía si era realizable (“no estando probada su imposibilidad, debía seguir un ligero resplandor de luz que creía percibir”). La Máquina Analítica de Babbage tal y como Máquina Diferencial. Science Museum, Kensington, Londres. estaba proyectada debía tener un funcionamiento paralelo al telar de Jacquard que analizaremos más 5 http://www-etsi2.ugr.es/alumnos/mlii/Maquina%20DDiferencial.htm 6 adelante como mecanismo cumbre de los automatismos. Dicho telar era capaz de tejer cualquier dibujo si se le daban las instrucciones apropiadas por medio de tarjetas perforadas, y hacerlo con los diferentes colores que se proporcionaran. De esta manera, la Máquina Analítica debía ser capaz de realizar cualquier operación que se le indicase, con los números que se le proporcionasen. La entrada de datos se haría a través de dos juegos de tarjetas perforadas: uno con las operaciones a realizar y otro con el valor de las variables. Babbage había previsto además la posibilidad de realizar operaciones logarítmicas y trigonométricas a través de más juegos de tarjetas y tablas de equivalencia que serían solicitadas por la máquina en el momento de su utilización. Internamente, la Máquina constaba de dos partes: • Una memoria en la que se almacenarían todas las variables con las que se va a operar, así como los resultados de ese tipo de operaciones. • Una unidad operativa, encargada de realizar las operaciones. Babbage estimaba que su Máquina sería capaz de realizar en 1 segundo 60 sumas o restas, 1 multiplicación de dos números de 50 cifras o una división de un numero de 100 cifras por uno de 50. Estas operaciones, y cada uno de sus pasos podrían ser imprimidos sobre papel. La Máquina Analítica como tal era ilimitada, tanto en el número de operaciones a realizar como en el número de variables utilizadas. Babbage restaba importancia a este hecho argumentando que, en vez disponer de un espacio infinito para tal artilugio, contaba con un tiempo infinito para la realización de un número ilimitado de funciones a través un mecanismo de dimensiones limitadas6. La Máquina estaba controlada por una secuencia de instrucciones y poseía La Máquina Analítica. Science Museum, Kensington, Londres. una unidad de proceso, una memoria central, facilidades de entrada y salida de datos, y posibilidades de control paso a paso. Todo ello son las características propias de lo que hoy conocemos como programa, y es aquí donde radica la verdadera importancia del trabajo de Babbage. 6 Ch. Babbage - La máquina analítica. Perspectivas de la Revolución de Computadores. Selección y comentarios de Zenon W. Pylyshyn. Alianza Editorial. 1975. 7 Augusta Ada, Condesa de Lovelace, sería reconocida como la primera programadora de la historia por los aportes realizados en colaboración con Babbage a la Máquina Analítica. Hija del poeta romántico Lord Byron, Ada entró en relación con Babbage desde muy joven, cuando visitaba su taller. Babbage quedó asombrado de la capacidad de la joven para entender sus diseños y se convertiría en su tutor. Una de sus principales aportaciones fue la traducción de una memoria de Menabrea7 sobre la Máquina Analítica añadiendo sus propios comentarios e ideas, que acabó duplicando la longitud del original. Además describió procesos como los “bucles” y “subrutinas” que podían resultar muy útiles Augusta Ada Byron King, condesa de Lovelace a la hora de realizar cálculos y que serían ampliamente extendidos un siglo más tarde por personajes como Alan. M. Turing o John Von Neumann. En uno de tales comentarios se leía respecto a la Máquina Analítica: “[La Máquina Analítica] podría actuar sobre otras cosas más allá de los números, como objetos cuyas relaciones mutuas fundamentales pudieran ser expresadas por aquellas de la ciencia abstracta de las operaciones, y que deberían ser también susceptibles a una adaptación a la acción de la notación operativa y del mecanismo de la máquina... Suponiendo, por ejemplo, que las relaciones fundamentales de los sonidos graduados en la ciencia de la armonía y de la composición musical fuesen susceptibles de tal expresión y adaptación, la Máquina podría componer elaboradas y científicas piezas de música de cualquier grado de complejidad y extensión” 8. Ada murió de cáncer con tan sólo 36 años, dejando a Babbage sólo con sus proyectos. Desafortunadamente, la Máquina Analítica nunca pudo ser finalizada completamente debido a que la construcción de las piezas requería demasiada precisión que la que la tecnología de la época podía proporcionar. A pesar de los grandes avances aportados a la ciencia, la frustración generada por esta limitación unida a la falta de apoyo desde el gobierno británico harían de Babbage un hombre resentido y amargado hasta el día de su muerte9. 7 Luigi Menabrea (1809-1896) estudió ingeniería y matemáticas en la Universidad de Turin, dónde se convertió en profesor de mecánica. No sólo destacó por su publicación sobre la Máquina Analítica de Babbage, sino también por convertirse en el Primer Ministro y Ministro de Asuntos Exteriores italiano en 1867. Durante su periodo político realizó un excelente trabajo científico dando la primera formulación precisa de los métodos de análisis estructural y el principio de trabajo virtual. Además estudió la elasticidad y el principio de mínimo trabajo. http://www-history.mcs.st-andrews.ac.uk/~history/Biographies/Menabrea.html 8 http://www-groups.dcs.st-and.ac.uk/~history/Mathematicians/Lovelace.html 9 http://www.perantivirus.com/historia/s14al19.htm 8 1.2. EL DESARROLLO DE LOS AUTOMATISMOS EN LA HISTORIA Los automatismos también juegan un papel de peso en el desarrollo de la informática. Cuanto más automatizado esté cierto proceso, más se simplifica su ejecución, lo que es realmente importante a la hora de realizar tareas complejas. Ya en la antigüedad se crearon todo tipo de artilugios, con más o menos utilidad, que fueron creciendo en complejidad y funciones con los años. Sin embargo, esta evolución fue muy lenta, ya que dependía directamente del desarrollo de otras ciencias: la mecánica, la física... el desarrollo de la filosofía (y la mentalidad social) también influyó: al principio muchos eran considerados objetos sacrílegos a los que solo unos pocos podían acceder. Aún así, los más famosos autómatas que encontramos a lo largo de la historia han pasado a la posteridad gracias a las grandes dotes de ingenio y creatividad que se depositaron en ellos. Uno de los primeros ejemplos que tenemos data del 1500 a. C., cuando se inventó en Etiopía una estatua que emitía sonidos cuando el sol la iluminaba al amanecer. King-su Tse, en China, en el 500 a. C., ingenió una urraca voladora de madera y bambú, y un caballo de madera que saltaba. Poco después, en el 400 a.C., Archytar de Tarento, inventor del tornillo y de la polea, construyó una paloma de madera suspendido de un pivote, el cual rotaba con un surtidor de agua o vapor, simulando el vuelo. 1.2.1. Los autómatas de Herón de Alejandría Uno de los inventores más prolíficos fue Herón de Alejandría (nacido en Ascra) que vivió en el siglo I a.C. Entre sus inventos con mayor importancia están la dioptra, utilizado parar observaciones astronómicas, el odómetro (un sistema de engranajes combinados para contar las vueltas de una rueda) o la eolipila (un precursor de la turbina de vapor), aunque no fueron ni mucho menos los únicos10. En su libro Autómatas describe un gran número de artilugios. Algunos fueron realizados como simples juguetes, sin embargo, a otros se les acompañaba de instrumentos de carácter mágico que tan sólo podían ser La eolipila de Herón usados por los sacerdotes. La unión de mecánica y superstición se describe así en el libro Los ángeles de metal, de Kiaulehn : “Con sus autómatas movidos por vapor, Herón había convertido los templos en lugares de misterio. 10 http://www.arrakis.es/~mcj/heron.htm 9 Cuando los fuegos sagrados habían sido encendidos sobre el altar, una trompeta de piedra daba una señal y los fieles acudían. Entonces, cuando se habían congregado ante el templo, podían ver cómo las grandes puertas se abrían por si solas. Y cuando penetraban en el santuario, tras hacer girar las ruedas de bronce que se encontraban a la entrada -pues los antiguos creían que tocar el bronce purificaba al hombre- caía una fina lluvia de agua perfumada mientras unos pájaros de bronce abrían los picos y dejaban oír un canto sobrenatural. Los sótanos del templo estaban ocupados por equipos de poleas, saltos de agua, ruedas dentadas y conductos de vapor que servían para crear estos milagros. En el fondo del templo ardía la llama de los sacrificios, sostenida por las manos de los sacerdotes inmóviles. Los sacerdotes eran de bronce, y sus manos de metal podían introducirse en la llama sin que sintiesen nada. Al final del servicio religioso una fina lluvia les caía de los dedos y apagaba la llama.” Herón no fue el único en interesarse por estos artilugios. La clase alta romana, por ejemplo, tenía por costumbre utilizar diversos juguetes automáticos para El Gallo de Estrasburgo entretener a los invitados que recibían en sus casas. Los árabes heredaron y difundieron la herencia griega, introduciendo muchos de los artilugios en la vida cotidiana, este es el caso de los dispensadores automáticos de agua para beber o lavarse. También nos han llegado referencias aunque no suficientemente documentadas de otros inventos curiosos como el hombre de hierro de Alberto Magno o la cabeza parlante de Roger Bacon, ambos del siglo XIII. En el año 1235, Villard d’Honnecourt escribió un libro con bocetos que incluían secciones de dispositivos mecánicos, como un ángel autómata, e indicaciones para la construcción de figuras humanas y animales. Otro ejemplo relevante de la época fue el Gallo de Estrasburgo (Reino Unido) que funcionó desde 1352 hasta 1789. Es el autómata más antiguo que se El Pato Mecánico de Vaucanson conserva en la actualidad, formaba parte del reloj de la catedral de la ciudad y al dar las horas movía el pico y las alas. 10 A partir del siglo XV se empezaron a desarrollar múltiples autómatas: el León Mecánico construido por Leonardo Da Vinci (1452-1519) para el rey Luis XII de Francia, abría el pecho con su garra y mostraba el escudo de armas del rey; el hombre de palo, con forma de monje, construido por Juanelo Turriano el siglo XVI para el emperador Carlos V, andaba y movía la cabeza, ojos, boca y brazos. Durante los siglos XVII y XVIII nacieron muchas más creaciones de las manos de expertos relojeros como entretenimiento para las gentes. Cabe destacar dos inventos de Jacques de Vaucanson, el pato mecánico y el flautista. El primero fue descrito como “la pieza mecánica más maravillosa que se haya hecho”. El pato alargaba su cuello para tomar el grano de la mano y luego lo tragaba y lo digería. Podía beber, chapotear y graznar, y también imitaba los gestos que hace un pato cuando traga con precipitación. Los alimentos los digería por disolución y se conducía por unos tubos hacia el ano, El Flautista de Vaucanson donde había un esfínter que permitía evacuarlos. En cuanto al flautista, consistía en un complejo mecanismo de aire que causaba el movimiento de dedos y labios, como el funcionamiento normal de una flauta11. Siguieron apareciendo ingenios como humanoides cuyos inventores aseguraban que eran capaces de escribir en varios idiomas y pintar, siempre centrados en producir asombro más que en una utilidad práctica. No será hasta finales del siglo XVIII y principios del XIX, coincidiendo con la Revolución Industrial y gracias al perfeccionamiento de la máquina de vapor (Newcomen, Watt, s. XVIII), los avances en la metalurgia y otras áreas, cuando se desarrollen mecanismos que se pudieran aplicar de manera eficaz a la incipiente industria de la época. Es el caso de Edmund Cartwright, que inventó numerosas máquinas relacionadas con la industria textil: un telar movido a vapor, una máquina de cardar lana, otra para trenzar cuerdas, una máquina de vapor de alcohol12... Sala de telares a vapor Será Joseph Marie Jacquard, en 1808, el primero en perfeccionar y confeccionar definitivamente lo que puede ser considerado como la primera máquina programable y funcional de la historia y a la que dedicamos un capítulo especial. 11 http://automata.cps.unizar.es/Historia/Webs/automatas_en_la_historia.htm http://www.teatrodeautomatas.com/htmls/historia.html 12 http://automata.cps.unizar.es/Biografias/Cartwrigth.htm 11 1.2.2. El telar de Jacquard Joseph Marie Jacquard nació en Lyon en 1752. Como su padre, se convirtió en tejedor de seda y heredó el negocio. Tuvo siempre un gran interés por mejorar los procesos textiles sobre los que trabajaba, observando que los dibujos que se realizaban eran fruto de procesos repetitivos y bastante similares. Sin embargo, con 40 años de edad solamente ya había conseguido fracasar en varios y costosos proyectos que le llevaron a la bancarrota. Durante un tiempo se dedicó a otros asuntos y, con la revolución francesa desarrollándose, apoyó al Antiguo Régimen y luchó contra los revolucionarios. Una vez finalizada, volvería a Lyon y retomaría su pasión por mejorar el trabajo de la seda. Sin embargo, no fue ni mucho menos el primero que se dedicó a estos fines. Desde 1941, Francia buscaba la forma de hacer frente a la fuerte competencia del sector textil Inglés, a través de una mejora de los medios de producción y Jacques de Vaucanson, que hemos citado antes por dos de sus famosas creaciones (el Joseph Marie Jacquard flautista y el pato), fue elegido para dirigir este proceso. Vaucanson diseñó en 1745 el primer telar completamente automatizado de la historia. Su prototipo funcionaba con movimientos repetitivos guiados con tarjetas perforadas. Inexplicablemente, no fue tomado en consideración y quedó postrado como pieza de museo tras su muerte, hasta que Jacquard lo descubrió, restauró y perfeccionó en gran medida. El método de las tarjetas perforadas permitía que sólo las agujas deseadas y con cierto hilo fueran tejiendo el diseño que se pretendía crear, mientras que el resto quedaran a la espera de su turno. Jacquard fue, poco a poco, mejorando el funcionamiento de su invención, aumentando su eficiencia y la facilidad para aplicar su método a telares ya existentes. En 1812, 11,000 de sus telares se encontraban en funcionamiento en Francia, y pronto se extenderían por todo el mundo. Jacquard, además de ser premiado, había vendido los derechos del telar al gobierno y cobraba por cada telar utilizado13. Las consecuencias de algo tan simple como un agujero abierto o cerrado continúan en el día de hoy. Las tarjetas perforadas serían utilizadas más tarde para las primeras calculadoras y se 13 “AND SEW ON...” Keith Ferrell. US Airways Attaché. Marzo 2005. 12 convertirían en precursoras del sistema binario sobre el cuál se basaron todos los avances realizados en el mundo de los computadores y que describiremos más adelante. La aplicación de esta clase de inventos a la industria no fue bien recibida. En una época en la que la producción era lo que importaba, la clase obrera o proletariado se agolpaba en suburbios superpoblados, sucios y conflictivos de las grandes ciudades europeas donde las epidemias de tifus o cólera se convertían en algo habitual. Trabajaban jornadas de 12 a 14 horas en condiciones deplorables, laborales dentro de fábricas sucias, húmedas, oscuras, poco ventiladas y ruidosas. La implantación de grandes máquinas para realizar el trabajo hizo que la fuerza no fuera característica imprescindible Visita del Duque de Aumale a uno de los telares de Jacquard para los trabajadores, favoreciendo la explotación de mujeres y niños de corta edad con un salario mucho menor al de los hombres. Será entonces, a partir de la concentración de obreros en las fábricas cuando el proletariado tome conciencia de su situación y vea que mediante acciones colectivas podrían tratar de mejorar sus condiciones de vida. Ni Cartwright ni Jacquard se librarían de revueltas obreras. Cuatrocientos telares del primero fueron destruidos en una de ellas, y el primer telar automático diseñado por el segundo también perecería en un asalto a su fábrica. Jacquard escribió entonces: “El hierro fue vendido por hierro viejo, la madera por astillas, mientras en mí provocaban la mayor de las vergüenzas.” 13 Las nuevas posibilidades nacidas de la entrada en la industria de los automatismos fueron también un factor clave en la consolidación definitiva del sistema económico que impera actualmente y sobre el que funcionan todos los grandes desarrolladores de elementos relacionados con los computadores: el capitalismo. Si bien ya venían existiendo actividades propiamente capitalistas como la banca y bolsa, así como pequeños inversores privados, los costes que suponía la modernización eran muy altos, obligando la formación de diversos tipos de sociedades. Sus miembros aportaban el capital necesario y se repartían los beneficios obtenidos de las inversiones. Beneficios, por otra parte, aumentados por la mayor eficiencia y productividad de las máquinas. Ejemplos de estas sociedades son las “Partnership” y las “Sociedades Anónimas” que se generalizarían a mediados del siglo XIX14. A partir de este momento, la producción y desarrollo de automatismos aplicados a las diversas industrias se acelera. Los nuevos inventos incorporaban el concepto de realimentación y pronto se convertirían en una de las bases del desarrollo claves para la segunda revolución industrial y el crecimiento económico con la reducción de los gastos y el aumento de la productividad que suponían. Todos estos avances, combinados con los realizados en el ámbito del cálculo por Babbage ge y otros, serán clave para la aparición de los primeros computadores electromecánicos durante la primera mitad del siglo XX. Vista sobre la zona industrial de una ciudad alemana. Siglo XVIII 14 http://www.monografias.com/trabajos12/revin/revin2.shtml 14 2. EL DESARROLLO DE LOS COMPUTADORES Herman Hollerith será uno de los primeros en sacar partido tanto de el sistema de tarjetas perforadas, como del álgebra de Boole y de los sistemas eléctricos. Sobre estos tres elementos desarrolló una máquina tabuladora para realizar el censo de 1890 en los Estados Unidos, consiguiendo reducir un tiempo estimado de diez años a dos años y medio. Se trataba de una prensa manual que detectaba los orificios en las tarjetas perforadas. Tenía un alambre que pasaba a través de los huecos hasta una copa de mercurio debajo de la tarjeta, cerrando de este modo el circuito eléctrico. Este proceso disparaba unos contadores mecánicos y ordenaba los recipientes de las tarjetas, tabulando así en Herman Hollerith forma apropiada la información. Tan útil y novedoso resultó ser su sistema que en 1896 fundaba la Tabulating Machine Company para comercializar su creación. El mercado que abría esta clase de invenciones hizo que no tardaran en aparecer competidores a Hollerith. Uno de ellos, James Powers desarrolló el sistema encargado del censo de 1910 y creó Power's Tabulating Machine Company, que se convertía así en la competencia de la empresa de Hollerith. Ésta última, se fusionó con otras dos en 1924 dando lugar a la International Business Machine Corporation (IBM), aunque Hollerith ya se había retirado tres años antes15. Durante Máquina tabuladora de Hollerith los años posteriores no aparecieron dispositivos dignos de mención, aunque muchos científicos ya trabajaban en los que se convertirían en los protagonistas de la Primera Generación de Computadores. 15 http://www-etsi2.ugr.es/alumnos/mlii/#primera 15 2.1. LA PRIMERA GENERACIÓN DE COMPUTADORES (1939- 1958) Los avances que conforman lo que más tarde será conocido como Primera Generación de computadores serán llevados a cabo por diferentes personajes simultánea e interrelacionada, de manera que resulta imposible estudiar sus trabajos sin relacionarlos al mismo tiempo con su aplicación a las ya míticas computadoras que crearon o en cuyo desarrollo participaron más activamente. Así, Konrad Zuse va inexorablemente ligado a sus Z1, Z2..., John V. Atanasoff y Clifford Berry al ABC, Alan Touring al Colossus, Howard Aiken y Grace Hopper a las Harvard Mark y John Mauchly y J. Prespert Eckert a sus ENIAC, EDVAC, BINAC y UNIVAC, que conformarán el final de la generación. Sin embargo, una figura destaca sobre todas ellas: John Louis Von Neumann, considerado el padre de las computadoras modernas por sus grandes aportaciones que comenzamos a detallar en primer lugar. 2.1.1. John Von Neumann: el padre de las computadoras modernas John Von Neumann es considerado hoy como el padre de las computadoras modernas. Nacido en Budapest en 1903 y destacó muy pronto por su gran memoria. Considerado desde pequeño como un genio sus aptitudes para las matemáticas estaban muy claras aunque su padre le influenció para estudiar física. No se separó sin embargo de las matemáticas y consiguió su doctorado por la universidad de Budapest con una tesis sobre la axiomatización de la teoría de conjuntos que fue publicada cuando Neumann tenía tan sólo 20 años. En 1930, Von Neumann contaba ya con un gran prestigio por sus trabajos en el ámbito de la física cuántica y matemáticas16. John Von Neumann Ese mismo año, fue invitado a conocer la Universidad de Princeton. Las capacidades de investigación que los Estados Unidos ofrecían le impulsaron a nacionalizarse americano. De 1936 a 1938 supervisó una disertación doctoral de Alan Turing, del que hablaremos más adelante, en el Instituto de Estudios Avanzados (IAS), dónde había entrado como profesor en 1933. De las 150 publicaciones de Von Neumann, 20 son sobre física. El resto se reparten entre 16 http://www.astrocosmo.cl/biografi/b-j-v_neumann.htm 16 matemática pura ( teoría de conjuntos, lógica, grupo topológico, teoría de medidas, teoría de operadores, geometría continua... ) y matemática aplicada (estadística, análisis numérico, ondas de choque, problemas de fluidos, hidrodinámicas, aerodinámicas, balística, problemas de detonación, meteorología... ). El primer contacto de Neumann con los computadores vino de la mano de Howard Aiken y su trabajo con el Harvard Mark I en 1944. Los esfuerzos de cálculo que sus trabajos requerían hicieron que pensara en el uso de dispositivos mecánicos para su cómputo. En la primavera de 1955 escribiría las bases de todo su trabajo en el “First Draft of a Report on the EDVAC” (Primer boceto de un informe sobre el EDVAC), un escrito dirigido a John Mauchly y J. Presper Eckert, diseñadores del computador electrónico EDVAC en la Universidad de Pennsylvania. El informe organizaba un sistema computador en cuatro partes principales: la Unidad Central Aritmética (UA), la Unidad de Control (UC), la Memoria (M) y los dispositivos de Entrada/Salida (E/S). La UA debía ser capaz de realizar las cuatro operaciones aritméticas elementales y quizás otras como raíces, logaritmos o funciones trigonométricas y sus inversas. La UC debería controlar la correcta ejecución secuencial de las operaciones y hacer que las unidades individuales trabajen juntas para llevar a cabo la tarea específica programada en el sistema. La memoria debería almacenar los datos numéricos (valores de inicialización, constantes, tablas de funciones prefijadas) e instrucciones codificadas numéricamente. Los dispositivos E/S deberían comunicar al usuario con el interfaz del computador. Von Neumann se preocupó más de presentar una descripción lógica del programa almacenado que de un diseño real de las computador. Le piezas del preocupaba la estructura general del computador, las partes abstractas que lo componen, sus funciones y como interactúan para procesar Diagrama de la arquitectura de Von Neumann la información. Los materiales específicos o el diseño de la implementación de las partes no fueron objeto de su análisis. Cualquier tecnología que se adecuara a las especificaciones funcionales podría ser usada sin problemas en sus resultados17. Las contribuciones de Von Neumann se expandieron tanto no sólo por su brillantez, sino también por su actitud. Von Neumann no se preocupó por patentes y habló abiertamente de sus ideas a todo aquel que las quisiera escuchar. Tras participar en el desarrollo de EDVAC, Von 17 http://w3.salemstate.edu/~tevans/VonNeuma.htm 17 Neumann trabajaría en su propio computador, el IAS18 computer, finalizado en 1952. EL IASC fue el primero en mezclar programas y datos en una misma memoria, compuesta de tubos de vacío. Así, Von Neumann mostró como la combinación de instrucciones y datos podría ser usada para implementar bucles, modificando instrucciones base cuando una iteración era completada. Era un computador asincrónico que realizaba una operación tras acabar la anterior. EL IASC sería el modelo a copiar por muchos modelos desarrollados en los años posteriores en diferentes países y universidades conocidos como Máquinas IAS19. Von Neumann posando delante del IAS Computer Neumann murió de cáncer de próstata a los 53 años. Se cree que su enfermedad fue provocada por la exposición a la radiactividad cuando participaba en el proyecto Manhattan para la construcción de la bomba atómica en el laboratorio de los Álamos. Von Neumann, que había sido una persona de gran éxito en su vida, no supo afrontar la enfermedad y la muerte: dicen que el dolor y el pánico le hicieron pasar las noches dando gritos de dolor y terror. 18 IAS viene de Institute for Advanced Study. Se trata de una institución privada de Princeton, Nueva Jersey fundada en 1930 y que, además de ser el hogar académico de Von Neumann, también lo fue de Albert Einstein. 19 http://en.wikipedia.org/wiki/IAS_computer 18 2.1.2 Konrad Zuse y la primera computadora binaria El ingeniero alemán Konrad Zuse (1910-1995) nació en Berlín y se graduó como ingeniero civil por el Technische Hochschule Berlin-Charlottenburg (actualmente Universidad Tecnológica de Berlín). Durante sus estudios de ingeniería, Zuse tenía que realizar muchos cálculos rutinarios a mano, lo que encontró extremadamente aburrido. Esta experiencia lo llevó a soñar con una máquina que pudiera hacer cálculos20. Como el mismo relataba en una de sus conferencias,21 comenzó sus trabajos en 1934 sin ni siquiera haber oído hablar de Babagge. Las máquinas de la época eran principalmente calculadoras electromecánicas basadas en el sistema decimal y destinadas al uso comercial, por lo que se vio obligado como otros muchos ingenieros y matemáticos de la época a desarrollar sus Konrad Zuse propios computadores. Zuse lo hizo desde dos puntos de vista: • Lógico y matemático: programa de control, uso del sistema binario, aritmética de punto flotante. • Diseño: Necesitaba un computador que permitiese cálculos matemáticos completamente automáticos, una memoria de alta capacidad y módulos o relés que operaran bajo el principio de “sí” o “no”. Estos conceptos eran completamente novedosos en la época en los que Zuse los concibió. Fue uno de los primeros en darse cuenta de la importancia de un simple bit, y de que cualquier pieza de información podía ser representada con un número de ellos. Esta relación entre la lógica matemática y la tecnología no estaba del todo clara por entonces. El puente de unión entre ambas habría de ser un dispositivo que trabajase bajo el principio de todo o nada, sobre el que se pudiera aplicar lo que ahora se conoce como álgebra de Boole. Los únicos elementos con El Z1 en el apartamento de los padres de Zuse. 1936 estas capacidades eran los relés 20 http://es.wikipedia.org/wiki/Konrad_Zuse 21 "Computer Design - Past, Present, Future", Conferencia a cargo del Profesor Konrad Zuse, en Lund (Suecia), 2 de Octubre de 1987. Transcripción en http://ei.cs.vt.edu/~history/Zuse.html 19 electromecánicos. Sin embargo Zuse se vio obligado a buscar dispositivos equivalentes de menor tamaño y coste, como serían plaquitas de metal y pins, aunque la fiabilidad era claramente inferior. Con este tipo de relés puramente mecánicos fue capaz de organizar una memoria binaria, con la capacidad suficiente y un tamaño bastante reducido. El prototipo diseñado finalmente fue la Z1 (1938), que puede considerarse como la primera computadora binaria de la historia, aunque nunca llegó a funcionar correctamente. Parecía claro que los relés electromecánicos eran la mejor opción para mejorarla22, pero antes de incluirlos crearía el Z2 (1940), haciendo uso de la memoria del Z1 y un lector de tarjetas perforadas. El Z2 contaba con 200 relés y capacidad de operar con 16 bits. El Z2 fue más funcional, y además dotó a Zuse de la experiencia necesaria para que un año más tarde fabricara el Z3, definida por él mismo como “la Reconstrucción del Z1 - Deutsche Technik Museum. primera computadora completamente funcional del mundo”, esta vez sí, usando relés electromecánicos. Con una longitud de palabra de 22 bits (1 para el signo, 7 para la exponencial y 14 para la mantisa), 2400 relés (1800 de ellos para la memoria) el Z3 era capaz de sumar, restar, multiplicar, dividir y hallar la raíz cuadrada entre otras funciones. No satisfecho con todo el trabajo realizado, Zuse decidió mejorar ciertos aspectos del Z3 y aumentar la capacidad de la memoria a 1,024 palabras, con varios lectores y perforadores de tarjetas así como dispositivos que permitieran una programación flexible (traducción de direcciones y selección condicional). Tomaría el nombre de Z4. La construcción y desarrollo del Z4 fue bastante épica: sobrevivió Reconstrucción del Z3. Deutsche Technik Museum, Berlín diversos bombardeos y hubo que transportarlo constantemente. Todos sus predecesores se perderían, aunque dada su importancia, el Z3 sería 22 La lentitud y falta de perfeccionamiento de los sistemas de relés hicieron que Zuse, junto con su colega Helmut Schreyer (que trabajaba en el desarrollo de relés electrónicos), pensarán en el posible uso de tubos de vacío. Los tubos eran más rápidos pero la transformación de un sistema de relés mecánicos a uno de tubos de vacío no era obvia. Aunque se consiguieron realizar avances, el estallido de la Segunda Guerra Mundial hacía muy difícil la obtención de materiales y recursos de manera que la simple iniciativa privada era insuficiente. Zuse y Schreyer propusieron la realización de una computadora para usos militares pero el gobierno Nazi les negó su apoyo. Con la confusión creada por la guerra y el desarrollo de computadores como ENIAC llevados a cabo por otros países e incorporando tubos de vacío el proyecto quedó finalmente paralizado. 20 reconstruido 20 años más tarde para ocupar su lugar en un museo. Los trabajos realizados por Zuse en el diseño de bombas autodirigidas durante la guerra le llevaron a desarrollar sistemas de control que mejoraran su construcción. Ésto añadía un nuevo aspecto a la computación, que ya no se basaría en el mero hecho de realizar cálculos, sino en la forma de realizar ciertas funciones. Este hecho impulsó a Zuse a aprender a jugar al ajedrez. Con el fin de trasladar sus reglas a un computador. Bajo estas ideas nacía Plankalkül en 1945, el primer lenguaje de programación de la historia y sobre el que Zuse diseñó un programa de ajedrez. El Plankalkül tan sólo fue, sin embargo, un predecesor de los lenguajes desarrollados más tarde cómo ALGOL, y por tanto bastante limitado. Zuse consiguió adaptarlo de forma estable para funcionar con el Z4 pero los medios eran escasos, sobretodo teniendo en cuenta que habían trasladado el prototipo a un pequeño pueblo de montaña, lejos de los bombardeos de la guerra, donde estaban casi aislados. Logotipo de Zuse KG Aunque los trabajos de Zuse fueron pronto adelantados por los llevados a cabo en Estados Unidos consiguió fundar ZUSE KG en 1949 y dominar el mercado centroeuropeo por algún tiempo con sus computadoras de relés electromecánicos. Más tarde se realizaron avances añadiendo tubos de vacío a los nuevos modelos y otras funcionalidades, pero la compañía no resistiría el crecimiento de la competitividad en el sector, así como el aumento de los costes del hardware y sería finalmente absorbida por Siemens en 1956. Z3. Vista frontal de la reconstrucción. 21 2.1.3. John V. Atanasoff y Clifford Berry: el ABC23 El Computador Atanasoff-Berry o ABC empezó a ser concebido por el profesor de física John Vincent Atanasoff (1903-1995) en 1933, formulando la idea de usar el sistema de números binarios para su funcionamiento. Al buscar un ayudante para cumplir con su innovativo propósito, un colega le recomendó a un joven brillante, recién graduado en ingeniería mecánica de nombre Clifford Berry. Fue la primera computadora completamente electrónica de la historia y su construcción se llevó a cabo en la universidad de Iowa durante dos años, siendo finalizada en 1939. La máquina pesaba más de 320 kg. Contenía aproximadamente 1.6 km de cable, 280 tubos de vacío y John Vincent Atanasoff ocupaba como una mesa de despacho. Estaba diseñada para solucionar sistemas de ecuaciones lineales con 29 incógnitas. Este tipo de problema era muy típico en la física e ingeniería de aquella época. El sistema era alimentado con dos ecuaciones lineales con 29 incógnitas y una constante, y eliminaba una de las variables. El proceso se repetía de nuevo para eliminar otra variable hasta llegar a una solución. El sistema tenía un error cada 100.000 cálculos, lo que en la práctica impedía asegurar que los resultados fuesen correctos. Añadir un bit de paridad a cada número podría haber solucionado estos problemas fácilmente, pero el desarrollo del ABC quedó interrumpido cuando Atanasoff abandonó la universidad para colaborar con el ejército durante la Segunda Guerra Mundial. Clifford Berry Desde el punto de vista arquitectónico, el ABC contaba con múltiples entradas de control constituidas por una mezcla de transmisores electromecánicos y tubos de vacío electrónicos. Para la representación numérica hacía uso de un bit de signo y cincuenta de mantisa, lo que lo dotaba de una precisión extraordinaria de quince decimales. Los elementos que constituían la memoria principal eran condensadores y fueron elegidos 23 http://es.wikipedia.org/wiki/Atanasoff_Berry_Computer 22 por que ofrecían mejor relación de coste por bit. Se trataba de una memoria regenerativa, que necesitaba de un tiempo de refresco para recordar su estado, similar a las memorias RAM actuales. En total había capacidad para 3264 bits organizados en dos bancos de 32 palabras. Por otra parte, el ABC hacía uso de aritmética paralela, pudiéndose considerar como el primer computador vectorial conocido. Cada elemento era una palabra de cincuenta bits que se procesaba secuencialmente. La operación básica del ABC era entonces una multiplicación paralela. En cada ciclo de reloj de un segundo la computadora podía realizar treinta sumas o restas simultáneas. Éstas se Atanasoff-Berry Computer llevaban a cabo a través de sumadores y restadores electrónicos simples (ASMs-Add-Subtract Mechanisms). La multiplicación se basaba en un algoritmo de suma por desplazamiento que avanzaba por las filas de la matriz del sistema de ecuaciones sumando cada fila a la siguiente. Para completar una operación se requerían dieciséis ciclos de un segundo cada uno. Teniendo en cuenta que los vectores o matrices de entrada estaban compuestos por treinta palabras, la velocidad de cómputo del ABC era de sesenta operaciones, treinta operaciones de suma mas otras treinta de desplazamiento. Al ABC se le añadieron conversores de decimal a binario y viceversa para facilitar la comunicación hombre-máquina. Además, contaba con una memoria secundaria formada por un grabador y un lector de tarjetas binarias electrónico muy avanzado que, gracias al diseño en paralelo, era capaz de leer y escribir simultáneamente a una velocidad de transferencia de mil ochocientos bits por segundo, lo que le hacía muy superior a los lectores mecánicos de la época. Tras terminar la Segunda Guerra Mundial, Atanasoff continuó trabajando para el gobierno y desarrolló sismógrafos y microbarómetros especializados en la detección de explosiones a larga distancia. En 1952 fundó y dirigió la Ordenance Engineering Corporation. En 1956 vendería su compañía a la Aerojet General Corporation y se convertiría en el presidente de su división atlántica. El ABC se convirtió en un simple recuerdo y no sería hasta 1954 cuando se escucharon rumores de que algunas de sus ideas habían sido “tomadas prestadas”. Resulta que John Mauchly, padre del computador ENIAC (1946) junto con J. Prespert Eckert y que revisaremos más adelante, tuvo la oportunidad de conocer y revisar la tecnología utilizada por Atanasoff en el ABC. En varias ocasiones discutieron sus aspectos sin que Mauchly 23 mencionara su proyecto. Cuando en 1942 Atanasoff abandonaba la universidad de Iowa para colaborar con la marina estadounidense, dejó encargada la realización de la solicitud de patente, pero el documento nunca fue rellenado. Tal olvido generó una dura batalla legal de seis años finalmente resuelta en 1973 y que otorgaba la patente de la ENIAC a Atanasoff considerando que "Eckert y Mauchly no inventaron ellos solos el primer computador electrónico y digital automático, si no que partieron desde uno del Dr. John Vincent Atanasoff"24. Ampliaremos la información sobre ENIAC más adelante, cuando hablemos de los trabajos de Mauchly y Eckert. El ABC se desmontó y se perdió en los sótanos de la universidad de Iowa. En 1997 se construyó una réplica con un coste de 350.000 dólares que corroboró el buen funcionamiento del modelo original y que actualmente se expone en la universidad que le vio nacer. Réplica del ABC 24 “Atanasoff, Forgotten Father of the Computer”, by Clark R. Mollenhoff. 24 2.1.4. Alan Turing: el proyecto Colossus El matemático, lógico y criptógrafo Alan Mathison Turing es considerado como uno de los padres de la computación moderna. En 1936, contestó al entscheidungsproblem, la cuestión planteada por el matemático David Hilbert sobre si las matemáticas son decidibles, es decir, si hay un método definido que pueda aplicarse a cualquier sentencia matemática y que nos diga si esa sentencia es cierta o no. En el artículo On Computable Numbers, Turing construyó un modelo formal de computador, la Máquina de Turing, y demostró que había problemas tales que una máquina no podía resolver. La máquina de Turing fue el primer modelo teórico de lo que luego sería un computador programable. Con el tiempo a este tipo de máquina se la conoció como máquina de estado finito, debido a que en cada etapa de un cálculo, la siguiente acción de la máquina se contrastaba con una lista finita de instrucciones de estado posibles25. Alan Mathison Turing Touring fue uno de los principales impulsores del proyecto Colossus, un computador creado para descifrar los mensajes encriptados por la máquina alemana Enigma26 durante la Segunda Guerra Mundial. Ya desde 1932, criptógrafos polacos venían descifrando las comunicaciones militares alemanas creadas por el Enigma de manera regular. A partir de 1938 utilizaron dispositivos electromecánicos para esta tarea: los llamados bomba, predecesores de los bombe ingleses creados poco después. Sin embargo, en 1939 Bombe. Dispositivo electromecánico para descifrar los mensajes alemanes. el nivel de cifrado alemán fue incrementado haciendo que los bomba perdieran toda su efectividad. Fue entonces cuando la inteligencia polaca cedió todos sus avances al gobierno británico, que empezaría a trabajar de inmediato en medios de decodificación más avanzados27. El Colossus fue diseñado por Thomas H. Flowers, S.W. Broadbent y W. Chandler en el más completo secreto y se pondría en funcionamiento a finales de 1943. Estaba basado en las ideas de la 25 http://www-etsi2.ugr.es/alumnos/mlii/Maquina%20de%20Turing.htm 26 Sobre el funcionamiento de Enigma: http://www.el-mundo.es/noticias/2000/graficos/abril/semana1/encripta.html 27 http://www.alanturing.net/turing_archive/pages/Reference%20Articles/codebreaker.html 25 máquina de Touring. Su emplazamiento fue Bletchley Park, la central de criptoanálisis de la inteligencia británica. Entre las características de esta máquina destacan28: • Sus 2400 tubos de vacío. • Leía los datos de entrada de una cinta de papel perforada usando un lector fotoeléctrico. • Usaba circuitos de dos estados y sus operaciones eran controladas mediante los pulsos de su reloj interno, lo que permitía operar a diferentes velocidades, útil para realizar diferentes pruebas. Su velocidad normal de operación era de 5000 Hercios. • Sus circuitos permitían efectuar conteos, aplicar operaciones Booleanas y efectuar operaciones aritméticas en binario. • Sus funciones manejarse lógicas de podían manera preestablecida usando un tablero de interruptores, o podían seleccionarse de manera condicional usando relés, mediante un menú con las configuraciones posibles. El Colossus en Bletchley Park • Era totalmente automática. • Tenía una memoria de cinco caracteres de cinco bits cada uno, los cuales se almacenaban en un registro especial. • Medía 2.25 metros de alto, 3 metros de largo y 1.20 metros de ancho. • Sus resultados se almacenaban temporalmente en relés para luego darles salida a través de una máquina de escribir eléctrica que funcionaba a una velocidad de 15 caracteres por segundo. • No contaba con programas almacenados internamente ya que, como hemos dicho, era una máquina diseñada explícitamente para tareas criptográficas. Para el final de la Guerra se sabe que existían diez Colossus diferentes en funcionamiento. Ocho de ellas serían destruidas nada más terminar la Bletchley Park contienda por orden directa de Wiston Churchill en “partes no mayores que una mano”. Las dos últimas 28 http://www-etsi2.ugr.es/alumnos/mlii/Colossus.htm 26 se perderían en la década de los 50 tras ser usadas como dispositivos de entrenamiento. Actualmente una réplica del Colossus se expone en Bletchley Park. Por otra parte, toda la información en papel sobre el proyecto fue clasificada y se obligó a aquellos que tenían conocimientos sobre su funcionamiento a guardar silencio. En Julio de 2000 fueron desclasificados parte de los documentos aunque aún se mantiene en secreto la información más comprometedora29. En cuanto a Alan Touring, siguió colaborando con Bletchley Park hasta principios de los 50. En 1952 fue acusado de prácticas homosexuales y se suicidó en 1954 aparentemente tomando una manzana envenenada con cianuro, aunque también se ha barajado la opción de un posible asesinato. Réplica del Colossus 29 http://es.wikipedia.org/wiki/Colossus 27 2.1.5. Howard Aiken, Grace Hopper: las series de Harvard Mark Howard Aiken (1900-1973) obtuvo su doctorado en físicas por la Universidad de Harvard en 1939. Durante sus años de estudios e investigación se encontró con algunas ecuaciones diferenciales que sólo podían ser resueltas numéricamente, de dónde se figuró lo útil que resultaría tener una computadora que realizara este trabajo por él. De esta necesidad de realizar grandes cálculos numéricos nacería la Harvard Mark I, también conocida como la IBM ASCC (Calculadora de Secuencia Automática Controlada, por sus siglas en inglés), ya que fue financiada por IBM30; se terminó en 1944. La principal ventaja de la Mark I era su alto grado de Howard Aiken automatización, ya que no requería intervención humana una vez comenzaba a funcionar. Considerada la primera calculadora universal ha sido descrita como “el verdadero amanecer de la era de los computadores”31. Mark I medía 15'5 por 2'5 metros y pesaba más de cuatro toneladas. Estaba compuesta principalmente por interruptores, relés electromecánicos, cigüeñales y embragues. Era capaz de almacenar 32 números de 23 dígitos decimales y realizar con ellos operaciones como tres sumas o restas por segundo, una multiplicación en 6 segundos, una división en 15 segundos o la aplicación de funciones logarítmicas o trigonométricas en algo más de un minuto. La computadora leía las instrucciones de tarjetas perforadas de manera secuencial y tenía la posibilidad de crear bucles, aunque carecía de selección condicional, por lo que los programas complejos debían ser bastante largos. Lo que hacía más particular a esta computadora era la separación física entre la información que se almacenaba y las instrucciones a realizar, de manera que las operaciones de lectura/escritura se Harvard Mark I 30 Parece ser que en la presentación del Harvard Mark I Aiken olvidó comentar la implicación de IBM en todo el proyecto, cosa que no sentó muy bien a la compañía. IBM bautizó al computador como ASCC y se lanzaría a la construcción del SSEC sin contar con Aiken. La SSEC (Calculadora Electrónica de Secuencia Selectiva) construida para IBM por Wallace J. Eckert en 1948 fue la última gran calculadora electromecánica. Con 13,500 tubos de vacío, y 21,400 relés electromecánicos era unas 100 veces más rápida que el Mark I y bastante precisa en sus cálculos. Fue utilizada por la Commission de la Energía Atómica y para calcular las posiciones de planetas. Sería desmontada en 1952 cuando ya era obsoleta. (http://en.wikipedia.org/wiki/SSEC) 31 http://en.wikipedia.org/wiki/Harvard_Mark_I 28 hacían por diferentes canales, lo que permitía simultaneidad de ambas, en contraposición con el modelo de Von Neumann, en el que la información y las instrucciones dependen de un mismo elemento, la CPU. Este tipo de arquitectura recibió el nombre de “Harvard Architecture” y su principal aporte era un aumento significativo de la velocidad a costa de un mayor número de dispositivos y cableado32. La encargada de programar esta gigantesca calculadora fue Grace Hopper (1906-1992), conocida como Amazing Grace, oficial de la marina de los Estados Unidos y que se convirtió en la primera y mayor impulsora de la programación en los computadores durante los años 40. Hopper sería una de las primeras en creer que los computadores podían ir mucho más allá del uso científico y militar que se les daba. Inventó el lenguaje Flowmatic y produjo el primer compilador (Math Matic). Más tarde en 1960 presentaría la primera versión del lenguaje COBOL33. Grace Hopper Tras la Mark I, Howard Aiken, se encargaría también de la construcción del Mark II (1947) financiada esta vez por la marina estadounidense y cuya mayor diferencia sería un aumento de la velocidad ya que se sustituyeron algunos dispositivos mecánicos por electrónicos. Más tarde, y también para los militares, Aiken construiría el Mark III en 1949 (5000 tubos Harvard Mark II de vacío, 1500 diodos de cristal y memoria magnética), un híbrido entre computadora electromecánica y electrónica descrita por el propio Aiken como la calculadora electrónica más lenta de la historia, aunque ya era bastante más veloz que sus predecesoras; y, por último, finalizaría el Harvard Mark IV en 1952, completamente electrónica. Todas las Harvard Mark se basaron en la Arquitectura Harvard. Harvard Mark III 32 http://en.wikipedia.org/wiki/Harvard_architecture 33 http://www.perantivirus.com/historia/primerag.htm 29 2.1.6. John Mauchly y J. Presper Eckert: ENIAC, EDVAC, BINAC y UNIVAC John Mauchly (1907-1980) completó su doctorado en físicas en el Ursinus College (Filadelfia) en 1932 y ejercería allí de profesor hasta 1941. Con la llegada de la guerra realizó un curso de electrónica militar donde conocería J. Presper Eckert (1919-1995), un ingeniero electrónico recién graduado por el University Moore School de la Universidad de Pennsylvania, donde Mauchly aceptaría un puesto de profesor34. Por esos años, debido a la guerra que se fraguaba, se estaban llevando a cabo numerosas pruebas balísticas de las nuevas armas diseñadas para ser usadas en la contienda. No contentos con la lentitud con que los cálculos de las tablas de tiro se realizaban, Mauchly y Eckert propusieron la construcción de una calculadora electrónica de gran John Mauchly velocidad y la marina estadounidense no tardó en interesarse por el proyecto. Mauchly se encargaría del diseño formal del aparato, mientras que Eckert llevaría todo lo relacionado con el hardware35. El resultado se presentó en 1946 y fue ENIAC (Computador e Integrador Numérico Electrónico), una mole de 30x2.4x0.9 metros y 27 toneladas que requería una potencia de 150 kwatios. Estaba compuesta por 17468 tubos de vacío, 7200 diodos de cristal, 1500 relés, 70000 resistencias, 10000 capacitores y 5 millones de soldaduras manuales. Usaba como entrada y como salida tarjetas perforadas y trabajaba en base 10, no porque no se conociese el sistema binario, sino porque habría requerido un número aún mayor de tubos. De hecho, el gran número usado provocó que algunos electrónicos afirmaran que la máquina no sería viable al no poder tener en funcionamiento un tiempo lo suficientemente largo antes Presper Eckert de que fallara algún tubo, y parece ser que así fue al principio. En 1948 se pudo disponer de tubos de alta fidelidad que redujeron las constantes paradas y arranques de la computadora, momentos en los que los tubos sufrían más debido a los calentamientos y enfriamientos. A partir de entonces, la mejor solución fue mantener la ENIAC encendida constantemente, de manera que el tiempo medio de fallo se redujo a casi dos días, un promedio muy aceptable para la época. 34 http://www.seas.upenn.edu/~museum/guys.html 35 http://ftp.arl.mil/~mike/comphist/91mmoore/ 30 ENIAC tenía capacidad para 5000 sumas o restas o 40 divisiones o raíces cuadradas por segundo. La entrada y salida se realizaba por medio de tarjetas perforadas. Además fue el primer gran computador electrónico reprogramable para resolver un gran rango de problemas. Reprogramar el ENIAC era equivalente a intercambiar montones de cableado hasta 1948, cuando se implementó en él el concepto de guardar el programa y la información en la misma memoria además de otras modificaciones propuestas por John Von Neumann. El ENIAC ha sido considerado como el primer ordenador Turing completo (Turing-complete), es decir, completamente programable, aunque el Z3 de Zuse ENIAC también puja por este puesto36. Como curiosidad, en 2004 se presentó en la Universidad de Pennsylvania, como conmemoración del 50 cumpleaños del ENIAC, el proyecto “ENIAC-en-un-chip”, en el que se recreó la arquitectura y la capacidad del computador en un chip de 0.5 milímetros cuadrados (frente a los 167 metros cuadrados que ocupaba )37. Mauchly y Eckert no se dedicaron únicamente al proyecto del ENIAC. Conscientes de las limitaciones iniciales que ofrecía su diseño (paralizado en 1943) y programación desarrollaron también para la marina y de manera casi paralela EDVAC (computadora electrónica automática de variable discreta), incorporando propuestas de Von Neumann entre otros, con lo que su arquitectura se convertiría en el estándar EDVAC de la desarrollada a partir de aquel momento. La computadora se daba por terminada oficialmente en 1949 aunque ya era funcional antes incluso que el ENIAC. Problemas con la Universidad de Pennsylvania por las patentes retrasaron su finalización. EDVAC funcionaba con el sistema binario y poseía un lector-grabador de cintas magnéticas. Aunque poseía un número inferior de componentes que el ENIAC (46 metros cuadrados que contenían casi 6000 tubos de vacío, 12000 36 http://en.wikipedia.org/wiki/ENIAC 37 http://www.ee.upenn.edu/%7Ejan/eniacproj.html 31 diodos y con un consumo de 54 kw) la plantilla necesaria para su funcionamiento era de 30 personas en turnos de 8 horas. EDVAC se mantendría en funcionamiento hasta 1961 tras recibir una serie de mejoras durante los años 50 (lector de tarjetas, unidad aritmética en punto flotante, memoria... )38. Por la época en la que se finalizaba el EDVAC, sus padres fundaban la EckertMauchly Computer Corporation. Con la firma de su compañía, diseñaron BINAC en 1949, un computador con dos CPU que comparaban todos los resultados obtenidos con el fin de detectar posibles fallos del hardware. BINAC nunca funcionó del todo bien y la compañía se vino abajo para ser adquirida en 1950 por Remington Rand, un fabricante de computadores (y también de armas durante la Guerra)39. La última gran creación de Mauchly y Eckert, y que se convertiría en el producto más característico de Remington Rand, sería UNIVAC I (Computador Automático UNIVersal) en 1951. El sistema ocupaba 35 metros cuadrados, pesaba 13 toneladas y hacía uso de 5000 tubos de vacío y 125 kw. BINAC La memoria principal consistía en 1000 palabras de 12 caracteres cada una. Aunque la información era representada en binario, UNIVAC era considerada por los programadores como una máquina decimal ya que utilizaba un set de caracteres alfanuméricos para casi todas las operaciones, lo que causaba errores cuando ciertos símbolos eran interpretados incorrectamente por la máquina. UNIVAC fue la primera computadora americana diseñada para su uso comercial y administrativo. Estaba concebida para la rápida realización de operaciones aritméticas relativamente simples y la gestión de diversa información más que para los sofisticados cálculos que los científicos podían requerir, y de ahí su importancia. Se adaptó su entrada/salida para aceptar tanto tarjetas perforadas como cintas magnéticas y poder convertir soportes de un formato a otro40. 38 http://en.wikipedia.org/wiki/EDVAC 39 En 1949, pero un poco antes que EDVAC y BINAC, se había terminado también, esta vez en el Reino Unido, EDSAC (Calculadora Electrónica con Almacenamiento de Retraso Electrónico, por sus siglas en inglés) de la mano de un equipo liderado por Maurice Wilkes para la universidad de Cambridge. EDSAC se inspiraba en los primeros informes de Von Neumann destinados al diseño de EDVAC y es considerada como la primera computadora que implementaba el concepto de programa almacenado en memoria de manera práctica. Fuera de esto, EDSAC no incorporaba ningún componente experimental o novedoso que requiera un estudio detallado de su estructura o funciones, que eran de cálculo general. Más información en: http://www.uap.edu.pe/Fac/02/trabajos/02206/inftec/ISI_33/Go1/principal.htm, http://en.wikipedia.org/wiki/EDSAC 40 http://en.wikipedia.org/wiki/UNIVAC_I 32 No tardaron en aparecer clientes para Remington Rand como la Oficina de Censo americana, las Fuerzas Aéreas o la Comisión de la Energía Atómica. Se donaron sistemas UNIVAC a la Universidad de Harvard, de Pennsylvania y al Case Institute Of Technology de Cleveland... en total se vendieron o donaron 46 equipos. La fama del UNIVAC provino principalmente porque UNIVAC I fue utilizado en las elecciones de 1952 en Estados Unidos y fue capaz de predecir quién sería el ganador (Eissenhower) tan sólo 45 minutos después del cierre de los colegios electorales. Esto además, supuso un golpe para IBM, que había perdido la adjudicación de las tareas de cómputo de las elecciones por la superioridad del UNIVAC sobre las máquinas de tarjetas perforadas de IBM41. El último UNIVAC I permanecería en funcionamiento hasta 1970, tras 13 años de servicio, pero le seguirían una larga serie de equipos de la mano de Remington Rand. Fue decisivo el segundo modelo, UNIVAC II de 1958, que incorporaba por primera vez la capacidad de utilizar un compilador que traducía los programas a lenguaje máquina. El lenguaje traducido Maqueta del equipo completo del UNIVAC I era COBOL. UNIVAC II seguía estando basada en tubos de vacío, aunque la memoria era magnética y algunos de sus circuitos estaban transistorizados. El último modelo basado y compatible con el original sería el UNIVAC III, de 1962, que incorporaba avances propios de la nueva generación42. 41 http://www-etsi2.ugr.es/alumnos/mlii/univac.htm 42 http://en.wikipedia.org/wiki/Univac 33 2.2. LA SEGUNDA GENERACIÓN DE COMPUTADORES (1954-1962) Durante la década de los 40, los dispositivos bi-estables más rápidos y fiables para la construcción de los computadores más avanzados eran los tubos de vacío. Como se ha visto, su uso fue aumentando llegando a extremos como los 17.500 tubos del ENIAC. Sin embargo, los tubos de vacío dejaban mucho que desear: operaban a altas temperaturas consumiendo mucha energía (ENIAC utilizaba el equivalente a diez casas) y de manera demasiado lenta para lo que sería deseable. Tubo de vacío marca Remington Rand perteneciente al UNIVAC I Además, su vida útil era relativamente corta por lo que los aparatos que los utilizaban requerían un mantenimiento constante que no salía barato. En 1947 entraría en juego la compañía estadounidense Bells Laboratories. Desde 1925, investigadores de la compañía habían trabajado en diferentes campos desarrollando la amplificación y transmisión de señales o la célula fotovoltaica43. Sin embargo, el verdadero salto a la fama vendría en 1947 de la mano de tres de sus investigadores, John Bardeen, William Bradford Shockley y Walter Houser Brattain, fruto de una larga investigación con los materiales semiconductores. Había nacido el transistor. El transistor tiene múltiples aplicaciones que se resumen básicamente en dos funcionalidades: modulación, que se utiliza para amplificar señales, y actuación como interruptores. Bardeen, Brattain y Shockley, inventores del transistor. Están fabricados de materiales semiconductores (los primeros de germanio) cuya principal característica es la capacidad de controlar la magnitud de resistencia que tales materiales ofrecen al paso de corriente eléctrica según lo que se necesite44. 43 Bells Labs también jugaba su papel en el desarrollo de computadores con seis modelos diseñados durante los 40: Modelo I (1940) – “Calculadora de números complejos”. Modelo II (1943) – “Interpolador de relés”, destinado a baterías antiaéreas. Modelo III y IV(1944 y 1945) - “Computador balístico” y “Calculador de relés”, ambos usados para cálculos de trayectorias balísticas. • Modelo V y VI (1946 y 1947) - “Calculador de relés de propósito general”, dos modelos programables para diversos usos. http://en.wikipedia.org/wiki/Bell_Labs 44 http://www.lucent.com/minds/transistor/ • • • 34 Bajo estos principios, los transistores podían realizar perfectamente el mismo trabajo que habían venido realizando los tubos de vacíos, pero con múltiples ventajas45: • • • • • • • Menor tamaño Fabricación altamente automatizada Coste inferior en grandes cantidades Posibilidad de trabajo con voltajes pequeños sin necesidad de “precalentamiento” (los tubos de vacío necesitaban de 10 a 60 segundos). Menor disipación de calor. Mayor rendimiento y duración Posibilidad de controlar grandes voltajes. Gracias a la fiabilidad, rapidez y ahorro aportados por el transistor la venta de computadores se convirtió en un verdadero negocio cuyo mercado no tardarían en copar 8 grandes compañías, con IBM a la cabeza. La gran ventaja que llevaba sobre todas las demás hizo que en el mundo Transistor empresarial fueran conocidas como “IBM y los Siete Enanitos” que no eran sino Remington-Rand y su división UNIVAC, Borroughs, Scientific Data Systems, Control Data Corporation, General Electric, RCA y Honeywell46. El primer transistor de la historia. Bells Labs. 45 http://en.wikipedia.org/wiki/Transistor 46 http://en.wikipedia.org/wiki/History_of_computing_hardware#1950s_and_early_1960s:_second_generation 35 2.2.1. Avances técnicos de la generación Los núcleos de ferrita y tambores magnéticos reemplazaron a los tubos de rayos catódicos y sistemas de línea de retardo de mercurio que componían la memorial principal. La mayor ventaja era que la información podía ser leída de forma inmediata, mientras que en las memorias de línea de retardo, la información se almacenaba como una onda acústica que pasaba secuencialmente por un medio y sólo se podía acceder a ella en ciertos momentos. La aritmética de punto flotante y los índices de registro que, entre otras cosas, servían para controlar bucles, se volvieron muy comunes. Anteriormente a estas innovaciones el acceso a los diferentes elementos de un array implicaba muchas veces escribir código auto-modificable. Este tipo de código que se cambiaba a sí mismo conforme se ejecutaba era concebido como Memoria magnética del PDP-1 una potente aplicación bajo el principio de que los programas y la información eran básicamente lo mismo. Además eran una forma de aprovechar al máximo las capacidades de memoria. Actualmente está práctica está completamente abandonada dada su gran dificultad de trazado para encontrar fallos y la falta de soporte en la mayoría de los lenguajes de alto nivel47. Por otro lado, se introdujeron procesadores de Entrada/Salida independientes al procesador central (CPU) liberándolo de este tipo de tareas. La CPU se encargaría de enviar a los procesadores de E/S la tarea a realizar, que sería llevada a cabo de forma independiente. Una vez finalizada o, en caso de error, se informaba a la CPU. El procesamiento por lotes se volvió un método viable con las mejoras en la E/S y la memoria. Los lotes podían ser preparados por adelantado, almacenados en una cinta magnética y procesados en el ordenador de manera continua guardando los resultados en otra cinta48. 47 http://www.ipp.mpg.de/de/for/bereiche/stellarator/Comp_sci/CompScience/csep/csep1.phy.ornl.gov/ov/node11.html 48 http://burks.bton.ac.uk/burks/foldoc/86/103.htm 36 2.2.2 Los primeros lenguajes de alto nivel El concepto de programa almacenado significaba que las instrucciones que el computador debía realizar se encontraban almacenadas en la memoria y podían ser reemplazadas por otras instrucciones. La necesidad de simplificar al máximo la tarea de reprogramar una computadora fue el origen de los lenguajes de alto nivel sofisticados que comenzaron a aparecer en esta época. Estos lenguajes reemplazaban el código máquina binario por otro compuesto por palabras, frases, ecuaciones matemáticas y lógicas que hacían mucho más fácil el trabajo del programador49. ➢ 2.2.2.1. FORTRAN FORmula TRANslation fue desarrollado por programadores de IBM y publicado por primera vez en 1957. Fue especialmente diseñado para permitir un traslado fácil de fórmulas matemáticas a código. FORTRAN fue el primer lenguaje de alto nivel y usaba el primer compilador de la historia. Anteriormente los programadores debían trabajar en código ensamblador o directamente en código máquina lo cuál era extremadamente costoso. Como FORTRAN era mucho más fácil de usar, los programadores eran capaces de escribir programas a una velocidad cinco veces superior cuando la eficiencia de la ejecución se reducía tan sólo un 20%, lo que permitía una mayor concentración en el modo de resolver problemas que en el de codificarlos. FORTRAN no era innovativo tan sólo como lenguaje, sino también por su compilador, que aportó mucha luz a la ahora conocida como Teoría de Compilación. Poco después de su presentación habían aparecido ya múltiples dialectos que lo adaptaban a las necesidades de cada programador, aunque reducían la portabilidad. En 1966 la Asociación Nacional Americana de Estándares publicaría FORTRAN '66 o IV, la primera versión estandarizada. En 1977 era de nuevo revisado para dar lugar a FORTRAN '77. Por último, la última versión aparecida data de 1990 (FORTRAN '90) dónde se añadió soporte al lenguaje para recursión, punteros y datos definidos por el usuario. El objetivo al diseñar FORTRAN era crear un lenguaje de programación que fuera fácil de aprender, destinado a toda una serie de aplicaciones, independiente de la máquina y que permitiera expresiones matemáticas. FORTRAN proporcionaba además facilidades para controlar el lugar de almacenamiento de la información (práctica importante hace tiempo por los pequeños tamaños de 49 http://cs.mipt.ru/docs/comp/eng/hardware/common/history/ 37 memoria)50. La primera versión de FORTRAN fue diseñada teniendo en cuenta que los programas serían escritos en tarjetas perforadas de 80 columnas. Así por ejemplo, las líneas debían ser numeradas y la única alteración posible en el orden de ejecución era producida con la instrucción GOTO. Estas características han evolucionado de versión en versión51. FORTRAN 90' cuenta con tipos definidos por el usuario, estructuras de control extendidas, entrada salida mejorada, tipos derivados, funciones intrínsecas, estructuras if-then-else, bucles, punteros, arrays (con operaciones que permiten su manejo como única unidad) y posibilidades de programación estructurada a través de subprogramas como funciones y subrutinas52. 50 http://www.engin.umd.umich.edu/CIS/course.des/cis4400/fortran/fortran.html 51 http://es.wikipedia.org/wiki/Fortran 52 http://www.aspire.cs.uah.edu/textbook/introcomp66002.html 38 ➢ 2.2.2.2. COBOL Common Business Oriented Language (COBOL) fue desarrollado en 1959 por un grupo de profesionales en el ámbito de las computadoras agrupados en torno a la Conferencia de Lenguajes de Sistemas de Datos (CODASYL). Desde 1959 ha sido modificado y mejorado. En un intento de abordar el problema de incompatibilidad entre diferentes versiones de COBOL, el Instituto Nacional Americano de Estándares (ANSI) desarrolló una forma estándar del lenguaje en 1968. COBOL estándar sería mejorado de nuevo en 1974 y 1985. También existen versiones de COBOL orientadas a objetos53. COBOL permitió la automatización de los negocios. Los nombres declarados pueden tener hasta treinta caraceteres lo que los hace perfectamente connotativos. Cada variable se define en detalle así como los archivos registro, que incluyen información muy útil, como son las líneas que deben imprimirse, ideal para informes de contabilidad por ejemplo. Además, en sus versiones modernas ofrece entornos de programación de objetos y programación visual, librerías de clases, capacidades de aplicación rápidas e integración con el World Wide Web. En contraste con otros lenguajes de programación, COBOL no se concibió para cálculos complejos matemáticos o científicos, de hecho solo dispone de comandos para realizar los cálculos mas elementales, suma, resta, multiplicación y división, sino que su empleo es apropiado para el proceso de datos en aplicaciones comerciales, utilización de grandes cantidades de datos y obtención de resultados ya sea por pantalla o impresos. Aunque es ya un lenguaje antiguo, aún son muchas las empresas que siguen dependiendo del Cobol-85 tradicional para sus proyectos, debido principalmente a la estructura de su sistema informático54. 53 http://www.engin.umd.umich.edu/CIS/course.des/cis400/cobol/cobol.html 54 http://www.escobol.com/ 39 ➢ 2.2.2.3. ALGOL ALGOrithmic Language fue uno de los lenguajes de alto nivel específicamente diseñados para realizar cálculos científicos. Se publicó en 1959, diseñado por un comité internacional para ser un lenguaje universal. Su primera reunión en Zurich fue uno de los primeros intentos formales de ocuparse de la portabilidad del software. La no dependencia a una máquina, permitía que los programadores de ALGOL fuesen más creativos, pero aumentaba la dificultad de las implementaciones. ALGOL nunca alcanzó la popularidad comercial de FORTRAN o COBOL, pero es considerado como el lenguaje más importante de la segunda generación por su influencia en el desarrollo de lenguajes posteriores. La estructura léxica y sintáctica de ALGOL se hizo tan popular que casi todos los lenguajes diseñados desde entonces han sido referidos como “ALGOL – like”, es decir, que su estructura ha sido jerarquizada a partir del modelo y estructuras de control con las que ALGOL contaba. En cuanto estructuras de control de datos, en ALGOL 60 se introduce la estructura de bloques: posibilidad de crear bloques de declaraciones para las variables y el alcance de la influencia de las declaraciones de control. Conjuntamente, dos formas diferentes de pasarle los parámetros a los subprogramas: por valor y por referencia; Poseía declaraciones de control estructuradas como If-then-else y el uso de una condición general para el control de iteraciones eran otras características, así como el concepto de recursión: la habilidad de un procedimiento de llamarse a sí mismo. Uno de los mayores impactos de ALGOL 60 fue la introducción de la notación BNF para definir la sintaxis del lenguaje. ALGOL está considerado como uno de los lenguajes de programación más ortogonales dado el número relativamente pequeño de construcciones básicas que posee y el conjunto de reglas para combinarlas. Cada construcción tiene un tipo asociado y no hay restricciones en esos tipos. Además, la mayoría de las construcciones producen valores. Algunas otras características de ALGOL eran los arrays dinámicos (cuyo tamaño se especifica mediante variables de manera que queda fijado cuando se guarda la información), las palabras reservadas (símbolos que no pueden ser usados como identificadores) y tipos definidos por el usuario, que permiten diseñar abstracciones de datos adaptadas a cada problema55. 55 http://www.engin.umd.umich.edu/CIS/course.des/cis400/algol/algol.html 40 2.2.3. Los computadores más representativos de la Segunda Generación ➢ 2.2.3.1. TRADIC56 (1954) Y TX-057 (1956): Los primeros computadores transistorizados TRADIC (Computador Digital Transistorizado) fue el primer computador compuesto en su totalidad por estos dispositivos. Se construyó para las Fuerzas Aéreas de los Estados Unidos por J.H. Felker, en Bell Labs, empresa creadora del transistor, y comenzó a funcionar en 1954. TRADIC tenía 800 transistores y 10,000 diodos. Era tan relativamente pequeño y ligero que pudo ser instalado en el interior de un bombardero B-52 Stratofortress. Como tal, se trataba de un ordenador de propósito especial, pero que daba un gran paso respecto de sus predecesores. TRADIC Por su parte el TX-0 (Computador Experimental Transistorizado), apodado “Tixo”, fue otro de los primeros ejemplos que podemos encontrar en la segunda generación. Fue diseñado en el MIT Lincoln Laboratory (Massachusetts) con el objetivo de experimentar con el diseño de transistores y sistemas con memorias muy grandes. Es así que poseía una memoria de núcleo de ferrita de 64K palabras de 18 bits, lo que en aquel entonces era una cantidad muy grande. Tal cantidad de memoria hacía que se necesitaran 16 bits para direccionarla, de manera que sólo quedaban 2 bits en cada dirección para el campo de las instrucciones, por lo que sólo tenía 4 instrucciones principales: guardar, suma, salto y operación. Sin embargo, esta última permitía el acceso a una serie de micro-instrucciones que podían ser usadas para desarrollar muchas funciones útiles. El TX-0 era capaz de realizar 100.000 sumas por segundo. Una vez completado el TX-0 se siguió trabajando en un modelo mucho más complejo, el TX-1, y este último acabaría siendo rediseñado como TX-2. El TX-2 aprovechó varias partes de la memoria del TX-0 reduciéndola de 64k a 4k. El uso de dos bits menos para el direccionamiento permitió aumentar el número de instrucciones a 16 lo que mejoró increíblemente la TX-0 programabilidad de la máquina. El TX-0 se usó para muchos fines, incluidos el reconocimiento de voz y escritura, así como el desarrollo de herramientas como editores de texto y depuradores. 56 http://en.wikipedia.org/wiki/TRADIC 57 http://en.wikipedia.org/wiki/TX-0 41 ➢ 2.2.3.2 IBM 709058: Representante característico de su generación El IBM 7090 fue presentado en 1958 como el sistema de procesamiento más potente creado por la compañía hasta el momento. Contaba con 50,000 transistores y memoria de núcleo magnético por lo que era capaz de computar hasta 7 veces más rápido que los predecesores de su línea como el IBM 709 y 704 basados en los tubos de vacío. A través de sus ocho canales de datos el IBM 7090 podía leer y escribir simultáneamente 3 millones de bits y realizar 229.000 sumas o restas, 39.500 multiplicaciones o 32.700 divisiones por segundo. IBM 7090. Unidades de Entrada/Salida La memoria tenía una capacidad de casi 33.000 palabras de 36 bits y podía ser leída y escrita en 2,4 milisegundos. La unidad central de proceso, por su parte, operaba en binario y contaba con más de 200 operaciones diferentes: operaciones aritméticas de punto fijo y flotante, operaciones lógicas sobre la información de los registros y la memoria, operaciones de control y test, entrada/salida, indexado... También incorporaba instrucciones para el cambio de base, búsqueda de tablas, compilación e interpretación, direccionado indirecto para facilitar la programación de subrutinas y control automático de overflow y underflow. Los adelantos tecnológicos permitieron que, aunque aún era un equipo que ocupaba una habitación entera, se tratase de un habitáculo mucho más reducido que en diseños anteriores. En 58 http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP7090.html 42 comparación con el IBM 709 ocupaba la mitad y consumía un 70% menos. El nuevo modelo ofrecía además compatibilidad con los anteriores de su gama permitiendo la importación de programas de otros sistemas, así como con el resto de productos de IBM: cintas magnéticas, tarjetas perforadas... Quizás uno de los adelantos más novedosos fuera la incorporación del sistema operativo magnéticas, IBSYS. IBSYS Basado en cintas proporcionaba una consola con un repertorio muy limitado de comandos como leer instrucciones de tarjetas perforadas de control o cintas magnéticas59. El IBM 7090 ofrecía a su vez soporte para FORTRAN II incluyendo el compilador y el ensamblador. La consola de FORTRAN IBM 7090. Consola. podía funcionar de manera independiente o a través de IBSYS. Aunque FORTRAN era el más famoso, otros lenguajes también podían ser soportados por el sistema, como es el caso de COBOL60. El IBM 7090 estaba diseñado con fines de uso general, pero también se dedicó especial atención a las necesidades propias de las ingenierías y la investigación científica/militar. Además, se puso gran atención sus aplicaciones al mundo de los negocios y ámbitos más concretos como el tele-procesamiento que se encontraba en gran auge en esos momentos. El coste de un equipo era de IBM 7090 en un centro de análisis y computación casi 3 millones de dólares, y el alquiler de más de sesenta mil al mes61. 59 http://en.wikipedia.org/wiki/IBSYS 60 http://www.frobenius.com/ibsys.htm 61 Se puede obtener información extensa y detallada del 7090, además de un video en el que aparece en funcionamiento en http://www.frobenius.com/7090.htm 43 ➢ 2.2.3.3. LARC62 (1960): El primer supercomputador de la generación El Computador de Investigaciones Atómicas de Livermore (Livermore Atomic Research Computer ) o LARC fue el primer de los dos computadores a los que se Dibujo de una habitación equipada con el LARC podría otorgar el título de “supercomputador” de la Segunda Generación. Se construyeron dos unidades de la mano de la división UNIVAC de Sperry Rand Corp. (antigua Remington Rand) que fueron entregadas en 1960 al Lawrence Radiation Labs en Livermore, California, y al Centro de Investigación y Desarrollo de Navíos en Washington. LARC era un computador completamente transistorizado con algunas particularidades. El tipo de transistor utilizado estaba ya obsoleto cuando se presentó. Aún así fue el más rápido (250000 adiciones por segundo, 125000 multiplicaciones y unas 50000 divisiones) y se cree que el LARC. Consola. 62 http://www.bookrags.com/sciences/computerscience/larc-livermore-atomic-research-comp-wcs.html 44 último de los computadores con una arquitectura decimal, es decir, trabajaba en base 10 cuando la inmensa mayoría de los computadores lo hacían directamente en 2, en realidad la información almacenada no dejaba de ser binaria por las características de la memoria, pero la codificación de los dígitos estaba lejos de la base 2 y eran siempre interpretados como decimales (decimal codificado bi-quinario63). Poseía dos unidades de procesamiento completamente independientes, uno controlando la entrada/salida y otro encargado de realizar las operaciones aritméticas: se trataba de un computador paralelo en el que las dos unidades podían trabajar simultáneamente, e incluso una tercera en el caso de necesitarse más potencia de computación. Este sistema hizo que se convirtiera en el computador más potente del mundo cuando fue presentado. Otra innovación fue la incorporación de un dispositivo para grabar la salida de datos, como texto o gráficos, en una película de 35 milímetros. El Electronic Page Recorder, sin embargo, no se consiguió automatizar completamente por lo que no alcanzó demasiado éxito. La memoria principal se componía de entre 8 y 39 unidades de núcleo magnético operando en paralelo y conectadas a los procesadores. Cada una almacenaba hasta 2500 palabras de 11 dígitos (decimales) y alcanzaba una velocidad de intercambio de dos millones de palabras por segundo. Además, contaba con una memoria secundaria de 24 tambores con capacidad para 250000 palabras de 11 dígitos cada uno y con una velocidad de transferencia de 30 millones de palabras por segundo. El alto coste de fabricación de los LARC impidió su comercialización. Los dos modelos funcionaron hasta finales de los 60. 63 Se puede ampliar la información en: http://en.wikipedia.org/wiki/Bi-quinary_coded_decimal 45 ➢ 2.2.3.4. IBM 703064: Un paso más en la supercomputación El liderazgo mundial del LARC de Sperry-Rand Co. no duró demasiado65. Un año más tarde, (en 1961) IBM entregaba su primer intento de construir un supercomputador: el modelo 7030, apodado Stretch. Comenzó con un precio de $13.5 millones, aunque se redujo a $7.78 millones y sería retirado del mercado en poco tiempo al no alcanzar las expectativas. El proyecto de construcción del IBM 7030 comenzaba en 1956. IBM había prometido un super computador capaz de alcanzar velocidades 100 veces mayores a las del IBM 70466 pero el factor se redujo en las pruebas definitivas a 30 veces más rápido lo que obligó a reducir su precio y retirarlo. La velocidad del 7030 era de 670.000 adiciones, 370.000 multiplicaciones y 100.000 divisiones por segundo. Su arquitectura trabajaba con números de coma fija de longitud variable y de coma flotante de 64 bits y caracteres alfanuméricos codificados con 8 bits al menos. La longitud de Byte como tal era variable, de IBM 7030. Panel. 1 a 8 bits y las instrucciones podían ser de 32 o 64 bits. Poseía 32 registros y una memoria de entre 16.384 y 262.144 palabras binarias de 64 bits, calentada y enfriada por inmersión en aceite. Aunque fuera un computador de relativo poco éxito (acabaron vendiéndose 9 unidades) muchas de las tecnologías que incorporaba serían clave más tarde. Se usó la lógica de transistores SMS (Sistema Modular Estándar) que sería empleada por muchos futuros diseños de IBM como el 7090. El 7030 contaba además con capacidades de multiprogramación (multitarea), protección de memoria e interrupciones generalizadas. Nuevas técnicas utilizadas por el 7030 como el almacenamiento de la información que el procesador iba a utilizar en los registros de rápido acceso para optimizar IMB 7030, alias Stretch recursos son hoy usadas en los nuevos procesadores. 64 http://en.wikipedia.org/wiki/IBM_7030 65 Su relación con el LARC llega más allá que la simple competencia tecnológica. Tanto IBM como Sperry Rand presentaron proyectos para el Lawrence Radiation Center de Livermore. Cuando los ingenieros de IBM (John Griffith y Gene Amdahl) acabaron el proyecto decidieron rediseñarlo completamente con un tipo de transistor recientemente inventado. LARC se llevó el contrato (funcionando con transistores obsoletos como ya apuntamos). IBM no se resignó y entregó proyecto actualizado a un potencial cliente del LARC: el laboratorio de los Álamos. 66 El IBM 704 fue el primer ordenador producido en masa, padre del 7090, capaz de ejecutar hasta 40,000 instrucciones por segundo. Más información en: http://en.wikipedia.org/wiki/IBM_704 46 2.3. LA TERCERA GENERACIÓN DE COMPUTADORES (1960-1975) La tecnología avanzaba. Durante los años pasados, las computadoras habían conseguido grandes mejoras. Ahora eran más rápidas, más fiables, consumían, ocupaban y se calentaban menos... la empresa que necesitase un computador podía elegir entre varios modelos disponibles en el mercado y colocarlo en una de sus instancias, donde los programadores trabajarían a grandes velocidades gracias a los lenguajes de alto nivel y a los compiladores proporcionados. Esta era la perspectiva que se tenía a principios de los 60. Desde un punto de vista más actual, los computadores de la Segunda Generación no eran más que trastos lentos, sólo accesibles a grandes empresas y que ocupaban media habitación entera (si tomamos como habitación entera el espacio ocupado por los predecesores de la primera generación). Su uso estaba reservado a expertos, los sistemas operativos (o intentos de ellos) no eran más que una ventana de comandos muy limitada y las memorias seguían siendo pequeñas. Así como la Segunda Generación se debe a un gran avance tecnológico de múltiples aplicaciones como fue el transistor, la Tercera Generación no será menos y llegará de la mano de una nueva creación de la ciencia: el circuito integrado. 2.3.1. Los circuitos integrados El creciente número de transistores, capacitores, diodos... que se venían necesitando conforme las capacidades de computación iban creciendo a finales de los 50 empezaba a crear grandes problemas a la hora de interconectar todos los elementos. El soldado se hacía de forma manual y era una fuente constante de problemas. Como respuesta a la situación, nació en Estados Unidos el programa Micro-Module, financiado por el Cuerpo de Señales del Ejercito que tenía como objetivo uniformizar tamaño y forma de componentes en cuyo interior ya estuvieran echas todas las conexiones entre transistores y demás elementos. Así, estos módulos podrían utilizarse para construir los circuitos que se necesitasen simplificando mucho la tarea67. Jack Kilby sería uno de los primeros que pensaran en cómo conseguirlo y no tardó en hacerlo. En 1958, cuando trabajaba para Texas Instruments consiguió implementar con éxito un circuito integrado por primera vez68. En su busca por un dispositivo que solucionase todos estos problemas de diseño llegó “a la conclusión de que todo lo que necesitaba eran semiconductores – 67 http://www.ti.com/corp/docs/kilbyctr/jackbuilt.shtml 68 El circuito integrado fue concebido por primera vez en 1952 por experto en radares, Geoffrey W.A. Dummer que trabajaba para la sección de radares del Ministerio de Defensa británico. Sin embargo, Dummer falló en su intento de construirlo llevado a cabo en 1956. 47 las resistencias y capacitores [dispositivos pasivos], en particular, podían ser hechas del mismo material que los dispositivos activos [transistores]. También me dí cuenta de que, como todos los componentes podían fabricarse de un mismo y único material, también podrían ser hechos e interconectados in situ para formar un circuito completo”69. Al mismo tiempo que Kilby, Robert Noyce realizaría el mismo descubrimiento para Farchild Semiconductor, aunque su patente llegó seis meses más tarde. Los circuitos integrados (CI) comenzaron a manufacturarse en 1959. Los primeros modelos venían empaquetados en cerámica y contaban con tan sólo decenas de transistores (SSI Integración de pequeña escala). A mediados de los 60 el número de elementos que contenían eran cientos (MSI – Integración de escala media) y alcanzarían los millares a mediados de los 70 (LSI – Integración a gran escala). En el desarrollo inicial de los circuitos integrados tuvieron gran importancia los proyectos aeroespaciales como el programa Apolo70 (cuyo Jack Kilby y el primer circuito integrado objetivo era llevar al hombre a la luna, y traerlo de vuelta) y el misil Minuteman71 (misil intercontinental estadounidense). El primero motivó la tecnología del circuito integrado, el segundo llevó a su producción en masa. Ambos proyectos absorbieron la producción de CI de 1960 a 1963 reduciendo los costes de 1000 dólares a 25 dólares por pastilla72. Entre las mayores ventajas de los circuitos integrados se encuentran: Disminución en los costes: tanto el precio como del número de tablas de circuitos empleados lo que reducía el trabajo de ensamblado. • Aumento de la complejidad de los sistemas que se podían diseñar. • Mayor fiabilidad y vida útil más larga. • Producción en masa: los circuitos integrados se diseñan por técnicas litográficas (impresos sobre material semiconductor) y no conectando uno a uno cada componente discreto como anteriormente. Los circuitos integrados estarán a partir de ahora presentes en cada componente de un • computador, incluidas las memorias, en las que se reflejarán las ventajas de los nuevos dispositivos al sustituirse los núcleos de ferrita memorias de estado sólido, más rápidas y con mayor capacidad73. 69 70 71 72 73 “La invención del circuito integrado”. Artículo de Jack Kilby, 1976. Más información: http://en.wikipedia.org/wiki/Apollo_program Más información en: http://en.wikipedia.org/wiki/Minuteman_missile#History http://en.wikipedia.org/wiki/Integrated_circuit http://www.ipp.mpg.de/de/for/bereiche/stellarator/Comp_sci/CompScience/csep/csep1.phy.ornl.gov/ov/node12.html 48 2.3.2. Nuevos lenguajes de programación BASIC y PASCAL fueron los dos lenguajes de programación creados en la Tercera Generación que más influencia tendrán en el futuro. Ambos se inspiraron en los lenguajes existentes anteriormente, mejorando sus posibilidades y características, al mismo tiempo que esos lenguajes se actualizaban a sí mismos e incluían, a veces, algunas de las innovaciones propias de los nuevos. ➢ 2.3.2.1. BASIC BASIC es el acrónimo de Código de Instrucciones Simbólicas de Uso General para Principiantes y fue escrito en 1963 en el Dartmouth College por el matemático John George Kemeny y Tom Kurtzas como una herramienta para enseñar a los estudiantes a partir de una síntesis entre FORTRAN y ALGOL. BASIC, sin embargo, no se ha quedado ahí, sino que ha sido uno de los lenguajes de programación más usados, un simple lenguaje de programación considerado como un paso fácil antes de que los estudiantes comenzaran con el estudio de otros lenguajes más potentes como FORTRAN. Los ocho principios de diseño de BASIC fueron74: 1. Ser fácil de usar para los principiantes. 2. Ser un lenguaje de propósito general. 3. Permitir que los expertos añadieran características avanzadas, mientras que el lenguaje permanecía simple para los principiantes. 4. Ser interactivo. 5. Proveer mensajes de error claros y amigables. 6. Responder rápido a los programas pequeños. 7. No requerir un conocimiento del hardware de la computadora. 8. Proteger al usuario del sistema operativo. La popularidad de BASIC creció gracias a Paul Allen y Bill Gates (ambos padres fundadores de Microsoft) cuando escribieron una versión en 1975 para el ordenador personal Altair. Más tarde, Gates y Microsoft escribieron versiones de BASIC para el ordenador Apple y el DOS de IBM75. Una particularidad de BASIC es que puede ser tanto compilado como interpretado, según convenga. Algunas de las primeras implementaciones (las más antiguas) de BASIC contaban con un 74 http://es.wikipedia.org/wiki/BASIC 75 http://inventors.about.com/library/inventors/blbasic.htm 49 repertorio muy reducido de instrucciones como LET, PRINT, IF, GOTO. Actualmente se ha incluido todo el repertorio de instrucciones comunes a la mayoría de lenguajes de alto nivel: WHILE, REPEAT..UNTIL, CASE, SWITCH... etc. Los tipos de datos originalmente eran dos: numéricos y cadena. Una buena característica de BASIC es que ya en sus primeras versiones incorporaba buenas funciones para el manejo de cadenas. También se soportaban arrays de ambos tipos, que podían ser de dimensión 2 como mucho. En la actualidad se han añadido otros tipos como los números de 32 bits o los definidos por el usuario. En cuanto a las posibilidades de programación estructurada, las primeras versiones no permitían la creación de subrutinas o procedimientos, por lo que la estructuración se debía realizar mediante el uso de la etiqueta GOTO, creándose un código muchas veces confuso. En los dialectos modernos de BASIC se dispone tanto de funciones (subrutinas que devuelven un valor) como de procedimientos (no lo hacen). Actualmente, la popularidad de BASIC se refleja en la gran cantidad de dialectos aparecidos: hasta 60 diferentes que dan soporte a la inmensa mayoría de plataformas existentes desde su invención76. 76 http://es.wikipedia.org/wiki/BASIC 50 ➢ 2.3.2.2. PASCAL PASCAL recibe su nombre del matemático francés Blaise Pascal, pionero en la historia de los computadores. Descendiente de algunas versiones de ALGOL (60, 68, W), fue desarrollado originalmente por Niklaus Wirth en 1968, con dos objetivos fundamentales: hacer un lenguaje que fuera asequible y permitiera su enseñanza como una disciplina sistemática basada en los conceptos naturales y claramente reflejados por el propio lenguaje; y definirlo de tal forma que su implementación fuese fiable y eficiente en los computadores de entonces. El primer compilador aparecía en 197077. PASCAL fue mucho más allá de sus propósitos y comenzó a ser usado comercialmente, lejos del mero interés académico. Ya en los 80, Pascal era usado en la mayoría de las universidades mientras seguía invadiendo el mercado comercial aunque algunas voces criticaban que no se podía producir código de características industriales. Se hizo tan popular que incluso FORTRAN comenzó a cambiar haciendo uso de las innovaciones de Pascal. Debido a la gran popularidad del lenguaje en el desarrollo de aplicaciones se creo una versión Extendida de Pascal Estándar en 1990. Más de 80 sistemas diferentes contaban entonces con implementaciones del lenguaje78. PASCAL pretendía ser un lenguaje fácil y estructurado, por lo que su sintaxis tiende a ser natural. El repertorio de instrucciones de PASCAL estándar es bastante amplio y contiene todas las instrucciones básicas IF THEN ELSE, CASE; WHILE, REPEAT..UNTIL, FOR..DO, READ, WRITE propias de todos los lenguajes de alto nivel. Cuenta con una serie de tipos de datos simples predefinidos (integer, real, char[acter], boolean, longint[eger] y permite al usuario definir sus propios tipos estructurados y subrangos de los simples. Además, proporciona estructuras de datos predefinidas como son los arrays, los registros, el tipo set, y los archivos. Por otra parte, los compiladores de Pascal realizan fuertes comprobaciones sobre las asignaciones detectando incompatibilidades e incorrecciones que en otros lenguajes causarían errores en tiempo de ejecución. Uno de las principales características del lenguaje son el gran soporte para la programación estructurada, con la posibilidad de definir funciones y procedimientos en los que las variables entran tanto por valor (no se devuelven) como por referencia (se devuelven), lo que permite la realización de todo tipo de código sin la necesidad de la etiqueta GOTO79. 77 http://www.pascal-central.com/ppl/#Origins 78 http://en.wikipedia.org/wiki/Pascal_programming_language 79 http://www.engin.umd.umich.edu/CIS/course.des/cis400/pascal/pascal.html 51 2.3.3. Los computadores más representativos de la Tercera Generación Durante esta generación aparecen múltiples sistemas con la firma de muchas y diferentes compañías. La reducción de costes hizo que el mercado no estuviera reservado a unos pocos por lo que muchas compañías saltan al mercado con ofertas de todo tipo: desde los computadores más sencillos y baratos destinados a las empresas más humildes, hasta supercomputadores con un valor de 10 millones de dólares. Por ello, es imposible detallar detenidamente todos los modelos, por lo que analizaremos los más representativos y populares intentando cubrir el espectro de años que compone la generación: la serie IBM System/360, el Digital Data Nova, un minicomputador que se volvió muy popular, y las series CDC 6000 de supercomputadores, que llevaron el liderazgo a mediados de generación. Digital Equipment Corporation Programmed Data Processor 8 (DEC PDP 8) No queremos dejar de nombrar, sin embargo, la serie PDP (Procesador de datos programado) de la mano de Digital Equipment Corporation, cuyos 16 modelos llevaron a la compañía a situarse detrás de IBM en el mercado. Tampoco hay que olvidar la entrada en el negocio de los computatores de uso general de Hewlett-Packard en 1966 con su serie 2100 de minicomputadores, que soportaban gran número de lenguajes. Por último, ya en el campo de los supercomputadores, reseñar el CDC 7600 de Seymour Cray que llegó cinco años después del 6600 y es considerado como el primer procesador supercomputadores vectorial. con Otros procesadores paralelos fueron el SOLOMON computer, de Westinghouse Corporation, y el ILLIAC IV, desarrollado por Borroughs, el Departamento de Defensa Estadounidense CDC 7600 de Saymour Cray y la Universidad de Illinois. 52 ➢ 2.3.3.1. Las Series IBM System/36080 El comienzo la generación La nueva apuesta de IBM fue lanzar al mercado en 1963 una gama entera de computadores con diferentes versiones y precios, aunque todos funcionando bajo el mismo conjunto de comandos. De esta manera permitía a los clientes comprar el modelo de gama más baja e ir actualizándolo conforme crecieran sus necesidades, sin que los programas dejaran de funcionar. Para ello IBM hizo uso comercial de un microcódigo, es decir, un microprograma con un repertorio básico de instrucciones para el procesador, por primera vez. El lanzamiento del S/360 fue el proyecto de CPU más caro de la historia. IBM invirtió 5 billones de dólares de los de entonces, lo que habría puesto a la compañía en un grave apuro en caso de salir mal, IBM System/360 pero no lo hizo: IBM llegó a alcanzar los 1000 pedidos al mes81. La gama inicial se componía de los modelos 30, 40, 50, 60, 62 y 70 y se actualizaría con los años. Los tres primeros correspondían a una gama baja-media, mientras que los últimos eran bastante más potentes y, por lo tanto, caros. La mayoría de ellos ofrecían compatibilidad con sistemas anteriores de IBM (series 1400 y 7094). A pesar de que el circuito integrado estaba ya inventado y en el mercado, dado que no estaba del todo probada su fiabilidad y la disponibilidad era escasa, IBM optó por diseñar un CI híbrido bajo la denominada Solid Logic Technology82. El S/360 seguía siendo una IBM System 360 80 http://en.wikipedia.org/wiki/System/360 81 http://www.cedmagic.com/history/ibm-system-360.html 82 Más información: http://en.wikipedia.org/wiki/Solid_Logic_Technology 53 computadora central (mainframe computer), de grandes proporciones, orientada a el mundo de los negocios. El S/360 introdujo también una serie de estándares para la industria en lo referente a su arquitectura. El tamaño de los bytes fue fijado a 8 bits y cada palabra usaba 4 bytes. Constaba de 16 registros de uso general de 32 bits y 4 registros de coma flotante para realizar operaciones de este tipo (la Arquitectura de Punto Flotante de IBM se mantendría como el estándar durante 20 años). La memoria se indexaba por cada byte, (en vez de por cada palabra como venía siendo) y tenía protecciones como la paginación y segmentación. El tamaño de la memoria del modelo de gama más baja era de 24KB. Las operaciones aritméticas se realizaban en complemento a 2. El sistema operativo OS/360 fue desarrollado para la gama media de las S/360. Constaba de tres programas de control: PCP (Programa de control primario) que procesaba las instrucciones secuencialmente, MFT (Multiprogramación con un número Fijo de Tareas), que lo dotaba de capacidades multitarea, y MVT (Multiprogramación con un número Variable de Tareas) que permitía números no fijos de tareas cuyo tamaño en memoria podía cambiar dinámicamente. La entrega al público del OS/360 se retrasó un año por lo que se introdujeron alternativas como BOS (Sistema Operativo Básico), para la gama baja; TOS (Sistema Operativo de Cinta) para aquellas máquinas con lector de cintas únicamente; y DOS (Sistema Operativo de Disco)83. La serie System/370 nacería en 1970 para reemplazar a los S/360. Entre sus innovaciones estaban capacidad procesador-dual para estándar, soporte completo para memoria virtual y aritmética de punto flotante de 128 bits. Durante sus 20 años de vida la serie 370 sería mejorada con expansiones de la memoria al mismo tiempo que se preservaba la compatibilidad con sistemas anteriores. Entre los modelos de esta serie destacan el IBM 3033, IBM 3090, IBM S/360. Consola. 9370. Ya en los 90' una nueva serie, la System/390 tomaría su lugar84. 83 http://www.beagle-ears.com/lars/engineer/comphist/ibm360.htm#opsys 84 http://en.wikipedia.org/wiki/System/370 54 ➢ 2.3.3.2. General Data NOVA Uno de los minicomputadores más populares El computador Nova de Data General salió al mercado en 1969, inspirado en otro minicomputador, el PDP-8 (considerado el primero de los minicomputadores), su principal característica era que trabajaba con 16 bits y que fue el primero en utilizar la Escala de integración media (MSI) en sus circuitos. En 1970 se lanzaba una mejora del modelo original: el SuperNova, cuyo rendimiento era muchísimo mejor. Se llegaron a vender 50000 unidades a un precio de 8000 dólares bajo el slogan de “el mejor computador pequeño del mundo”. El procesador del Nova estaba construido en dos grandes circuitos integrados de 38 cm2 por lo que no se necesitaba cableado manual, además de ser más fiable que otros sistemas. En los primeros modelos se procesaba la información en paquetes de 4 bits en serie, aunque con la llegada del SuperNova sería mejorado para procesar 16 bits de manera paralela. En cuanto a la memoria, normalmente contaba con 4KBytes de RAM de núcleo magnético contenidas en otra tabla de 38 cm2 y con memoria ROM transistorizadas. Las instrucciones del procesador se dividían en tres principalmente: instrucciones de manipulación de registro a registro, referentes a la memoria y de entrada/salida. Cada instrucción ocupaba una palabra (16 bits). Existían instrucciones de multiplicación, división, unidad de coma flotante, y administración de memoria. Las primeras versiones del Nova incorporaban un interprete del General Data SuperNova lenguaje BASIC en cinta de papel perforada. Más tarde se incorporaría soporte para otros programas. 55 ➢ 2.3.3.3. CDC 6000 Series85 Algunos de los supercomputadores más característicos de la Tercera Generación El modelo 6600 de Control Data Corporation (CDC) fue diseñado uno de los personajes más famosos del mundo de la supercomputación: Seymour Cray (1925-1996). Cray se graduó en ingeniería eléctrica y en matemáticas en la universidad de Minnesota. Trabajó para Sperry Rand y fue uno de los principales responsables del diseño del UNIVAC 1103 (1953). En 1957 decidió fundar CDC y se dedicaría a partir de ese momento al diseño de supercomputadores como las series que ahora presentamos86. El primer miembro de las series 6000 sería el 6600 que se presentó en 1964 y era capaz de realizar hasta 3 millones de instrucciones por segundo. Se configuraba como 3 veces más rápido que el IBM Stretch (7030) y se mantendría así 2 años . Le siguieron el CDC 6400 (1966), el 6500 (1967) y el 6700 (1960), los dos últimos con procesadores centrales dobles. El procesador central del CDC 6400 incluía 24 registros de operación. El CDC 6500 era exactamente igual, pero con dos procesadores centrales, por lo que doblaba las capacidades del anterior. El CDC 6600 por su parte contaba con un sólo procesador central pero de mucha mayor eficiencia al contar con 10 unidades funcionales independientes paralelas que podían operar con 32 bits de memoria cada una. Eran de un multiplicador de coma flotante, un divisor, un sumador y un sumador largo, dos incrementadores, un shifter (traductor de palabras de datos a bits), una unidad lógica y una unidad de salto87. El sistema leía y decodificaba las instrucciones de la memoria tan pronto como fuese posible y se las pasaba a las unidades para que se procesaran. Por otra parte, CDC 6600. Consola. se trataba de sistemas multitarea capaces de ocuparse de hasta 7 programas activos diferentes. La memoria central contaba como mínimo con 32.768 palabras de 60 bits cada una. El indexado se realizaba por palabras y no por bytes. Podía ser extendida mediante otra unidad de memoria. Al principio se trataba de memoria magnética, aunque luego también se pudo usar memoria transistorizada88. Se contaba con dos pantallas CRT para la consola del sistema y un teclado con el que intercomunicarse con la máquina. También se disponía de lector y perforador de tarjetas, impresora y lector/grabador de cintas magnéticas. 85 86 87 88 http://en.wikipedia.org/wiki/CDC_6000_series http://www-etsi2.ugr.es/alumnos/mlii/Cray.htm http://en.wikipedia.org/wiki/CDC_6600 Más información en: http://www.museumwaalsdorp.nl/computer/en/6400hwac.html 56 2.4. LA CUARTA GENERACIÓN DE COMPUTADORES (1970- ) Desde la invención del circuito integrado la miniaturización de los componentes avanzó a velocidades trepidantes. En 15 años se pasó de integrar decenas de transistores en una sola pieza a miles. La demanda y la producción en masa hicieron que los costes se redujeran hasta estar al alcance de un público mucho más amplio. Sin embargo, los computadores seguían siendo patrimonio exclusivo de empresas y universidades, ya no sólo porque aún tuvieran un precio muy elevado para una familia, sino porque su uso estaba limitado a expertos y el usuario privado no requería las posibilidades de computación que tales sistemas podían ofrecerle. La nueva generación llegará con un nuevo paso en la escala de integración de los circuitos: la VLSI (Integración a escala muy grande)89. Un chip de estas características contenía cientos de miles de componentes discretos, lo que significaba no sólo poder integrar módulos, sino procesadores enteros, apareciendo por primera vez el término microprocesador. 2.4.1. Los microprocesadores El primer microprocesador completo de la historia será el Intel 4004 y sería lanzado al mercado en 1971. Sus creadores fueron Ted Hoff y Federico Faggin y originalmente estaba diseñado para ser usado para una familia de calculadoras japonesas de la marca Busicom. Pronto aparecieron múltiples usos para el nuevo producto, abriendose un nuevo mercado. El Intel 4004 funcionaba bajo “Arquitectura Harvard”, con palabras de cuatro bits, 46 Intel 4004 90 instrucciones diferentes y a una velocidad máxima de 740 kHz . Contenía en su interior 2300 transistores. Sin embargo, el Intel 4004 era un microprocesador para una calculadora simplemente. El verdadero comienzo de las microunidades de procesamiento (MPU) para los computadores llegó con un nuevo modelo, también bajo la firma de Federico Faggin, el Intel 8080 a 2Mhz. Contaba Intel 8080 con un bus de direccionamiento de 16 bits (64 kbyts de memoria) y un bus de datos de 8 bits (palabra). Internamente tenía 8 registros de 8 bits que que 89 http://en.wikipedia.org/wiki/Very-large-scale_integration 90 http://en.wikipedia.org/wiki/Intel_4004 57 podían ser combinados por parejas para formar registros de 16. El contador de programa era otro registro de 16 bits. Además incorporaba 256 puertos de entrada/salida de manera que se pudieran conectar estos dispositivos sin afectar al espacio de direccionamiento. “El 8080 realmente creó el mercado de los microprocesadores. El 4004 y el 8008 lo sugirieron, pero el 8080 lo hizo real” comentaba F. Faggin91. Tan popular fue que múltiples compañías comenzaron a fabricarlo también (AMD, National Semiconductor, Mitsubishi, NEC, Siemens, Texas Instruments...) y se llegaron a realizar clones en la Unión Sovietica, Polonia, Checoslovaquia y Rumanía92. Intel 8080. Se puede apreciar la complejidad que los primeros microprocesadores alcanzaban. Antes de pasar a analizar el conjunto de computadoras personales que dominaron la cuarta generación, veamos qué nuevos lenguajes de programación aparecieron y se desarrollaron en esta etapa. 91 http://www.antiquetech.com/chips/8080.htm 92 http://www.cpu-world.com/CPUs/8080/index.html 58 2.4.2. Los lenguajes de programación de la Cuarta Generación A partir de 1970 comienzan a aparecer multitud de lenguajes de alto nivel, algunos con más trascendencia que otros. La principal característica de los lenguajes de propósito general serán la grandes capacidades de abstracción procedimental y de datos que ofrezcan. Algunos ejemplos son: C, Smalltalk, Modula-2, ADA, C++, Visual BASIC, Eiffel, Java... que se unían a las actualizaciones de lenguajes anteriores como FORTRAN o COBOL93. En este apartado detallaremos las evolución y características de dos de los lenguajes que más influencia y uso tienen actualmente: C y Java. Sin embargo, conviene reseñar también la importancia de otros lenguajes como los orientados a la programación lógica (Prolog) y que se desarrollaron a partir de los 70. La programación lógica parte del establecimiento de una base de datos de sentencias y reglas de inferencia que son declaradas por el programador, dada la naturaleza declarativa de la lógica. A partir de ésto la máquina resolverá las cuestiones que se plantean mediante una manipulación lógica. La idea principal que esta detrás de la programación lógica es el uso de la lógica matemática que se traduce en una especificación mediante la declaración de de fórmulas lógicas y la computación es el proceso de deducción o construcción de pruebas. Todo lo anterior hace que la programación lógica sea fundamentalmente diferente de los otros lenguajes de programación94. Este tipo de lenguajes han alcanzado gran importancia, sobretodo en aplicaciones relacionadas con inteligencia artificial95. 93 Recomendamos una visita a http://www.levenez.com/lang/history.html donde se puede encontrar un completo diagrama a modo de línea del tiempo que recorre todos los lenguajes y versiones aparecidas desde FORTRAN (1954) hasta la actualidad y las relaciones entre ellos. 94 http://www.cs.cinvestav.mx/PaginaAntigua/SC/publica/chapa/intro_lm/node42.html 95 http://www.lania.mx/biblioteca/newsletters/1996-primavera-verano/art4.html 59 ➢ 2.4.2.1. C96 C se desarrolló en los Laboratorios Bell en 1972 por Dennis Ritchie. Muchos de sus principios fueron tomados de un lenguaje anterior “B”, que a su vez descendía de BCPL, una versión básica de CPL (Lenguaje de Programación Combinada)97. C devolvía algunas de las generalidades del BCPL al B, dando lugar a lo que conocemos ahora como C. La potencia y flexibilidad de C fueron patentes en poco tiempo. El sistema operativo UNIX, escrito originalmente en código ensamblador, fue re-escrito en su totalidad en C manteniendo en ensamblador unicamente la parte de código necesaria para que C funcionase98. Durante el resto de los 70 C se extendió a muchas escuelas y universidades debido a sus lazos con UNIX y a la disponibilidad de compiladores. En 1983 nació ANSI C, o estándar de C en respuesta a las múltiples versiones que habían surgido en los años anteriores. Actualmente C cuenta con una gran variedad de librerías estándar que le permiten realizar muchas funciones. C es un lenguaje potente y flexible que permite una rápida ejecución del programa e impone pocas restricciones al programador. Permite el acceso de bajo nivel a información y comandos al mismo tiempo que retiene la portabilidad y la sintaxis de un lenguaje de alto nivel. Estas características le hacen útil tanto para la programación de sistemas como para la de programas de propósito general. Son también el origen de la potencia de C y la rápida ejecución de sus programas. Su flexibilidad proviene de las múltiples formas con las que el programador puede realizar una misma tarea. C posee potentes capacidades de manipulación de punteros e incluye operadores para trabajar con los bits dentro de un byte (bitwise operators) como99 1- >>, <<, que desplazan bits a la derecha o a la izquierda. 2- & (AND), | (OR), ^ (XOR) que compara dos grupos de bits logicamente. 3- ~, que complementa un grupo de bits. La falta de restricciones impuesta sobre el programador se reflejan sobre todo en la ausencia 96 http://www.engin.umd.umich.edu/CIS/course.des/cis400/c/c.html 97 CPL fue desarrollado conjuntamente por la Universidad de Cambridge y la de Londres durante los años 60. Tenía una gran influencia de ALGOL 60, pero en vez de ser pequeño, elegante y simple, CLP fue grande, moderadamente elegante y complejo. Pretendía ser útil tanto para la programación científica (FORTRAN y ALGOL) como para la orientada al comercio (COBOL). CPL resultó ser demasiado para los computadores de la época y las tecnologías de compilación existentes, por lo que no aparecieron compiladores funcionales hasta los 70. Sin embargo, nunca se hizo popular y se dejo de usar a lo largo de esta década. Basic CPL (BCPL) era mucho más simple y se concibió como lenguaje de programación de sistemas, particularmente para escribir compiladores. Más tarde llegó una versión aún más simplificada, “B” que sería la inspiradora de “C” 98 Esta técnica se llama “bootstrapping” y tiene una historia curiosa que se puede consultar en: http://en.wikipedia.org/wiki/Bootstrap 99 http://www.webopedia.com/TERM/b/bitwise_operator.html 60 de comprobación de tipos, algo de lo que un programador avanzado puede sacar gran partido, pero muy peligroso para un novato. Otro punto fuerte de C es su uso de la modularidad. Las secciones de código pueden ser guardadas en librerías para su uso posterior en programas futuros, lo que influye en su portabilidad y eficiencia de ejecución. Así, el núcleo del lenguaje deja fuera muchos rasgos propios de otros lenguajes como las capacidades de entrada/salida que tienden a decelerar la ejecución del programa y a hacerlo dependiente de un sistema para su funcionamiento óptimo. Éstas, se almacenan en una librería exterior para llamarlas solamente cuando sea necesario. C es muy usado para las aplicaciones relacionadas con el sistema operativo UNIX y para el desarrollo de los motores gráficos de muchos videojuegos. 61 ➢ 2.4.2.2. Java100 Alrededor de 1990 James Gosling, Bill Joy y otros miembros de Sun Microsystems comenzaron desarrollando un lenguaje llamado Oak (roble). Lo querían utilizar primordialmente para controlar microprocesadores de artículos de consumo como videos, tostadoras y PDAs. Para alcanzar estos objetivos Oak necesitaba ser: Independiente a cualquier plataforma. • Muy fiable • Compacto. Sin embargo, así como las televisiones interactivas y los PDA de 1993 no tuvieron éxito, • Oak tampoco. Entonces, el boom de Internet comenzó y se convirtió en el objetivo de Sun, cambiando el nombre del proyecto por Java. En 1994 apareció el navegador HotJava de Sun. Escrito en Java en tan sólo unos meses, ilustraba el poder de los applets101 y también las capacidades de Java para la producción rápida de programas. Conjuntamente con la expansión del interés y la publicidad en Internet, Java fue reconocido ampliamente y creció la expectación ante lo que probablemente se convertiría en el software dominante para navegadores y aplicaciones de consumo. Sin embargo, las primeras versiones de Java no poseían las capacidades suficientes para satisfacer las necesidades de las aplicaciones de los clientes. Por ejemplo, los gráficos en Java 1.0 estaban muy poco desarrollados en comparación con lo que se podía hacer con C y otros lenguajes. Los applets de Java se han vuelto muy populares pero no dominan los visualizadores interactivos o multimedia de las páginas web. Muchos otros programas similares pueden también ser ejecutados en el entorno del navegador. El lanzamiento de nuevas y extendidas versiones sí hicieron que se volviera muy popular para el desarrollo de aplicaciones de empresa102 y middleware103 como tiendas en-línea, procesamiento de transacciones, interfaces de bases de datos... Java se ha vuelto además muy común en pequeñas plataformas como teléfonos móviles y PDAs. 100 Extraído de http://www.particle.kth.se/~lindsey/JavaCourse/Book/Part1/Java/Chapter01/history.html 101 Un applet es un programa escrito en Java que puede ser incluido en una página HTML de forma muy parecida a como se introduce una imagen. 102 Enterprise Applications. Este tipo de software realiza funciones relacionadas con los negocios como contabilidad, horarios de producción, seguimiento de la información del cliente, mantenimiento de cuentas bancarias... Suele estar alojado en servidores y se usado por muchos empleados de la misma organización simultáneamente. 103 Las aplicaciones Middleware son programas que actúan como intermediarios entre diferentes componentes de aplicaciones. Son muy útiles en servidores web, servidores de aplicaciones, sistemas de administración de contenidos etc. Más información en: http://en.wikipedia.org/wiki/Middleware 62 La primera característica de Java es que se trata de un lenguaje interpretado, y por ello es completamente independiente de las plataformas donde se ejecute. Los compiladores de Java no producen código máquina, sino un código intermedio llamado bytecode que la Máquina Virtual Java (JVM), el intérprete, se encarga de descifrar para seguidamente ejecutar las rutinas pertinentes ya pre-programadas. La segunda es que se trata de un lenguaje orientado a objetos, lo que significa que todo lo que aparezca en un programa de Java es un objeto, descendiente de una clase de objetos raíz. Uno de los factores que más ayudaron a la rápida adopción es la similitud de su sintaxis con el lenguaje C++. Además Java cuenta con una de las más ricas y atractivas librerías estándar con cientos de classes y métodos que se agrupan en seis areas funcionales principales: • Clases de soporte de lenguaje para características avanzadas del lenguaje como cadenas, arrays, hilos, y administración de excepciones. • Clases de utilidad como un generador de números aleatorios, funciones de fecha y hora... • Clases de entrada/salida para leer y escribir datos de muchos tipos desde y hacia múltiples fuentes. • Clases de red para permitir comunicaciones entre computadores sobre una red local o Internet. • Set de herramientas para ventanas abstractas para crear GUIs máquina-independientes. • Clase de applets para crear aplicaciones Java que puedan ser descargadas y ejecutadas desde un navegador. 63 2.4.3. Los computadores personales • 2.4.3.1. Años 70 El procesador Intel 8080, del que hablamos antes, fue precisamente el corazón de uno de los primeros ordenadores personales, y sin duda el de más éxito de principios de generación: el Altair 8800, lanzado en 1975 de Micro Instrumentation Telemetry Systems (MITS) cuyas características detallaremos un poco más adelante104. Ese mismo año IBM lanza su primer microcomputador, el IBM 5100 con precios que oscilaban entre $9000 y $20000. Su precio denotaba sus capacidades: llegaba a 64 Kbytes de RAM con un procesador IBM a 1.9Mhz, pantalla monocromática, teclado, disco duro, soporte para BASIC, APL o ambos... se trataba de un modelo orientado al ámbito de la investigación científica y la resolución de problemas. El 5100 era como una versión de sobremesa de los System/360 de la IBM 5100 generación anterior.. Fue descrito además como el primer ordenador portátil, aunque con un peso de 25 kg más bien no lo era. Un año tras el lanzamiento del IBM 5100 (en 1976) Steven Wozniak y Steven Jobs formaban Apple Computer y sacaban al mercado su primer producto: Apple I del que se vendieron 200 unidades y que consistía básicamente de una placa de circuitos a la que había que añadir un monitor, un teclado, una fuente de alimentación, y soporte para cintas si se quería programar algo en él. Sería el Apple I Apple II (1977) el que verdaderamente concedería importancia en el mercado a la compañía, y que también analizamos más a fondo un poco más adelante. 104 Durante 1985 el Museo de Computación de Boston realizó un concurso con el objeto de registrar la historia de la computación. El museo estuvo publicitando este evento en todos los Estados Unidos, solicitando al público su contribución personal. El resultado fue de 316 muestras remitidas. Apareció allí, para sorpresa de todos, un modelo descontinuado y olvidado que resultó ser el primer ordenador personal de la historia. La Kenbak I, fue fabricada en 1971 por John Blankenbaker de la Kenbak Corporation de Los Angeles. Este PC contaba con apenas 256 bytes (no kilobytes) de memoria RAM y su programación se realizaba por medio de palanquillas (switches). Su CPU no era integrado, sino que se componía de diferentes módulos de transistores y funcionaba a 1Mhz. Solamente se comercializaron 40 equipos al precio de 750 dólares. http://www.perantivirus.com/historia/cuartag.htm http://en.wikipedia.org/wiki/Kenbak 64 En 1976 Commodore International comercializaba el PET 2001 (Transaccionador Personal Electrónico) que venía totalmente ensamblado y listo para operar de fábrica con 4 u 8 Kbytes de de memoria, una unidad de cintas, y un teclado tipo “chiclet”105 (que fue sustituido por un teclado normal más tarde), color y sonido, 3.5K de memoria accesible para el usuario y un precio mucho más barato que Commodore PET 2001 los sistemas de Apple (funcionando con el mismo procesador, el MOS 6502106 a 1Ghz): tan sólo 595 dólares (4KB) o $795 (8KB). Más tarde, en 1982, lanzó al mercado el C64, al que se adjuntaron fichas con el código de varias aplicaciones y juegos. Tres años más tarde le seguían los Commodore Amiga, basados en el CPU Motorola 68000 a 8 Mhz107. Antes de pasar a los apartados dedicados al Altair y al Apple II, no hay que olvidar que muchos otros computadores salieron al mercado en la década de los 70, incluyendo la familia Atari 8-bit, el Sinclair ZX Spectrum, el TI 99/4A, el BBC Micro, el Amstrad/Schneider CPC, el Tandy Color Computer... Commodore Amiga 600. Uno de los últimos modelos de la serie lanzado en 1992. 105 Un teclado de chiclet es un argot para un teclado de computadora construido con un arreglo de teclas pequeñas, rectangulares y planas hechas de goma o plástico, que parecen borradores o chicle de mascar. El término viene de "Chiclets", la marca de una variedad de chicle (Chiclets Adams). Extraído de: http://es.wikipedia.org/wiki/Teclado_tipo_chiclet 106 Commodore era propietaria de la marca MOS Technology cuyos procesadores fueron ampliamente usados por sus características y buen precio. Entre los computadores que usaban el MOS 6502 estaban: Apple I, Apple II, Apple III, Comm. PET, las consolas Atari, la Nintendo Entertainment System... 107 http://en.wikipedia.org/wiki/History_of_computing_hardware_%281960s-present%29#The_Commodore 65 ➢ 2.4.3.1.1. El MITS Altair 8800 El Altair debe su nombre al episodio de Star Trek que emitían el día de su bautismo (actualmente hay una estrella Altair VI en la constelación Alpha Aquilae, que debe su nombre a la misma serie). Se iba a llamar PE-8 (Popular Electronics 8-bit), pero se decidió que un nombre de estrella sería más adecuado al acontecimiento de su lanzamiento. Y, efectivamente, supuso una revolución al ser el primer ordenador personal producido masivamente. Se comenzó a comercializar en 1975 como un kit por US $395 o montado y verificado por US $495. Algunos de sus componentes, como los buses, no se seleccionaron por requisitos técnicos, sino porque eran más baratos. Esperaban vender MITS Altair. Panel frontal. unos 200 equipos tras aparecer en portada de Popular Electronics, pero se recibieron 4000 pedidos a raíz del reportaje. Por la época del lanzamiento del Altair existían ya bastantes aficionados al mundo de las computadoras. La reducción de los precios permitía el acceso a componentes y muchos trataban de diseñar sus propios sistemas. Esto ayudó a que los ordenadores personales comenzaran a entrar en los hogares. El Altair 8800 ofrecía la posibilidad de ser comprado como kit. Hay reportajes que relatan que lo peor del montaje, que llevaba semanas, era la conexión de los 66 cables de 3 pulgadas al panel frontal , ya que se rompían con facilidad108. Todos los componentes del Altair venían en tarjetas que se conectaban a una placa base con 16 ranuras. Este sistema se denominó el “Altair bus” y se convirtió en el estándar industrial bajo el nombre S-100 bus. Las tarjetas S-100 incluían: CPU, memoria, tarjeta de video, puerto de impresora, interfaz serie, controlador de floppy disk, interfaz de cinta magnética. Altair - Panel Trasero La memoria original del Altair era una 108 http://www.museo8bits.com/altair8800.htm 66 RAM de 256 bytes, ampliable mediante tarjetas a 64 Kbytes como máximo. No tenía memoria ROM. Tampoco contaba con un teclado ni con un monitor ya que no eran necesarios. El Altair se programaba en binario a través de interruptores en el panel frontal. Contaba con múltiples diodos LED que indicaban el estado de la entrada y de la salida, también en binario, por lo que al principio hacían falta bastantes conocimientos para utilizarlo. Las ampliaciones incluían la posibilidad de añadir un monitor y un teclado que simplificasen su uso109. • Altair BASIC Dicen que cuando Bill Gates y Paul Allen vieron en la portada de Popular Electronics el Altair se dieron cuenta que, dado el bajo precio que los computadores comenzaban a alcanzar, vender software para ellos podría ser un buen negocio. La programación del Altair era totalmente manual, por lo que ¿qué mejor que un interprete de BASIC, un lenguaje claro y fácil de aprender, para atraer la atención los aficionados a los que iba dirigido? Gates y Allen contactaron con MITS y acordaron su realización. El intérprete soportaba aritmética de punto flotante, y tenía su propio sistema de entrada/salida y editor de líneas 110 ocupando tan sólo 4 Kbytes de memoria, por que quedaba libre bastante espacio en la memoria para los programas generados. También se realizaron otras versiones como 8K BASIC, Extended Basic, Extended ROM BASIC y Disk BASIC. Fue el primer producto de Micro-Soft, y también el primer caso de piratería conocido. Gates perdió la pista de una copia del intérprete antes de que fuera comercializado. Muchos aficionados pertenecientes al Homebrew Computer Club pudieron acceder a ella por lo que Gates respondió con una carta amenazando con que no seguiría desarrollando su software si la gente no pagaba por él. Microsoft desarrolló intérpretes de BASIC para otras máquinas y el intérprete fue la base de su negocio hasta 1980, con la entrada de MS-DOS. 109 http://oldcomputers.net/index.html 110 Un editor de línea es un editor de texto orientado a líneas. No se necesitaba pantalla ni existía un cursor que mover por el documento. Se trata de uno de los métodos de entrada/salida de texto más primitivos, en el que la escritura, edición y muestra del texto no ocurrían simultáneamente, sino a través de comandos en una consola del sistema. Más información en: http://en.wikipedia.org/wiki/Line_editor 67 ➢ 2.4.3.1.2. APPLE II El Apple II se convirtió en una de los computadores más populares de todos los tiempos. Aunque era una gran mejora sobre el primer modelo, funcionaba con el mismo procesador (MOS 6502, uno de los más baratos y completos del mercado) y a la misma velocidad de 1Mhz. Las nuevas mejoras incluían pantalla a color, 8 ranuras de expansión interna, una caja con teclado y posibilidades de sonido. El modelo también estaba disponible como placa de circuitos unicamente para todo aquel aficionado que deseara montarlo él mismo. Los precios variaban según la capacidad de memoria de 1298 dólares a 2638 (sistema montado), o de 598 a 1938 dólares (sólo la placa). Venia con BASIC incluido, por lo que se vendía listo para funcionar desde el primer momento. Sus características le convirtieron en el primer sistema amigable para el usuario (“userfriendly”). La filosofía en el diseño del Apple II fue el uso de ingeniosos trucos de ingeniería para ahorrar uso de hardware y reducir los costes. Por ejemplo, el circuito usado para generar las señales de video se utilizaba para refrescar las celdas de la memoria DRAM. Funciones como el reconocimiento de las señales del controlador para juegos, el color del modo de alta resolución se implementaban utilizando circuitos muy simples y software. El sistema de sonido daba una vuelta de tuerca más: el Apple II no contaba con un sistema sintetizador sofisticado, sino con un simple interruptor capaz de emitir un “click” a través de un altavoz del sistema. Todos los sonidos eran generados por software que emitía los clicks en el momento apropiado111. Las 8 ranuras ofrecían grandes posibilidades de expansión y muy pocos diseños contaban con esta flexibilidad. Existían múltiples tipos de tarjetas que añadir al sistema: memoria, controladores de disco blando, emuladores de PASCAL y CP/M, aceleradores del procesador, tarjetas de video, controlador para juegos... Pero lo que realmente hizo que el modelo despegara fue el nuevo procesador de textos Visicalc. Fue el primer programa de estas características con un precio asequible para una tarea que anteriormente requería mucho más tiempo. Las capacidades de memoria del sistema, más bien grandes (de 4 Kbytes a 48 Kbytes), favorecieron su Apple II Plus incorporación y convertían al Apple II en una máquina muy útil en los negocios112. Apple continuó la serie con Apple II Plus, Apple IIe, IIc, IIgs, IIc Plus con muchas mejoras pero muy similares al modelo original, manteniéndose en el mercado hasta 1993. 111 http://en.wikipedia.org/wiki/Apple_II#The_original_Apple_II 112 http://oldcomputers.net/appleii.html 68 • 2.4.3.2. Años 80 Los años 80 estuvieron dominados por los ordenadores personales de IBM y las mayores innovaciones llegaron desde Apple Corporation. Aunque no hay que olvidar modelos como el Xerox Star113, ni el Apple Lisa114, los verdaderos protagonistas de la década fueron el IBM PC y el Apple Macintosh, que pasamos a detallar a continuación. ➢ 2.4.3.2.1. IBM PC115 En los 70, IBM ya había intentado hacerse con parte del mercado de los ordenadores personales con el lanzamiento del IBM 5100, pero su precio hizo que no estuviera al alcance de cualquiera. La compañía llego al punto de plantearse la adquisición de la compañía de videojuegos Atari para encargarse de su primera línea de ordenadores personales. Sin embargo, IBM decidió finalmente fabricar su propio productos en respuesta al éxito obtenido por el Apple II y en 1981 salía al mercado el IBM PC o IBM 5150116. El PC había sido desarrollado muy rápidamente principalmente por que estaba diseñado con componentes no fabricados por IBM. El precio era de $1500 y, aunque no era barato, estaba al alcance de muchos negocios. Funcionaba con un procesador Intel 8088 a 4.77 Mhz. La memoria RAM iba de 16 a 640 Kbytes. No tenía disco duro, pero sí lector grabador de cintas magnéticas y disquetera de discos blandos opcional. La pantalla podía ser a color o monocromática.117 El teclado fue bastante criticado ya que algunas teclas no estaban en los lugares en que solían estar pero IBM no proporcionó un nuevo teclado hasta 1987. El bus utilizado originalmente se hizo muy popular y acabó siendo renombrado como bus ISA (Arquitectura Industrial Estándar)118. 113 El Xerox Star workstation de Xerox Corporation se introdujo en 1981 y fue el primer sistema comercial en incorporar varias tecnologías presentes en los ordenadores personales actuales como son una interfaz gráfica basada en ventanas, iconos, carpetas, ratón, red Ethernet, servidores de archivos, e-mail... además del lenguaje de programación Smalltalk. Más información en: http://en.wikipedia.org/wiki/Xerox_Star 114 Inspirado en el Xerox Star, el Apple Lisa salió al mercado en 1983. Funcionaba con un CPU Motorola 68000 y venía con 1Mbyte de RAM, monitor en blanco y negro de 12 pulgadas, disquetera dual de discos blandos y disco duro de 5Mbytes. Sin embargo, su lentitud y precio ($10000) hicieron que fallara comercialmente. Más información en: http://fp3.antelecom.net/gcifu/applemuseum/lisa2.html 115 PC era el acrónimo de Personal Computer y ya era un término popular antes del lanzamiento del IBM 5150. Sin embargo, debido al éxito del IBM PC, lo que había sido un término genérico llegó a significar específicamente una computadora compatible con las especificaciones de IBM. 116 http://inventors.about.com/library/weekly/aa031599.htm 117 http://www.vintage-computer.com/ibm_pc.shtml 118 http://en.wikipedia.org/wiki/IBM_PC 69 En los años posteriores a su presentación IBM mejoró su sistema y aparecieron los modelos IBM Personal Computer XT (1983), mejorado para los negocios con un disco duro de 10mb e IBM PC/AT (1984) que usaba el procesador Intel 80286 a 6 Mhz con un disco duro de 20 Mbytes. Un efecto derivado del uso de componentes de otros fabricantes fue que otras compañías podían obtener los mismos y crear sus propias versiones del PC. Lo único de lo que IBM era propietario era la BIOS (Sistema Básico de Entrada/Salida) , pero los competidores no tardaron en encontrar la forma de programar una BIOS que hiciera exactamente lo mismo119. IBM PC e impresora. El sistema operativo incorporado en el IBM PC tampoco era propio, sino que venía firmado por Microsoft: PC-DOS. Las dos compañías acordaron el desarrollo del sistema operativo por parte de ambas para después poner en común las mejoras, por lo que Microsoft sacó al mercado MSDOS, prácticamente idéntico al PC-DOS hasta los años 90, pero dirigido al resto de plataformas. A partir de los 90' Microsoft decidió apostar por el desarrollo de un sistema operativo propio y fácil de comercializar como sería Windows. La colaboración entre las dos compañías se tornó en una fuerte competencia que quedó muy patente en el avance paralelo e independiente de MS-DOS y PC-DOS120, en una carrera que duraría hasta finales de la década. 119 Compac fue la primera marca en sacar un PC 100% compatible con el de IBM. Para reproducir la BIOS del IBM PC utilizaron ingeniería inversa. Tardaron un año y medio e invirtieron un millón de dólares en esta tarea pero el clon creado produjo beneficios récord para la compañía. 120 http://en.wikipedia.org/wiki/PC-DOS 70 ➢ 2.4.3.2.2 APPLE MACINTOSH El primer Apple Macintosh fue presentado en 1984 al precio de $2495 y fue el primer ordenador personal comercializado con éxito que hacía uso de una interfaz gráfica de usuario y un ratón, en vez de la característica consola de comandos121. El sistema funcionaba con un procesador Motorola 68000 a 7.83 Mhz y con una memoria RAM de 128 Kbytes que más tarde se amplió a 512. Disponía de una memoria ROM de 64 Kbytes, una unidad de disco blando, un monitor de 9 pulgadas en blanco y negro (con resolución 512x342), teclado y ratón. No tenía ninguna ranura de expansión ni posibilidades de mejora que no fuesen hechas en fábrica. Tampoco era compatible ni con los Apple II, III ni con el Lisa. Sin embargo, escribía los discos más de dos veces más rápido que el IBM PC e incluía dos puertos en serie que alcanzaban altas velocidades (230.4 kbps) y, por supuesto, un sistema operativo Primer Mac de Apple Corp. totalmente gráfico, lo que lo convirtió en uno de los sistemas más amigables de la historia. Como todo computador que cambia los estándares industriales, el Mac tuvo un nivel mediocre de ventas al principio. Como todo en este mundo, tenía que tener su tiempo de adaptación y la Mac no lo tuvo. La Norteamérica corporativa, así como negocios, empresas, multinacionales, etc. eligieron al IBM PC, no solamente por ser de IBM, sino también porque tenía el aspecto, y actuaba de la manera como se suponía MAC OS. Captura de pantalla. que debía actuar un ordenador122. Sin embargo, en poco tiempo comenzaron a apreciarse sus ventajas. El diseño del computador y el procesador Motorola 68000 lo hacían especialmente atractivo para los estudiantes, por lo que cobró importancia en muchas universidades a lo largo y ancho de Estados Unidos que realizaron pedidos por más de $60 millones de dólares123. 121 http://oldcomputers.net/macintosh.html 122 http://www.maestrosdelweb.com/editorial/apple/ 123 http://www.atarimagazines.com/creative/v10n4/38_Apple_Macintosh.php 71 • 2.4.3.3. La evolución hasta nuestros días Aunque ha habido grandes avances durante los últimos años en fiabilidad, rapidez y prestaciones de los PC, la tecnología usada no difiere en gran medida de la que venía siendo en los años 80 y 90. El nivel de integración de los chips ha aumentado hasta contener millones de componentes en su interior, para reflejar este crecimiento se propuso el término ULSI (Escala de Integración Ultra Grande). Sin embargo, no se puede decir que haya un salto cualitativo entre la VLSI y la ULSI, y en la mayoría de los textos técnicos se sigue usando el primer término, a no ser que se desee enfatizar la complejidad del chip. Esto nos lleva a poder considerar los computadores personales actuales como los miembros más recientes de la Cuarta Generación. Los años siguientes al lanzamiento del Apple Mac vendrán marcados por una apertura del mercado que dejará de estar controlado por el IBM PC y sus clones. Intel continua a la cabeza del desarrollo de procesadores y lanza en 1986 su i386, de 32bits a 16 Mhz facilitando la implementación de sistemas con memoria virtual y la utilización de memorias mayores. Aunque la adopción de un procesador de 32 bits fue lenta debido a la readaptación que las placas base y los periféricos Intel i386 tuvieron que sufrir, el i386 se conformó como el modelo a seguir por los procesadores de los años posteriores y base de la arquitectura x86 en la que aún se basan la mayoría de PCs124. En 1987 IBM introduce sus Personal System/2 (PS/2) en un intento de recapturar el mercado con la introducción de una avanzada arquitectura propietaria. Se llegaron a vender más de un millón en el primer año y muchas de sus aportaciones como los puertos PS/2 o el sistema VGA de video se convertirían en los estándares del mercado por muchos años. Como había pasado con el PC, Tandy, Dell y otras compañías anunciaron sus sistemas compatibles PS/2 IBM PS/2 Modelo 50 un año más tarde125. Mientras, en el campo del software, Microsoft tuvo la idea de lanzar un GUI que permitiera al usuario interactuar con la máquina mucho más facilmente, utilizar varias aplicaciones a la vez etc. Por supuesto la idea nacía de los GUIs incorporados por el Xerox Star, el Lisa, el Macintosh... y fue llevada ha cabo relativamente rápido: en 1985 se lanzaba Windows 1.0. Al principio, Windows no estaba concebido como un Sistema Operativo como tal, sino que era una aplicación que se ejecutaba sobre MS-DOS, aunque si que asumía muchas tareas propias de los OS. MS-DOS por su 124 http://www.cpu-info.com/index2.php?mainid=html/cpu/386.php 125 http://en.wikipedia.org/wiki/PS/2 72 parte siguió siendo desarrollado logicamente. Comenzó a cobrar especial importancia a partir de 1990 coincidiendo con el lanzamiento de su versión 3.0 que era compatible con los procesadores de 32 bits que iban apareciendo en el mercado (como el Intel i486 que llegaba a alcanzar velocidades de 33Mhz)126. Con las posteriores versiones Windows se irá haciendo con una cuota muy importante de sistemas para dar el salto definitivo en 1995 con Windows 95, que rompió todas las expectativas127. Paralelamente se desarrolló el sistema operativo Windows NT orientado a estaciones de trabajo, servidores... Basados en el 95 y funcionando sobre MS-DOS saldrían a la venta Windows 98 (1998) y Windows ME (2000). Basados en el NT lo harían Windows 2000 y Windows XP (2001)128. Entre tanto, Intel daba un paso más en 1993 con la introducción del Pentium129. En su interior contaba con más de 3 millones de transistores y las primeras versiones alcanzaban los 60Mhz. El Pentium sería desarrollado hasta 1997 aumentando su velocidad (hasta 255Mhz) y posibilidades (tecnología MMX)130. Más tarde vendrían los Pentium II, III, IV. El último de ellos alcanza velocidades de 3.8 Ghz y contiene 42 millones de transistores en su interior131. El último paso en el campo de procesadores para PC ha sido la adopción del tamaño de palabra de 64 bits (arquitectura x86_64) y tanto Intel como AMD132 han presentado MS Windows 3.1 sus respectivas propuestas: los Pentium IV más recientes y los AMD Athlon 64 entre otros. Aunque Intel y Microsoft hayan sido los grandes dominadores del hardware y del software de los últimos años, no hay que olvidar las diferentes alternativas existentes. Apple, por ejemplo, ha seguido desarrollando sus Macintosh y en 2001 presentaba su sistema operativo Mac OS X que ha dado fama a los Mac de ser equipos muy estables, además de incorporar las mayores innovaciones y avances en cuanto a GUI se refiere. Procesador Intel Pentium Sistemas como GNU/Linux comienzan a ser ampliamente aceptados por muchos usuarios y soportan un gran número de arquitecturas diferentes. Existen muchas 126 http://www.cpu-info.com/index2.php?mainid=html/cpu/486.php 127 http://en.wikipedia.org/wiki/History_of_Microsoft_Windows 128 Versiones también de la mano de Microsoft, pero no orientadas al usuario en general han sido Windows NT 4.0 (1996) y Windows Server 2003. 129 Intel decidió dejar de nombrar sus productos con números para diferenciarse de los demás fabricantes , ya que un número no era patentable. Empresas como AMD tenían sus 8080, 386, 486 etc. en el mercado. Así, en vez de llamar a los nuevos procesadores i586 como se esperaba, nació la serie de los Pentium 130 MMX o Extensiones MultiMedia eran un conjunto de 57 instrucciones incorporadas en el procesador con el objetivo de permitirle realizar muchas operaciones multimedia comunes que normalmente se procesaban a través de otros dispositivos como tarjetas de video o de sonido. 131 http://www.cpu-info.com/index2.php?mainid=html/cpu/iP4.php 132AMD inició recientemente contra Intel una demanda anti-monopolio por las prácticas abusivas utilizadas para controlar el mercado. Más información en: http://www.amd.com/us-en/assets/content_type/DownloadableAssets/Complaint_summary_Spanish.pdf 73 distribuciones diferentes, la mayoría gratuitas, y el nivel de desarrollo alcanzado lo ha convertido en un sistema operativo superior en muchos aspectos al Microsoft Windows. Tux, mascota de GNU/Linux 74 3. ASPECTOS POLÉMICOS E INFLUENCIA SOCIAL DE LOS COMPUTADORES 3.1. La Primera Generación, la guerra y la responsabilidad social de ayer y hoy El desarrollo de la Primera Generación de Computadores coincide en el tiempo con el de 2ª Guerra Mundial y la carrera armamentística llevada a cabo por ambos ejes. Como hemos visto, todos y cada uno de los grandes contribuyentes al avance de estas grandes máquinas de cálculo estuvieron relacionados o trabajaron para el ejército de sus respectivos países, destacando Estados Unidos. Los proyectos que dieron luz a las Harvard Mark, ENIAC y otras fueron financiados por el ejército estadounidense que hizo uso de ellas en diferentes bases. Zuse, Atanasoff, Aiken, Hopper, Turing, Mauchly, Eckert... colaboraron con sus respectivos países en el desarrollo de tecnologías que se aplicarían a una contienda que dejó atrás 50 millones de bajas civiles y militares y 30 millones de desplazados. Dos ejemplos significativos son la implicación de Von Neumann en el proyecto Manhattan o el papel del Colossus en la guerra133. Von Neumann colaboró activamente con el Laboratorio Nacional de Los Álamos y el Proyecto Manhattan, origen de la bomba atómica en 1945 (cuyo método de implosión diseñó) y cuyo uso no se demoró: cinco meses tras la primera prueba satisfactoria dos bombas (6 y 9 de Agosto de 1945) acababan con la vida de 175.000 civiles japoneses en el acto en Hiroshima y Nagasaki. Von Neumann continuó trabajando en la resolución de los cálculos derivados de los problemas nucleares de la bomba de hidrógeno cuya construcción apoyó. Además propuso la fabricación de misiles intercontinentales134. El Colossus, por su parte, tuvo una gran importancia histórica. El 1 de junio de 1944 interceptó un mensaje crucial: la confirmación de que Hitler y el alto mando alemán esperaban un ataque aliado masivo en Calais. Una información lo suficientemente valiosa como para que el general Eisenhower decidiera el 6 de junio dirigir sus tropas a las costas de Normandía. El desembarco, masivo y por sorpresa fue el principio del fin de los alemanes 135. Piezas tan valiosas de información no fueron sin embargo gratuitas. Existen indicios de que al menos un bombardeo alemán sobre una ciudad inglesa pudo ser evitado con la información interceptada por el Colossus, con el consiguiente número de muertes, pero se dejó proceder para no desvelar que se disponía de 133 http://sgm.zonadictos.net/consecuencias.htm 134 http://ei.cs.vt.edu/~history/VonNeumann.html 135 http://www.elmundo.es/navegante/diario/2000/10/05/colossus.html 75 las claves que descifraban los mensajes alemanes136. A la vista de las terribles cifras de la Guerra, cabe preguntarse si, al mismo tiempo que se alaban los grandes avances realizados durante estos años, se deberían también considerar como un producto financiado y concebido para la guerra y que conformó una de las piezas más importantes del entramado militar de la gran contienda. En el fondo, se trata de analizar las responsabilidades sociales de las personas que trabajan con computadores. Este sería el título elegido por Edmund C. Berkeley137, para un artículo de 1962 donde, con el amargo recuerdo de la Guerra Mundial aún en la memoria y en plena tensión por la Guerra Fría, se discutía sobre el mismo tema. Espejo también de estas discusiones, al estar intimamente relacionada con Berkeley, venía siendo la revista norteamericana Computers and Automation desde la publicación de una carta en 1957 que decía: “No tengo interés en computadores y automatización excepto en el caso de que puedan mejorar el destino humano. Es mi opinión que aparte de las notables Laboratorio Nacional de los Álamos, Nuevo México. Uno de los principales centros de investigación nuclear de la historia y lugar de nacimiento de las bombas atómicas. realizaciones encaminadas a ese fin, son en conjunto más una maldición para la humanidad que una bendición. Creo que es una afrenta para la civilización que las grandes mentes – todas las mentes – trabajen en dispositivos de bombas A, bombas H, y la casta de estúpidos misiles y otras armas que son el fundamento de la economía moderna.” Respecto al mismo tema otro lector escribiría: “¿Pero no hay ningún momento en que un 136 http://www-etsi2.ugr.es/alumnos/mlii/Colossus.htm 137 Licenciado en matemáticas por la Universidad de Harvard en 1930, Edmund Callis Berkeley trabajó para Prudential Insurance Of America para luego pasar a la marina estadounidense con el inicio de la guerra en 1942. Allí, estuvo a las órdenes de Howard Aiken en el desarrollo de Mark II. En 1946 volvería a Prudential y en 1947 ayudó a formar la Association for Computer Machinery. En Prudential trabajaría en un proyecto dirigido a identificar los “mayores peligros modernos”. La investigación le llevó a concluir que una guerra nuclear era el mayor peligro que la humanidad afrontaba. El proyecto fue abortado completamente por el miedo de la compañía a dar una mala imagen, a pesar de los deseos de Berkeley de seguir incluso en su tiempo libre. Convencido de que debía hacer algo para prevenir una guerra nuclear fundaba Berkeley Associates en 1948. Aparecían poco después sus primeros libros sobre computadores electrónicos para el público general (Giant Brains, Machines That Think). Creo una publicación que se convertiría en poco tiempo (1951) en la revista Computers And Automation. Berkeley ayudó al desarrollo de la revista al tiempo que organizaba cursos por correspondencia de diferentes materias (matemáticas, computadoras, sistemas lógicos...). Su interés venía de la premisa de que ayudar al hombre común a pensar lógicamente le llevaría a acabar con la amenaza nuclear. Todos sus esfuerzos los financió escribiendo artículos, dando conferencias, trabajando a tiempo parcial como consultor y sacando libros al mercado. Berkeley fue un miembro activo del movimiento pacifista hablando contra el desarme y publicando artículos relacionados, además de mandar numerosas cartas a editores y miembros del gobierno. En 1958 entró a formar parte del Committee for a Sane Nuclear Policy (SANE) y más tarde colaboró con el Comité de Boston para el Desarme y la Paz. Berkeley moría en 1988. Más información: http://www.cbi.umn.edu/collections/inv/cbi000050.html http://www.blinkenlights.com/classiccmp/berkeley/ 76 ser humano que se respete a sí mismo deba decir «Yo no puedo hacer esto; no puedo estudiar esto, investigar esto, publicar esto... No puedo tener nada que ver con esto; esto es horrible?” Dos años despues del comienzo de la discusión, un informe de 1959 realizado por un comité para el Council of the Association for Computing Machinery concluiría que el individuo “no puede olvidar estas responsabilidades [sociales]... o delegarlas... o dejar de pensar cómo su participación especial como persona que trabaja con computadores puede beneficiar o perjudicar a la sociedad... o evitar decidir entre responsabilidades conflictivas.” Entre tanto, las nuevas máquinas, como en el caso de la IBM 7090 de 1958, se publicitaban incluyendo entre sus características sus buenas capacidades para “acelerar en gran medida el diseño de misiles, aeromotores, reactores nucleares y aeronaves supersónicas”138. Volviendo al artículo de Berkeley, antes mencionado, se puede apreciar que el autor deja una puerta abierta a la legitimación de las investigaciones de carácter militar en lo que podría describirse como casos de “defensa propia”, previamente razonados y sin incumplimiento de obligaciones morales. Avisa también de los peligros de la llamada “defensa” aludiendo situaciones la falsa alarma de Thule139. Aunque dicho ejemplo no sea más que una anécdota histórica difícilmente repetible, el panorama actual no es para nada menos preocupador. El mundo, tal y cómo funciona hoy, es una maraña de verdades manipuladas y mentiras verificadas en la que las palabras ataque y defensa son indiscernibles. Un claro ejemplo lo tenemos en el término recientemente acuñado “ataque preventivo”. Hoy, más que nunca, todo científico de los computadores debería preguntarse sobre las consecuencias de su trabajo, sobre las consecuencias que puede suponer para la sociedad en general. Las guerras (ofensivas, defensivas, frías...) representan la esencia más baja del ser humano y que son signo de una moral deficiente que, a diferencia de la tecnología, no avanza. La investigación militar ofrece -y ofrecía ya en la Primera Generación- a los científicos posibilidades de realizar y continuar líneas de investigación de carácter no necesariamente militar o cuyas aplicaciones tienen diferentes usos. Aún así, los avances realizados en este marco no deberían ser proezas de las que estar orgulloso. Albert Einstein, uno de los primeros promotores (aunque no participante activo) del antes mencionado Proyecto Manhattan, comentaría tras la detonación sobre Hiroshima, "debería quemarme los dedos con los que escribí aquella primera carta a Roosevelt" 140. No se trata de arrebatar mérito alguno a ninguno de los investigadores que cargaron -y cargan- a sus espaldas con el desarrollo de los computadores, sino de no olvidar que parte de sus trabajos 138http://www-03.ibm.com/ibm/history/exhibits/mainframe/mainframe_PP7090.html 139 En plena guerra fría (1960), un eco lunar fue interpretado por computadores de detección como un conjunto de misiles rusos disparados hacia América, haciendo saltar todas las alarmas y movilizar tropas para una respuesta aérea inmediata. 140 http://es.wikipedia.org/wiki/Proyecto_Manhattan 77 estuvieron dirigidos a fines terribles y que no dejarían por ello de unirse a los lastres que el verdadero progreso de la humanidad arrastra en su historia. 78 3.2. El mercado de los computadores: Las bases del pasado en la tecnología y el software modernos Causas y consecuencias del auge del software libre “Imaginemos al software de código abierto (Linux) y cerrado (Windows) como dos pelotas infladas. Una de ellas, la de código abierto, es transparente, y la otra, no permite ver qué hay en el interior. Si alguien introdujo un clavo que anda rebotando adentro de las pelotas, será mucho más fácil y rápido descubrirlo en la de código abierto. La voz de alarma se corre, dejamos de rebotar la pelota y cambiamos a otra, sin que nos haya explotado en mitad del juego. Las pocas personas que pueden ver a través de la pelota cerrada (con anteojos que sólo ellos poseen), o bien deciden no avisar del clavo, porque piensan que no es grave, o avisan cuando ya es demasiado tarde. Por otro lado, miles de expertos de todo el mundo pueden reparar una falla descubierta en Linux, y no únicamente los programadores de una empresa específica, como sucede con Windows.” Jerson Bejarano. Escritor nicaragüense. La Segunda Generación de computadores supuso el inicio de una gran carrera: el mercado de las nuevas tecnologías. Las reducciones de precio, consumo y volumen de los computadores permitieron por primera vez una producción masiva destinada a ser vendida a un potencial grupo de nuevos clientes con los que no se contaba en la primera generación. Las empresas podían ahora beneficiarse de las posibilidades que ofrecían los nuevos y rápidos sistemas: control de inventarios, de producción, predicciones, contabilidad general, tratamiento de datos, bases de datos, teleoperaciones... por tanto, los nuevos equipos comenzaron a estar orientados hacia el uso comercial de su potencial y no tanto científico o militar, aunque sin abandonar las últimas dos vertientes. La venta de computadores comenzaba a ser un negocio altamente rentable. Paralelamente en 1957 es acuñado por el estadístico John W. Tukey el término “Software”, que puede definirse, en pocas palabras, como toda la información procesada por los computadores, como los programas y los datos141. El desarrollo de las ideas de Von Neumann como la secuenciación de las instrucciones en memoria y la ruptura de secuencia permitieron el desarrollo y la simplificación de la programación que pasó del recableado literal al código fuente, al código ensamblador y culminó en los lenguajes de alto nivel con los que crear programas se convertía en una tarea sencilla y productiva. Con todo esto el negocio no sólo se podía realizar con la producción de hardware, sino también de software que facilitara el uso de cada máquina. Dos de las claves, y herramientas imprescindibles para hacer dinero fueron la ley de 141 http://en.wikipedia.org/wiki/Software 79 patentes, cuya principal característica será impedir que cualquier persona o compañía fabrique, use, venda u ofrezca cierta invención de la que no es propietaria142, y las licencias143, una especie de contrato entre el dueño y el cliente de cierto producto que limita e impone condiciones sobre el uso que se puede dar al programa. Un aspecto característico de la ley de patentes son las aplicadas a software. Las “patentes de software” son relativamente recientes (desarrolladas en los años 80 y 90) y su principal representante es Estados Unidos, el mayor productor de software del mundo por otra parte. Muchos países no cuentan con dichas patentes y en Europa son más estrictas. Este tipo de patentes se aplica a “aquellas invenciones cuya implementación implica el uso de un computador, una red de computadores u otros aparatos programables, contando la invención con una o más características llevadas a cabo a través de un programa de computador”144. Estos sistemas han sido origen de grandes controversias en la historia de la computación, pero también la clave para los inmensos beneficios obtenidos por las grandes multinacionales de la tecnología de hoy. Por ejemplo, a principios de los 90 IBM comenzó un agresivo programa de licencias que acabaría generando 2 billones de dólares pocos años más tarde. En Enero de 2005 los dos grandes gigantes de la computación, Microsoft e IBM contaban ya con 6130 y 3415 patentes emitidas y obtienen unos beneficios anuales de Logo original IBM $40 y $90 millones anuales respectivamente145. Múltiples compañías estadounidenses han tenido como ocupación principal la compraventa de patentes y licencias muchas veces rentabilizadas a través de demanda para todo el que viniera usando dicha tecnología. Además, las restricciones impuestas por las patentes son origen constante de querellas, lo que ha llevado en muchos casos a establecer acuerdos mutuos de no litigación como los que Microsoft tiene con IBM, Sun Microsystems, Hewlett-Packard, Siemens, Cisco...146. Sin embargo, el verdadero problema generado por las proliferación desmesurada de patentes de software y licencias es el yugo bajo el que se somete a cualquier creación. Y es que todo aquel desarrollador de software independiente, no digamos ya gratuito o de código abierto, se ve avasallado por un mundo Antiguo logo de Micro-Soft ya registrado y en el que, dado los pocos presupuestos con los que se suele contar, no puede dar paso alguno. Por su parte, los 142 http://en.wikipedia.org/wiki/Patent 143 http://en.wikipedia.org/wiki/Software_license 144 http://en.wikipedia.org/wiki/Software_patents 145 http://en.wikipedia.org/wiki/MicroSoft http://en.wikipedia.org/wiki/IBM 146 http://www.msnbc.msn.com/id/5578247/site/newsweek/ 80 que pueden se ven obligados a patentar sus productos no para evitar que otros usen sus ideas, sino para defenderse de posibles ataques, como es el caso de compañías como Oracle Corporation o Red Hat que han de destinar parte de sus fondos al mantenimiento de patentes en vez de al desarrollo y mejora del software. Contra esta situación se han dado grandes pasos en los últimos años. El ejemplo más característico ha sido el nacimiento de múltiples licencias gratuitas en las que se otorga al usuario la libertad de modificar y redistribuir el software, en contra de otras licencias como el Copyright. La licencia más popular de estas características es la GNU General Public License, originada a partir del desarrollo del sistema operativo GNU en 1989 y cuya última versión data de 1991, aunque su uso se ha generalizado recientemente con el auge del movimiento de software libre. La mayoría de los programas libres se agrupan bajo la GPL. La Free Software Foundation fue creada para aglutinar muchos de estos Logo de la FSF proyectos bajo la filosofía de impulsar los derechos de los usuarios a usar, estudiar, copiar, modificar y redistribuir programas147. Estas libertades tienen como precondición el acceso al código fuente del programa, normalmente el secreto mejor guardado de todo software propietario. La clave del éxito de la GPL es que se hereda, es decir, cada nuevo programa creado a partir de código bajo GPL deberá también tener este tipo de licencia, de manera que se protege contra la adquisición por parte de cualquier persona o entidad, representando la cara opuesta al mundo de las patentes y el Copyright. Uno de los ejemplos más famosos y quizás el mayor representante del movimiento del software libre es GNU/Linux y su Kernel (núcleo), sobre el que se basan las diferentes versiones del sistema operativo. El proyecto se inició en 1991 y ha continuado su desarrollo con las contribuciones de miles de programadores hasta el día de hoy. Realmente, nadie debería ser propietario o dueño de tal creación, nacida a partir de aportaciones libres y gratuitas, pero un estudio de 2004 aseguraba que el kernel de Linux infringía 283 patentes148. Amenazas como estas se ciernen sobre un tipo de movimiento definido que por encima de todo quiere libertad. Se trata de una libertad entendida desde la igualdad en el plano tecnológico, económico, social y cultural sobre un modelo que impone la diferenciación, la desigualdad, la exclusión y la marginación de muchos colectivos y pueblos149. Y es que se estima que la implantación en España del software libre y abierto en la 147 http://en.wikipedia.org/wiki/GNU_General_Public_License 148 http://www.msnbc.msn.com/id/5578247/site/newsweek/ 149 http://www.rebelion.org/noticia.php?id=27816 81 administración pública150 supondría un ahorro de 3000 millones de euros en dos años. Es tal el desarrollo alcanzado por este tipo de programas que llegan a superar al resto en seguridad, completitud, facilidad de uso y, por supuesto, en precio. Muchos países y regiones han apoyado activamente y/o adoptado el software libre en sus administraciones: Brasil, Venezuela, India, China, Francia, Alemania, Finlandia, Noruega, Nigeria, Sudáfrica... y la lista crece. El software libre se conforma como la vía más ágil y barata, y única en muchos casos, a la que los países menos desarrollados pueden acceder para intentar alcanzar un grado de innovación tecnológica que les permita ser equiparables al resto. Por su parte, muchas de las grandes empresas (IBM, Oracle, Netscape, Sun Microsystems, Hewlett Packard, Dell, Silicon Graphics...) han sabido aprovechar el auge del software libre para sacar beneficio a través de los servicios y aplicaciones desarrolladas a partir de este tipo de programas, aprovechando la colaboración gratuita de cientos de programadores y siempre respetando la clausula de no apropiación. Como ejemplo, el programa Apache, libre, aunque desarrollado con el apoyo de IBM, se encarga de administrar dos tercios de los servidores que conforman el World Wide Web151. Otras empresas como Microsoft continúan empeñadas en poner trabas y boicotear toda actividad relacionada con el software libre. Con un control del 95 por 100 de los ordenadores personales a nivel mundial152, es normal que la aparición de un sistema más estable y versátil como Linux, al alcance de cualquiera y con un entorno (KDE) más atractivo que Windows cause cierta irritación. El gigante ha optado por patentar todo lo patentable (como es el caso del scroll del ratón o el doble click) aunque todavía no ha lanzado ninguna ofensiva legal masiva, si bien no sería algo inhóspito en absoluto. Está en manos de las nuevas generaciones de programadores que la tendencia a crear un software libre y no monopolístico siga al alza. Como potenciador del desarrollo, este tipo de software dota a la tarea del programador de un aspecto más social al tiempo que impulsa un modelo cuyo principal objetivo es el progreso, en vez de la acumulación de dinero por parte de unas pocas compañías tal y como la industria del software funciona actualmente. Por otro lado, la demanda de programas seguirá existiendo ya que la mayoría se elaboran a medida por lo que no faltará trabajo para los informáticos. Con todo, la filosofía del software libre se recoge en una sola frase: “Software libre para una sociedad libre” 150La propuesta fue rechazada en el Congreso de los Diputados el 15 de Diciembre de 2005 por los grupos mayoritarios. 151 http://www.rebelion.org/noticia.php?id=10741 152 http://www.rebelion.org/cibercensura/stallman2230403.htm 82