ALGORITMOS Y PROGRAMACIÓN DE COMPUTADORES Utilizando Visual Basic Por: William Alvarez-Montoya Universidad Nacional de Colombia Sede Medellín Facultad de Minas Escuela de Sistemas 1 http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ Capítulo 1 Evolución y Desarrollo de los computadores «Evolution». Fuente: R.B. Muhama.( Kent State University, 2004,.http://www.cs.kent.edu/~rmuhamma/),. Los objetivos básicos que se pretenden lograr con este texto son los siguientes: • Desarrollar destrezas lógico-abstractas para conceptualizar e implementar la solución de problemas utilizando un computador. • Propender por el aprendizaje de técnicas que permitan y faciliten la representación algorítmica, en el proceso de la solución de problemas, aunando los enfoques algorítmico y ecuacional. • Incentivar el aprendizaje de un entorno gráfico, visual e interactivo de programación de computadores. En tal sentido se empleará la Metodología de Solución de Problemas (“Aprendizaje vía ejemplos”), en la cual se mezcla el enfoque ecuacional (modelación matemática) y el enfoque algorítmico. 1.1 ENFOQUE DEL CURSO Mediante el enfoque ecuacional se modela una parte d ela realidad, generalmente vista comosituación o problema a resolver, empleando el Álgebra y las matemáticas más avanzadas para construir un modelo abstracto-lógico-matemático que representa esa parte de la realida, o ese problema a solucionar. El enfoque algorítmico, implementado por medio de computadores digitales, ha surgido desde mediado del siglo XX como una filosofía y una herramienta que permite abordar y resolver problemas complejos. La sinergia entre los dos enfoques ha catapultado más y mejores soluciones de problemas en prácticamente toda disciplina del saber humano, especialmente en áreas técnicas y de ingeniería. Tradicionalmente este curso en la Fcultad de Minas se ha organizado en dos sesiones –o clases, de 2 horas- de trabajo presencial en la semana. En una de las sesiones se explican los aspectos conceptuales y teóricos de los Algoritmos y la Programación de Computadores. Y en __________________________________________________________________________________ [email protected] Página 2 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ la otra sesión utiliza el computador para resolver problemas en los cuales se aplican los conceptos y la teoría vistos en la sesión teórica. De ahí, que esta documentación incluya ambos niveles de complejidad de un curso orientado al nivel básico del pregrado en Ingeniería (unas 10 ingenierías, excluyéndose a la Ingeniería de Sistemas, a la Ingeniería de Control, y a otras de reciente creación como la Ingeniería Biológica y la Ingeniería Física). Este tipo de trabajo –teórtio y práctico- le exije al estudiante, de entrada, unas estrategias diferentes de estudio de la asignatura. La recomendación que normalmente se la hace a los estudiantes (entre 500 y 600 estudiantes por semestre, con cerca de un 40% mujeres) es muy simple: estudiar de manera frecuente y sistemática el material de cada módulo –sesión o clase- y repasarlo asiduamente; interactuar, adicionalmente, con el computador , por lo menos una sesión adicional cada semana, para lograr un refuerzo extra en la aprehensión de los conceptos, estrategias y técnicas. En este curso hay una dificultad mayor, para abordarlo de forma eficiente, por cuanto se avanza muy rápidamente en la estructura de contenidos; de suerte, que cada semana es necesario estudiar los temas que se explican en cada clase teórica y en cada clase práctica. En este sentido, es muy conveniente que los (las) estudiantes se apersonen de las técnicas eficientes de estudio que le permitirán realizar su labor de forma más eficiente, no sólo en esta asignatura sino también en las demás asignaturas de su carrera, lo cual -igualmenteredundaría en un mejor desempeńo en su futura actividad profesional. Saber estudiar de manera eficiente es una habilidad que toda persona puede desarrollar y hecer parte de su bagaje de conocimientos, aptitudes y actitudes. El material del curso se organiza en tres partes, incluyendo cada una teoría y práctica: • La primera parte consta de 6 semanas, 6 sesiones teóricas y 6 sesiones prácticas. Al final de estas seis semanas se hace la primera evaluación consistente en un examen escrito individual y en un examen práctico frente al computador. No se hace una presentación rigurosamente matemática de los algoritmos y la programación sino que se aborda de una forma más omenos intuitiva toda la temática teórico-práctica. Los temas incluyen: (1) una presentación general del curso, de la secuencia de contenidos, de la metodología, de la evaluación y de la bibliogrfía y demás referencias a emplear; (2) un vistazo general del desarrollo histórico de los computadores, enmarcando el concepto de algoritmo y las estructuras fundamentales mediante las cules se construyen algoritmos secuenciales: secuencia, selección lógica, iteración; (3) los conceptos de acumulador y contador, y sus aplicaciones; (4) con los conceptos anteriores se efectúan algunas aplicaciones sencillas como los cálculos de series, de sumatorias y productorias, de ciertas medidas estadísticas, de métodos de integración numérica y de métodos para la obtención de raíces de funciones no-lineales; (5) una introducción a las gráficas complementa la teoría explicada; (6) en la parte práctica se inicia con el concepto entorno gráfico, visual e interactivo de programación, basado en el concepto de proyecto Visual Basic, y se elaboran sencillas aplicaciones que constan de su interfaz gráfica de usuario con la programación respectiva; (7) lo concerniente al lenguaje de programación incluye el manejo de variables y constantes, tipos de datos, operadores, expresiones, tipos de __________________________________________________________________________________ [email protected] Página 3 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ instrucciones, funciones de librería estándar, controles básicos y eventos y procedimientos asociados a dichos controles. • En la segunda parte se introducen y se manejan los conceptos de arreglo, de archivos de datos, subprogramas definidos por el usuario, y de datos definidos pro el usuario. Para la interfaz gráfica de usuario se trabaja con menú tipo barra, módulos d eprogramas y formularios múltiples. Las aplicaciones con las cuales se ilustran los conceptos teóricos incluyen: ordenamiento y búsqueda; operaciones con vectores, matrices y archivos de datos. Esta parte consta de 5 semanas, al final de las cueles se hace la segunda evaluación teórico-práctica. • En la tercera parte se aplican los conceptos y técnicas trabajados en las dos partes previas en la solución de problemas tales como: ecuaciones lineales simultánes, método de Gauss y de Jacobi; el cálculo de la Inversa, método de Gauss-Jordan; el ajuste de curvas por el método de mínimos cuadrados; y una sencilla miscelánea de otras aplicaciones, con fines meramente descripticos, para enfatizar el uso de los algoritmos y la programación en la solución de problemas prácticos en áreas de ingeniería. Estas últimas aplicaciones pueden variar semestre a semestre dependiendo de la disponibilidad de soluciones que el docente tenga a la mano. Los problemas de ejemplo están a nivel de las ciencias básicas de ingeniería, por cuanto el grueso de los estudiantes pertenecen a los primeros semestres (del 1 al 3) en las carreras de ingeniería en las cuales esta asignatura es obligaroria en las currícula. Por lo cual los prerrequisitos son mínimos y corresponden a los básicos del Álgebra y la Aritmética, la geometria, la física, la química, el Álgebra Lineal y el cálculo de los primeros semestres universitarios. Es de suma importancia para un estudiante universitario el apersonarse de las técnicas eficientes de estudio. Semestre a semestre se observa –y las estadísticas- lo corroboran que los porcentajes de repitencia de asignaturas, pérdida del semestre, y de deserción son relativamente altos1. Aunque en la solución de esta problemática intervienen muchos factores, hay una categoría de factores sobre la cual el estudiante –como individuo- sí puede tener un alto grado de control: mejorar las técnicas de estudio. Las técnicas básicas incluyen2: • • • • • • • • Actitud proactiva para asistir a clases. Saber concentrarse en clase y toma de apuntes eficaces que ayuden efectiamente al aprendizaje. Estudio frecuente y sistemático extraclase. Saber preparar exámenes, trabajos y exposiciones. Sabia administración del tiempo. Métodos de lectura rápida y ultrarrápida. Métodos para mejorar la memoria. Nutrición adecuada para el aprendizaje. 0 1 2 Ver las estadísticas sobre el tema presentada por las instancias pertinentes en unalmed. Estos problemas han suscitado continuios dabtes, véase, por ejemplo: “Problemas curriculares y pedagógicos del pregrado en la Universidad Nacional de Colombia”, Serie de documentos de trabajo No. 3, Bogotá, 2003.. Véase, por ejemplo, “Study Skills for Science & Technology Students”, Brunel University, 2005, http://www.brunel.ac.uk/~mastmmg. __________________________________________________________________________________ [email protected] Página 4 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ • • Saber identificar y controlar de manera inteligente los distractores que impiden centrarse en el estudio (amistades y grupos de interés demasiado absorventes, drogas, alcoholismo, tabaquismo, embarazos en las jóvenes) que inciden negativamente sobre el desempeño académico de calidad en amplios grupos de estudiantes. Aprovechar los recursos de acompañamiento, asesoría, prevención y apoyo que brinda la universidad. El material del curso está disponible en la página web principal en la Escuela de Sistemas, http://pisis.unalmed.edu.co/cursos/algoritmos/, y también en sendas páginas que el suscrito mantiene para tal efecto: http://www.unalmed.edu.co/~walvarem, http://xue.unalmed.edu.co/~walvarem. Este material consta de: diapositivas de las clases teóricas, guías de prácticas, problemas propuestos, bibliografía, referencias y enlaces, problemas resueltos, exámenes resueltos, textos de apoyo, tanto en formato HTMl como PDF y ZIP. 1.2 IMPACTO DE LOS COMPUTADORES Ningún invento ha cambiado más profundamente la vida moderna que el computador. Para bien o para mal, los computadores se han infiltrado en cada aspecto de nuestra sociedad. Actualmente, los computadores hacen mucho más que simplemente calcular: por ejemplo, las cajas registradoras de los supermercados están dotadas con rastreadores ópticos y tecnología de código de barras, y calculan el importe de las compras mientras actualizan el inventario; las centrales telefónicas computarizadas manejan millones de llamadas diariamente, permitiendo las comunicaciones locales, nacionales e internacionales; los cajeros automáticos facilitan y controlan las transacciones financieras, virtualmente desde cualquier lugar del mundo; los vehículos de transporte (automóviles, trenes, aviones) se basan en la electrónica y en multitud de microprocesadores que pemiten el control y la programación; en las empresas, máquinas de toda índole realizan desde las labores más sencillas hasta las más complejas, desde el diseño de productos y servicios hasta la fabricación automática de partes y de bienes terminados; y, virtualmente, todo electrodoméstico moderno está dotado de microprocesadores que permiten su control y programabilidad. Pero, ¿de dónde ha surgido toda esta tecnología informática, cuáles son sus implicaciones y hacia dónde está jalonando a las organizaciones y a los países? Para entender en profundidad y apreciar los múltiples efectos que los computadores y sus tecnologías conexas tienen en nuestras vidas y cuáles son las megatendecias que ellos están moldeando hacia el próximo futuro, es preciso estudiar y entender cuál ha sido su evolución, y quiénes son los hombres y mujeres que han determinado con sus ideas e invenciones los más sobresalientes logros. __________________________________________________________________________________ [email protected] Página 5 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ 1.3 DISPOSITIVOS DE CÓMPUTO DE LA ANTIGUEDAD Desde la más remota antigüedad cada cultura ha desarrollado instrumentos de cálculo para efectuar operaciones de la vida práctica y de los negocios. Se presume que el sistema de cómputo utilizado primero fue el de la cuenta con los dedos (de ahí la palabra dígito). En las escuelas de la antigua Roma, por ejemplo, los escolares aprendían a efectuar las operariones aritméticas básicas con los dedos, y aún a extraer raíz cuadrada El ábaco, también llamado soroban por los japoneses, que emergió hace unos 5,000 años en el Asia Menor (se asegura que pudo haber sido primero en China, desde donde fue llevado a Mesopotamia por los comerciantes) y que se sigue empleando actualmente, se considera como el primer computador. Este artefacto permite, a quien lo usa, efectuar cálculos aritméticos por medio de un sistema de aros deslizantes ensamblados en un clavijero. Desde la antigüedad, los comerciantes han empleado el ábaco para efectuar las transacciones rutinarias de los negocios. Suele consistir en un tablero o cuadro con alambres o surcos paralelos entre sí en los que se mueven bolas o cuentas. El ábaco moderno está compuesto de un marco de madera o bastidor con cuentas en alambres paralelos y de un travesaño perpendicular a los alambres que divide las cuentas en dos grupos. Cada columna o barra — es decir, cada alambre— representa un lugar en el sistema decimal. La columna más a la derecha son las unidades, la que está a su izquierda son las decenas y así sucesivamente. En cada columna hay cinco cuentas por debajo del travesaño, cada una de las cuales representa una unidad; y dos por encima del travesaño, que representan cinco unidades cada una. Por ejemplo, en la columna de las decenas cada una de las cinco representa diez y cada una de las dos representa 50. Las cuentas que se han de incluir como parte de un número se colocan junto al travesaño. El ábaco fue utilizado tanto por las civilizaciones precolombinas y mediterráneas como en el Lejano Oriente. En la antigua Roma, era un tablero de cera cubierta con arena, una tabla rayada o un tablero o tabla con surcos. A finales de la edad media los mongoles introdujeron el ábaco en Rusia, que provenía de los chinos y los tártaros, y que todavía hoy se utiliza en el pequeño comercio. En China y Japón, también hoy muy a menudo lo utilizan los hombres de negocios y contables. Los usuarios expertos son capaces de hacer operaciones más rápido que con una calculadora electrónica. En las antiguas culturas egipcias y mesopotámica, después en las culturas griega y romana, se emplearon algunos otros dispositivos de cálculo, como el odómetro ideado para llevar las cuentas del recorrido de los carruajes. En las antiguas culturas celtas se utilizaban varas de madera con muescas para llevar la cuenta de las transacciones (a trueque). Y, aunque los Incas, en Suramérica, carecían de lenguaje escrito, idearon un instrumento de cálculo más sofisticado: el quipus, juegos de cintas de diferentes colores anudados según un sistema codificado, que les permitía llevar la __________________________________________________________________________________ [email protected] Página 6 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ contabilidad; también los registros de tropas, suministros, datos de población e inventarios generales se llevaban a cabo mediante los quipus. Sin embargo, para poder utilizar un sistema o método de cómputo, ayudado por dispositivos de cómputo, se requiere comprender y manejar un Sistema Numérico, basado en un conjunto de signos o símbolos (un Contexto Simbólico), o Sistema de Numeración. Sistema numérico, en matemáticas, varios sistemas de notación que se han usado o se usan para representar cantidades abstractas denominadas números. Un sistema numérico está definido por la base que utiliza. La base es el número de símbolos diferentes, o guarismos, necesarios para representar un número cualquiera, de los infinitos posibles, en el sistema. Por ejemplo, el sistema decimal, utilizado hoy de forma universal (con la excepción de los ordenadores o computadoras), necesita diez símbolos diferentes o dígitos para representar un número y es, por tanto, un sistema numérico en base 10. A lo largo de la historia se han usado multitud de sistemas numéricos. En realidad, cualquier número mayor que 1 puede ser utilizado como base. Algunas civilizaciones usaban sistemas basados en los números 3, 4 o 5. Los babilonios utilizaron el sistema sexagesimal, basado en el número 60, y los romanos (en cierta aplicaciones) el sistema duodecimal, con el número 12 como base. Los mayas utilizaban el sistema vigesimal, basado en el número 20. El sistema binario, o en base 2, fue usado por algunas tribus antiguas y junto con el sistema en base 16 se usa en la actualidad en los ordenadores o computadoras. La tabla siguiente muestra una comparación de algunis sistemas de signos de las culturas antiguas: Signos antiguos de numeración (Ilustración de Microsoft, 1998-2000. __________________________________________________________________________________ [email protected] Página 7 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ Valores posicionales La posición de una cifra indica el valor de dicha cifra en función de los valores exponenciales de la base. En el sistema decimal, la cantidad representada por uno de los diez dígitos utilizados —0, 1, 2, 3, 4, 5, 6, 7, 8 y 9— depende de su posición en el número completo. Por ejemplo, el número 3.098.323 es la representación de (3 × 106) + (0 × 105) + (9 × 104) + (8 × 103) + (3 × 102) + (2 × 101) + (3 × 100, o 3 × 1). El primer 3 (empezando por la derecha) representa 3 unidades; el segundo, 300 unidades y el tercero, 3 millones de unidades. Dos dígitos —0 y 1— son suficientes para representar un número en el sistema binario; 6 cifras —0, 1, 2, 3, 4 y 5— se necesitan para representar un número en el sistema sextil y 16 guarismos —0, 1, 2, 3, 4, 5, 6, 7, 8, 9, A (diez), B (once), C (doce) … y F (quince)— son necesarios en el sistema hexadecimal. El número 30.155 en el sistema en base 6 es igual al número (3 × 64) + (0 × 63) + (1 × 62) + (5 × 61) + (5 × 60) = 3.959 en el sistema decimal. El número 2EF del sistema hexadecimal es el número (2 × 162) + (14 × 161) + (15 × 160) = 751 en el sistema decimal. Para convertir un número n dado en base 10 a un número en base b, se divide (en el sistema decimal) n por b, el cociente se divide de nuevo por b y así sucesivamente hasta que se obtenga un cociente cero. Los restos sucesivos de esta serie de divisiones son los dígitos que expresan n en base b (la base se suele escribir como un subíndice del número). A medida que la base sea mayor, se necesitan más guarismos, pero la representación de un número requiere menos dígitos. Sistema binario El sistema binario desempeña un importante papel en la tecnología de los ordenadores. Los primeros 20 números en el sistema en base 2 son 1, 10, 11, 100, 101, 110, 111, 1000, 1001, 1010, 1011, 1100, 1101, 1110, 1111, 10000, 10001, 10010, 10011 y 10100. Cualquier número se puede representar en el sistema binario, como suma de varias potencias de dos. Por ejemplo, el número 10101101 representa, empezando por la derecha, (1 × 20) + (0 × 21) + (1 × 22) + (1 × 23) + (0 × 24) + (1 × 25) + (0 × 26) + (1 × 27) = 173. Las operaciones aritméticas con números en base 2 son muy sencillas. Las reglas básicas son: 1 + 1 = 10 y 1 × 1 = 1. El cero cumple las mismas propiedades que en el sistema decimal: 1 × 0 = 0 y 1 + 0 = 1. La adición, sustracción y multiplicación se realizan de manera similar a las del sistema decimal: __________________________________________________________________________________ [email protected] Página 8 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ Puesto que sólo se necesitan dos dígitos (o bits), el sistema binario se utiliza en los ordenadores o computadoras. Un número binario cualquiera se puede representar, por ejemplo, con las distintas posiciones de una serie de interruptores. La posición "encendido" corresponde al 1, y "apagado" al 0. Además de interruptores, también se pueden utilizar puntos imantados en una cinta magnética o disco: un punto imantado representa al dígito 1, y la ausencia de un punto imantado es el dígito 0. Los biestables —dispositivos electrónicos con sólo dos posibles valores de voltaje a la salida y que pueden saltar de un estado al otro mediante una señal externa— también se pueden utilizar para representar números binarios. Los circuitos lógicos realizan operaciones con números en base 2. La conversión de números decimales a binarios para hacer cálculos, y de números binarios a decimales para su presentación, se realizan electrónicamente. En la siguiente figura se comparan los sistemas con base 10 y con base 2: Comparación de sistemas numéricos (Ilustración de Microsoft, 1998-2000). Numeración Sistema de signos o símbolos utilizados para expresar los números. Las primeras formas de notación numérica eran simplemente grupos de líneas rectas, verticales u horizontales, cada una de ellas representando al número 1. Este sistema era engorroso para manejar grandes números. Ya en el año 3400 a.C. en Egipto y en el 3000 a.C. en Mesopotamia se empezó a utilizar un símbolo especial para el número el 10. La inclusión de este segundo símbolo hizo __________________________________________________________________________________ [email protected] Página 9 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ posible expresar el número 11 con dos símbolos en vez de 11 símbolos unitarios, y el número 99 con 18 símbolos en vez de 99. Las numeraciones posteriores introdujeron símbolos adicionales para cierto número entre el 1 el 10, generalmente el 4 o el 5, y más símbolos para números mayores que 10. En la notación cuneiforme de Babilonia el símbolo utilizado para el 1 era también usado para representar el 60 y sus potencias; el valor de un símbolo venía dado por su contexto. Este sistema tenía sentido desde el punto de vista matemático, pues 600= 1, 601= 60, y 602= 3.600. La numeración jeroglífica egipcia tenía símbolos para el 10, 100, 1.000 y 10.000. En la Grecia antigua coexistieron dos sistemas paralelos de numeración. El primero de ellos estaba basado en las iniciales de los nombres de los números: el número 5 se indicaba con la letra p (pi); el 10 con la letra d (delta); el 100 con la letra H (eta); el 1.000 con la letra c (chi) y el 10.000 con la letra µ (mu). En el segundo sistema, utilizado por primera vez hacia el tercer siglo a.C., se usaban todas las letras del alfabeto griego más tres letras tomadas del alfabeto fenicio como guarismos. Las nueve primeras letras del alfabeto griego eran las unidades del 1 al 9, de la novena a la decimoctava eran las decenas del 10 al 90 y las otras nueve letras eran los centenares del 100 al 900. Los millares se indicaban colocando una raya vertical a la izquierda de la correspondiente letra, y las decenas de millar colocando la letra pertinente sobre la letra M. Este segundo sistema griego de numeración tenía la ventaja de que números grandes podían ser expresados con un pequeño número de símbolos, pero tenía la desventaja de tener que saberse de memoria un total de 27 símbolos. Numeración romana El sistema de símbolos para representar los números creado por los romanos tuvo el mérito de ser capaz de expresar todos los números del 1 al 1.000.000 utilizando sólo 7 símbolos: I para el 1, V para el 5, X para el 10, L para el 50, C para el 100, D para el 500 y M para el 1.000. Los números romanos se leen de izquierda a derecha. Las letras que representan las cantidades mayores se colocan a la izquierda, a continuación se colocan las letras que representan las siguientes cantidades y así sucesivamente. Los valores de los símbolos suelen sumarse, excepto cuando una letra se coloca a la izquierda de otra que representa una cantidad mayor, en cuyo caso la primera se resta de la segunda. Por ejemplo, LX = 60, XIX = 19 y MMCIII = 2.103. La letra M con una pequeña raya horizontal encima representa 1.000.000 —una pequeña raya horizontal colocada sobre un símbolo multiplica su valor por mil. De esta manera, en teoría, es posible, utilizando un número infinito de rayas, expresar todos los números del 1 al infinito. Sin embargo, en la práctica, se usa sólo una raya y casi nunca se utilizan más de dos. Los números romanos todavía se utilizan en nuestros días, más de 2.000 años después de su aparición, generalmente con fines decorativos. La numeración romana tiene el inconveniente de no ser adecuada para realizar cálculos escritos con rapidez, y mucho menos para efectuar cálculos complejos o representar fórmulas -igualmente complejas- en Ingeniería. Esta es, quizás, una de las principales razones por las cuales la ingeniería romana no progreso lo suficiente como sí lo ha hecho la ingeniería occidental que utiliza el sistema numérico con base 10, o Numeración arábiga. __________________________________________________________________________________ [email protected] Página 10 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ Numeración arábiga El sistema corriente de notación numérica que es utilizado hoy en casi todo el mundo es la numeración arábiga. Este sistema fue desarrollado primero por los hindúes hacia el siglo III a.C. En aquella época, los guarismos 1, 4 y 6 se escribían de forma casi igual a los que hoy se usan. La numeración hindú pasó al mundo árabe alrededor del siglo VII u VIII d.C. La primera referencia escrita del uso de este tipo de numeración en Europa data del año 976. La innovación más importante del sistema arábigo de numeración fue el uso de la notación posicional, en la que los símbolos individuales cambian su valor según su posición en el número escrito. Sólo es posible utilizar la notación posicional si existe un símbolo para el cero. El guarismo 0 permite distinguir entre 11, 101 y 1.001 sin tener que utilizar símbolos adicionales. Además, todos los números se pueden expresar utilizando sólo diez guarismos, del 1 al 9 más el 0. La notación posicional simplifica todos los tipos de cálculo numérico por escrito. Y este es el sistema de numeración que se estandarizó en el mundo. 1.4 DISPOSITIVOS DE CÓMPUTO EN EL MEDIOEVO En materia de dispositivos de cómputo, pocos fueron los avances desde el siglo 5 al siglo 16, especialmente en el periodo llamado Edad Media, caracterizado por un craso oscurantismo. Sin embargo, hacia mediados del siglo 15, Johan Gutemberg (c.1400-1468) inventó la imprenta de tipos móviles, que al combinarse con el uso del lápiz y el papel, particularmente en Europa, el ábaco y esos otros dispositivos perdieron su importancia. Sólo hasta el siglo 17 se dió el siguiente avance significativo en relación con los dispositivos de cálculo. En 1642, Blaise Pascal (1623-1662), hijo de un recaudador francés de impuestos, inventó a sus 18 años una sumadora mecánica (basada en ruedas dentadas) para ayudarle a su padre en las tareas de los cálculos contables. Dicha sumadora, también llamada Pascalina, consistía de una caja rectangular de bronce en la cual se ensamblaban ocho ruedas movibles para sumar números de hasta ocho cifras. El dispositivo de Pascal empleaba la base numérica 10 para efectuar las sumas. Por ejemplo, cuando la primera de las ruedas avanzaba 10 ranuras, o una vuelta completa, la rueda de al lado - que representaba las decenas - sólo avanzaba una ranura. Cuando la rueda de las decenas avanzaba una vuelta completa, la rueda de las centenas se movía un lugar (una ranura); y así sucesivamente. El principal inconveniente de la Pascalina era, por supuesto, que sólo efectuaba sumas. En 1694, el Matemático y Filósofo alemán, Gottfried Wilhem von Leibniz (1646-1716), mejoró la Pascalina al inventar una máquina que también podía efectuar multiplicaciones. Como su predecesor, el dispositivo mecánico de Leibniz funcionaba sobre la base de un sistema de ruedas dentadas y clavijas. En parte por el estudio de las notas y dibujos originales de Pascal, Leibniz fué capaz de perfeccionar la Pascalina. El núcleo de la máquina multiplicadora de __________________________________________________________________________________ [email protected] Página 11 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ Leibniz consistía en el diseño de un tambor dentado que giraba paso a paso, y el cual ofrecía una versión elongada de la simple rueda dentada. 1.5 DISPOSITIVOS DE CÓMPUTO EN LA ERA INDUSTRIAL Sólo fué hasta 1820, sin embargo, que las calculadoras mecánicas ganaron popularidad y un uso más amplio. Charles Xavier Thomas de Colmar, un francés, inventó una máquina que podía efectuar las cuatro operaciones aritméticas básicas. La calculadora mecánica de Colmar, El arithómetro, presentaba un enfoque más práctico para calcular, porque podía sumar, restar, multiplicar y dividir. Con dicha mejorada versatilidad, El arithómetro fué ampliamente usado hasta la Primera Guerra Mundial. Aunque inventores posteriores refinaron el dispositivo de Colmar, El arithómetro -juntamente con los dispositivos ingeniados por Pascal y Leibniz, ayudó a perfilar la etapa del procesamiento mecánico de datos. También en el siglo XIX, Charles Babbage, en Inglaterra, propuso el diseño de dos dispositivos analíticos “La máquina diferencial” y “La máquina análitica”. Esta última se considera tradicionalmente la precursora de los computadores actuales. Las rutinas de programación de esta máquina las ideó Ada Augusta Byron, quien es considerada la primera persona en programar un computador. Hacia 1890 el gobierno de Estados Unidos, USA, contrató el procesamiento de la información del censo con Herman Hollerith quien ideó un tipo de másquina electromecánica, basada en técnicas de tarjeta perforada, que hizo mucho más eficientemente los cálculos y en muchísimo menos tiempo. Esto marcó el inicio de toda una industria de procesamiento de datos, especialmente con la empresa que Hollerithn y sus asociados fundaron, la que después se cpnvirtió en IBM (International Business Machines). 1.6 DISPOSITIVOS DE CÓMPUTO EN EL SIGLO XX En el siglo 20 muchas otras personas hicieron avances significativos en el desarrollo del proceso de datos por medio de máquinas. Vannevar Bush (1890-1974) desarrolló una calculadora para solucionar ecuaciones diferenciales, en 1931. La máquina podía resolver ecuaciones diferenciales tan complejas, que dejó asombrados tanto a científicos como a matemáticos. Sin embargo, dicha máquina era demasiado engorrosa pues requería cientos de ruedas y poleas para representar los números y sus diversas relaciones. Con el fín de facilitar las cosas, John V. Atanasoff (nacido en 1903), un profesor del Iowa State College (llamado ahora Iowa State University) y un estudiante de postgrado que lo asistía, Clifford Berry, envisionaron un computador electrónico que aplicaba el Álgebra de Bool en su circuitería. Este enfoque se basaba en los trabajos del matemático inglés del siglo 19 George Boole (1815-1864), quien diseñó el sistema binario del algebra y de la lógica simbólica, estableciendo que cualquier ecuación o relación matemática puede dar un resultado que sea falso o verdadero (de ahí, su naturaleza binaria). Extendiendo este concepto a los circuitos electrónicos en la forma apagado/encendido (on/off), Atanasoff y Berry desarrollaron el primer computador electrónico alrededor de 1940. Su proyecto, no obstante, se quedó sin apoyo financiero y dicho aporte tecnológico fue __________________________________________________________________________________ [email protected] Página 12 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ rápidamente sobrepasado por otros proyectos similares de otros grupos de científicos e ingenieros. Se había iniciado la etapa electrónica del proceso de datos, cuyos desarrollos aún continúan. Todos estos aportes han convergido para estructurar la máquina denominada computador cuyos componentes lógicos internos se esquematizan en esta figura. Surgió también la Informática o Computación, conjunto de conocimientos científicos y de técnicas que hacen posible el tratamiento automático de la información por medio de computadoras. La informática combina los aspectos teóricos y prácticos de la ingeniería, electrónica, teoría de la información, matemáticas, lógica y comportamiento humano. Los aspectos de la informática cubren desde la programación y la arquitectura informática hasta la inteligencia artificial y la robótica. Las industrias de Hardware (componentes físicos, microprocesadores) y de Software (programas) se han desarrollado en forma acelerada, de tal suerte que no existe ningún ámbito empresarial, gubernamental, social, familiar y profesional exento de la influencia de estas tecnologías. 1.7 DISEÑO DEL COMPUTADOR ACTUAL: LAS IDEAS DE ADA BYRON Y CHARLES BABBAGE Las ideas y artefactos originales de los computadores, tal y como se les conoce hoy día, sin embargo, corresponden a un profesor inglés de matemáticas, Charles Babbage (1791-1871) y a su asistente Augusta Ada King, Condesa de LoveLace. Desencantado Babbage por los muchos errores que encontró en los cálculos efectuados por la Royal Astronomical Society, (Real Sociedad de Astronomía, con sede en Londres) Babbage declaró, "Ruego a Dios que estos cálculos no hayan sido hechos en la niebla!" Con tales palabras, se inició la era del del proceso automático de datos y la de los computadores. Hacia el año 1812, Babbage se dió cuenta de la armonía natural entre las máquinas y los matemáticos: las máquinas son mejores efectuando tareas repetidamente sin errores; mientras que los matemáticos, particularmente en la generación de tablas matemáticas (como las astronómicas), a menudo requieren la simple repetición de unos pasos fijos, tarea que deviene en monótona y muy propensa a cometer errores. El problema se centraba en cómo obtener la aplicación de la habilidad de las máquinas para satisfacer las necesidades de los matemáticos. Uno de los primeros intentos de Babbage para resolver dicho problema se dió en 1822 cuando él propuso el diseño de una máquina para resolver ecuaciones diferenciales, llamada la Máquina Diferencial. Después de trabajar por 10 años en la Máquina Diferencial, Babbage repentinamente se inspiró para iniciar la construcción del primer computador de propósito general, el cual fue bautizado como la Máquina Analítica. La asistente de Babbage, Augusta Ada King, Countess of Lovelace (1815-1852) e hija del poeta inglés Lord Byron, aportó conceptos fundamentales en el diseño de esta máquina. Ada fué una de las pocas personas que entendió cabalmente la idea visionaria del diseño de Babbage, tan bien como el propio Babbage; Augusta Ada ayudó a revisar los planos, aseguró el __________________________________________________________________________________ [email protected] Página 13 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ financiamiento por parte del gobierno británico, y divulgó las especificaciones de la Máquina Analítica al gran público. Igualmente, el fino entendimiento que Lady Lovelace tenía del diseño del artefacto le permitió a ella crear las rutinas de instrucciones que habrían de ejecutarse dentro del computador, consagrándose -así- como la primera mujer programadora de computadores. Hacia finales de la década de 1970's, el Departamento de Defensa de U.S.A. nombró a un lenguaje de programación de computadores como ADA en honor de Augusta Ada Byron. El artefacto impulsado a vapor de Babbage, aunque nunca se construyó, puede parecer primitivo ante los estándares actuales. Sin embargo, su diseño contiene los elementos y conceptos básicos de los modernos computadores de propósito general, y constituye -en sí mismo- todo un rompimiento de paradigmas; de hecho, Charles Babbage con su Máquina Analítica y Augusta Ada con sus rutinas de programas conforman los pioneros y visionarios de la actual tecnología de computadores. Babbage tomó la idea de las tarjetas perforadas, para codificar las instrucciones de máquina, del telar puesto en operación en 1820 y denominado así en honor a su inventor, el francés, Joseph-Marie Jacquard (1752-1834). El telar de Jacquard utilizaba tarjetas perforadas para controlar el diseño de la trama del tejido. El telar de Jackard opera de la manera siguiente: las tarje tarjetas se perforan estratégicamente y se acomodan en cierta secuencia para indicar un diseño de tejido en particular. Charles Babbage quiso aplicar el concepto de las tarjetas perforadas del telar de Jackard en su motor analítico. En 1843 Lady Ada Augusta Lovelace sugirió la idea de que las tarjetas perforadas pudieran adaptarse de manera que propiciaran que el motor de Babbage repitiera ciertas operaciones. Debido a esta sugerencia algunas personas consideran a Lady Lovelace la primera programadora. La Máquina diferencial Charles Babbage diseñó el ingenio de diferencias llamado posteriormente Máquina diferencial pensando en crear una máquina que generase tablas matemáticas y que automatizase los pasos lógicos y mecámicos del cálculo, por demás engorroso, monótono y muy sujeto a errores, al abordarse manualmente. Este artefacto nunca se construyó. En su diseño original estaba impulsada a vapor y era tan enorme como una locomotora, la Máquina Diferencial tendría un programa almacenado y podría efectuar cálculos e imprimir los resultados automáticamente. Aunque eficiente, la Máquina diferencial era computacionalmente limitada. Además de sumar y __________________________________________________________________________________ [email protected] Página 14 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ restar, podía resolver una serie de ecuaciones polinómicas, como A + BX + CX2 + DX3 + ... = 0. La Máquina diferencial podría, teóricamente, aplicar los algoritmos -largamente estudiados por los matemáticos- de las diferencias finitas, conocidos desde la antigüedad por los matemáticos griegos. Su diseño y algunos protoptipos de sus partes reposan en un useo en la ciudad de Londres, Inglaterra. La máquina analítica Este artefacto es el auténtico precursor de los computadores actuales, anticipando por cerca de 100 años la arquitectura básica de un computador. El Ingenio Analítico de Babbage nunca llegó a ser construído en su totalidad. La figura muestra un sector del mismo, correspondiente a la parte del molino (CPU) y los dispositivos de impresión, que fue ensamblado poco antes de la muerte de babbage en 1871. El ingenio hubiera sido programado mediante tarjetas perforadas, idea tomada del telar de Jacquard para tejer motivos en telas. [Investigación y Ciencia, Julio de 1999, pp. 54-59] Esta máquina diseñada por Babbage constaba de unos 50,000 componentes, y en su diseño básico, la Máquina Analítica incluía dispositivos de entrada de datos mediante tarjetas perforadas que contenían las instrucciones de operación, y un "almacén" o memoria para contener 1,000 números cada uno de hasta 50 dígitos decimales. También contenía un "procesador" con una unidad de control que permitía procesar instrucciones en cualquier secuencia, y unos dispositivos de salida para imprimir los resultados. De acuerdo con los diseños de Babbage, la Máquina Analítica se hallaría exenta de las limitaciones de la Máquina Diferencial, y estaba concebida con la intención de resolver problemas computacionales de carácter general, habría de poseer una arquitectura similar a la de los ordenadores actuales, compuesta por un «almacén» (memoria), un «molino» (unidad central de procesamiento, CPU en inglés), y un sistema de lectura de tarjetas perforadas (dispositivos de entrada). babbage se proponía basar en tarjetas perforadas la codificación de la entrada de datos (una idea tomada del telar de Jacquard, capaz de crear automáticamente, mediante tarjetas de este tipo, motivos textiles). La salida de la Máquina Analítica podría adoptar la forma de una página impresa o también de fichas perforadas. La Máquina Analítica efectuaría sumas, restas, multiplicaciones y divisiones, ejecutaría o repetiría un conjunto de instrucciones, atendiendo a ciertas condiciones ("si ocurre X, entonces Y"), noción que es nuclear en la tecnología informática y computacional moderna, donde recibe el nombre de salto condicional. Babbage expuso en 1840, en Turín (Italia), su primera y única presentación pública de la Máquina Analítica. Entre los presentes se hallaba Luigi Federico Menabrea (joven matemático que habría de llegar a primer ministro de Italia). Menabrea publicó las notas que tomó de la reunión, con anotaciones complementarias de l propio babbage, en el artículo Esbozo del ingenio Analítico, aparecido en Francés. Menabrea centró su atención más en los procesos matemáticos internos de la Máquina Diferencial y de la Máquina Analítica que en __________________________________________________________________________________ [email protected] Página 15 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ sus operaciones mecánicas subyacentes. Trazó el propósito de los componentes de la Máquina Analítica y reconoció que sería capaz de computar cualquier fórmula algebraica adecuadamente expresada (es decir, programada) en las fichas perforadas. "Las tarjetas", escribió Menabrea, "constituyen una mera traducción de fórmulas algebraicas, o, por expresarlo mejor, son otra forma de notación analítica" (es decir, un contexto simbólico entendible por la UCP). Ada, convertida ya en Ada King, Condesa de Lovelace, trás su boda con William King, leyó el trabajo de Menabrea y empezó a traducirlo al inglés. Ada y Babbage seguían manteniendo una buena amistad. Cuando Babbage se enteró del trabajo de Ada, a primeros de 1843, la animó a comentar la traducción. Esa sugerencia dió comienzo a una importante colaboración, cuyo fruto fue la publicación por Ada de un artículo en el que se examinaba con detenimiento la programación de una máquina computadora; iba a ser el único artículo de tal naturaleza durante los cien años siguientes. Ada incluía un total de site notas (de la A a la G), cuya extensión conjunta duplica con holgura la del artículo de Menabrea, resaltando la importancia computacional de la capacidad de la Máquina Analítica para saltar a distintas instrucciones según el cumplimiento de ciertas condiciones. Los principales aportes adicionales de Ada Byron a la programación de computadores se pueden compendiar como sigue: Trazó la diviisoria entre lo teóricamente posible de computar y lo imposible en la práctica, sentando -así - las bases de la Teoría de la computación. Estableció las ventajas que ofrecían las capacidades de la Máquina Analítica para utilizar más de una vez un mismo fragmento de codificación. Estas técnicas después se formalizaron en el concepto de subprogramas y funciones, y la reutilización del software. Describió las posibilidades de la Máquina Analítica como un computador de propósito general, que se podría emplear para componer música (como finalmente se logró), para graficación, y para procesar diveros tipos de datos. Abrió el camino para las investigaciones posteriores en áreas de Inteligencia Artificial. Ada Byron desdeñó la idea de que la máquina "pensara" en la forma en que piensan los humanos. "El ingenio analítico no tiene pretensión alguna de originar nada" escribió. "Puede hacer cualquier cosa que nosotros sepamos programarle". Más de 100 años después, Alan M. Turing hizo famoso ese juicio en una disertación sobre inteligencia artificial, dándole el nombre de "la objeción de Lady Lovelace". Estableció el primer programa para un computador de propósito general al establecer la secuencia de cómputo de los números de Bernoulli, utilizando las capacidades de calcular de la Máquina Analítica, estableciendo una notación para confeccionar programas. También precisó los principios y las técnicas de utilización de las tarjetas perforadas como medios de entrada de datos. La técnica de la Tarjeta Perforada En 1889, un inventor norteamericano, Herman Hollerith (1860-1929), también aplicó el concepto de las tarjetas perforadas del telar de Jacquard para efectuar cálculos. El primer problema al que Hollerith se enfrentó fue el de hallar un método más rápido para procesar los datos del censo de Estados Unidos. El censo poblacional de 1880 había tomado cerca de 7 años para procesarse y con una población en expansión, la oficina de censos estimó que se tardarían unos 10 años en tener los datos procesados del censo de 1890. __________________________________________________________________________________ [email protected] Página 16 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ A diferencia de la idea de Babbage de utilizar tarjetas perforadas para instruir a la máquina, el método de Hollerith utilizaba las tarjetas perforadas para almacenar los datos que se alimentaban a la máquina, la cual compilaba los resultados mecánicamente; y también para especificar la programación que debía seguirse en los procesos de cálculo. Cada perforación de una tarjeta representaba un número, una combinación de dos perforaciones representaba una letra. Se podían almacenar unas 80 variables en una sóla tarjeta, o especificar la instrucción a ejecutarse. En lugar de tardarse diez años, el proceso de los datos del censo tardó seis semanas empleando los métodos y las máquinas de Hollerith (cuyo apellido se convirtió en sinónimo de eficiencia y así se llamaron las primeras tarjetas perforadas). Además de su velocidad, las tarjetas perforadas funcionaban como método de almacenamiento de datos, y así ayudaron a reducir los errores de cómputo. Para aplicar sus ideas y sus métodos en el ámbito comercial, Hollerith fundó la empresa Tabulating Machine Company, en 1896, la cual más tarde se convirtiría en la empresa International Business Machines (IBM) en 1924, después de una serie de fusiones. Otras empresas, tales como Remington Rand y Burroughs también manufacturaron máquinas lectoras de tarjetas perforadas, que se emplearon ampliamente tanto en el sector privado como en el gubernamental hasta bien entrada la década de 1960's. Estos desarrollos marcaron el proceso electromecánico de datos. 1.8 GENERACIONES DE COMPUTADORES Es costumbre describir el desarrollo histórico de los computadores por medio de una serie de hitos, de logros especiales, que desde mediados del siglo XX han estado jalonando las industria del hardware y del software, a la economía y a las sociedades en general. Tales hitos históricos se les denomina “generaciones”. Hasta la fecha se identifican claramente cinco generaciones de computadores. Primera Generación de Computadores (1945 – 1956) Durante la Segunda Guerra Mundial, los gobiernos de diferentes países se vieron impulsados a desarrollar computadores para aprovechar el potencial de su impacto estratégico, especialmente en operaciones militares. Esto aumentó el número de proyectos financiados para desarrollar tecnología electrónica, lo cual ha jalonado el desarrollo tecno-informático a partir del siglo 20. En 1941, el ingeniero alemán Konrad Zuse desarrolló un computador, el Z3, para diseñar aeroplanos y misiles. Sin embargo, debido al fracaso alemán, las llamadas «Fuerzas Aliadas» hicieron los mayores aportes en la construcción y aplicación de computadores más veloces y potentes. En 1943, la Gran Bretaña construyó en secreto un computador para descifrar códigos encriptados, llamado Colossus con el fín de descifrar los mensajes de los militares alemanes. El impacto del computador Colossus en el desarrollo de la industria de cómputo fue bastante limitado por dos razones básicas. La primera, es que el Colossus no era un computador de propósito general; por el contrario, era de propósito específico, diseñado solamente para decodificar mensajes cifrados. En segundo lugar, la existencia del computador se mantuvo en secreto hasta varias décadas después de finalizada la guerra __________________________________________________________________________________ [email protected] Página 17 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ Los esfuerzos estadounidenses reportaron mayores logros. Howard H. Aiken (19001973), un ingeniero de la Universidad Harvard trabajando con IBM, tuvo bastante éxito en construir y aplicar un computador electrónico en 1944. A Howard H. Aiken le gustaba considerarse el sucesor directo de Charles Babbage, pero ni estaba familiarizado con el trabajo de Babbage y de Ada Byron, ni alcanzó a comprender la importancia del salto condicional. El propósito del computador ideado y construído por Aiken era generar planos balísticos para las fuerzas navales de Estados Unidos. Dicha máquina tenía unas dimensiones de aproximadamente la mitad de una cancha de fútbol y contenía unos 800 kilómetros de cables. El computador se llamó HarvardIBM Automatic Sequence Controlled Calculator, o Mark I para abreviar, y estaba basado en la tecnología de relés electromagnéticos. El computador Mark I empleaba señales electromagnéticas para mover las partes mecánicas. Esta máquina era lenta (tomaba de 3 a 5 segundos por cálculo) e inflexible (la secuencia de cálculos no se podía cambiar); pero ejecutaba operaciones matemáticas básicas y cálculos complejos de ecuaciones sobre el movimiento parabólico de proyectiles. Otro computador desarrollado bajo los auspicios del ímpeto bélico fue el llamado Electronic Numerical Integrator and Computer (ENIAC), construído en un proyecto conjunto entre el gobierno de Estados Unidos y la Universidad de Pennsylvania. Constaba de unos 18,000 tubos de radio, 70,000 resistores, unos 5 millones de junturas soldadas, ocupaba unos 150 m2, y pesaba cerca de 30 toneladas, conformando una máquina monstruosa que consumía cerca de 160 kilowatts de electridad, y que cuando funcionaba dejaba a oscuras a buena parte de la ciudad de Philadelphia. Desarrollado por John Presper Eckert (1919-1995) y John W. Mauchly (19071980), el ENIAC, a diferencia del Colossus y del Mark I, sí era un computador de propósito general con velocidades de cálculo de hasta 1,000 veces las del Mark I. A mediados de la década de 1940's John von Neumann (1903-1957) se vinculó al equipo de trabajo de la Universidad de Pennsylvania, estableciendo y aplicando conceptos en el diseño de los computadores que permanecieron válidos __________________________________________________________________________________ [email protected] Página 18 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ en la ingeniería de computadores por más de 40 años. Von Neumann diseñó el computador denominado Electronic Discrete Variable Automatic Computer (EDVAC) en 1945 con una memoria para almacenar programas y datos. Esta técnica de «programa almacenado» conjuntamente con la «transferencia condicional del control», que permitía detener y reanudar los cálculos, dió gran versatilidad a la programación de computadores. El elemento clave de la llamada «arquitectura von Neumann» era la Unidad Central de Proceso (o CPU por sus sigla en inglés = Central Processing Unit), que facilitaba la coordinación de todas las funciones de la máquina desde un sólo sitio interno de la misma. En 1951, el computador llamado UNIVAC I (Universal Automatic Computer), construído por la empresa Remington Rand, se convirtió en uno de los primeros computadores para aplicaciones comerciales que emplearon las técnicas ideadas por von Neumann. Tanto la oficina de censos de Estados Unidos como la empresa General Electric adquirieron máquinas UNIVAC, jalonando así el proceso automatizado de los datos en las empresas de toda índole. Uno de los más impresionantes logros del computador UNIVAC fue el de predecir, mediante cálculos estadísticos, el ganador de las elecciones presidenciales del año 1952, Dwight D. Eisenhower, con lo cual la fama del computador UNIVAC creció como espuma. Esta primera generación de computadores se caracterizó porque las instrucciones de operación eran específicas para la tarea que el computador efectuaba. Cada máquina tenía diferente código binario interno llamado lenguaje de máquina mediante el cual se le decía al computador cómo operar. Además, estos computadores eran de gran tamaño, utilizaban tubos de radio (diodos) y almacenamiento magnético por medio de tambores magnéticos. Segunda Generación de Computadores (1956 – 1963) Por el año 1948, la invención del transistor cambió profundamente el desarrollo de la industria de la computación. El transistor reemplazó a los burdos e incómodos «tubos al vacío» en televisores, radios, computadores y cuanto artefacto llevara la tecnología de los tubos al vacío. Como resultado, el tamaño y la eficiencia de la maquinaria electrónica (hardware) se potenció en una forma nunca antes vista. Sin embargo, el transistor sólo se involucró en la construcción de computadores hacia el año 1956. Conjuntamente con los inventos anteriores, tal como la memoria de núcleos magnéticos, los transistores jalonaron una segunda generación de computadores más compactos (menor tamaño), de mayores velocidades de procesamiento interno, más confiables y seguros y mucho más eficientes en el consumo de energía que los computadores de la primera generación. Las primeras máquinas de gran escala que tomaron ventaja de la tecnología del transistor fueron los llamados «supercomputadores»: la máquina «Stretch» desarrollada por la empresa IBM y la máquina «LARC» construída por la empresa Sperry-Rand, ambas en __________________________________________________________________________________ [email protected] Página 19 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ Estados Unidos. Estos computadores, ambos desarrollados para los laboratorios de energía atómica, podían manejar enormes cantidades de datos, capacidad que ha estado en creciente demanda por parte de los científicos atómicos. Las máquinas eran muy costosas, sin embargo, y tendían a ser demasiados potentes para las necesidades básicas de proceso de datos tanto en las empresas como en el gobierno y en el comercio, lo cual limitaba su atractivo y su mercado. Sólo dos máquinas tipo «LARC» fueron instaladas: una en el laboratorio Lawrence Radiation Labs en Livermore, California (USA), y de ahí el nombre de estas máquinas (LARC = Livermore Atomic Research Computer), y la otra en el centro de investigación y desarrollo de la fuerza naval de Estados Unidos en Washington, D.C. En el desarrollo de la segunda generación de computadores se reemplazó el lenguaje de máquina con el lenguaje ensamblador, lo cual permitió programas más compactos y fáciles de manejar que los programas en código binario. En los primeros años de la década de 1960's, ya había un gran número de computadores de segunda generación, de aplicación comercial y científica, utilizados en empresas, universidades y en el gobierno, fabricados por compañías tales como Burroughs, Control Data, Honeywell, IBM, Sperry-Rand, NCR, y otras. Esta segunda generación de computadores estaba basada en el diseño electrónico proporcionado por la Física del estado Sólido, y contenían transistores en reemplazo de los tubos al vacío. También contenían todos los componentes básicos asociados con los actuales computadores: impresoras, almacenamiento en cinta magnética, almacenamiento en disco magnético, memoria interna (RAM y ROM), sistemas operativos, lenguajes de programación, programas de aplicaciones (utilitarios), y la técnica de programa almacenado. Un destacado ejemplo fue el computador IBM 1401, el cual fue universalmente aceptado por muchas empresas, y es considerado por muchos como el Modelo T de la Industria computacional. Hacia 1965, la mayoría de las grandes empresas y los gobiernos estaban utilizando computadores de segunda generación para el proceso rutinario de datos financieros, de contabilidad y presupuestos, de nómina, de inventarios, de producción, etc. Hacia finales de la década 1960's, la Universidad Nacional en Medellín contaba con equipos de esta categoría, especialmente el IBM 1130 y el NCR 6500 en los cuales se procesaban los datos propios de la institución, y se empleaban para la enseñanza/aprendizaje de la programación de computadores. En la Facultad de Minas, por ejmplo, varias generaciones de ingenieros (entre ellos el subscrito) aprendieron los rudimentos de la computación en dichas máquinas. Fueron, precisamente, las técnicas de programa almacenado y de salto de secuencia (llamada hoy de selección lógica) ideadas por John von Newmann, del almacenamiento externo e interno, el empleo de periféricos, y los lenguajes de programación de alto nivel, que suministraron a los computadores flexibilidad, rapidez y eficiencia, lo cual hizo productivo el uso de computadores en el procesamiento de datos en las empresas. __________________________________________________________________________________ [email protected] Página 20 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ El Concepto de Programa Almacenado (ideado por Von Newman) implica que las instrucciones, que hacen operar al computador en eldesarrollo de un proceso específico de datos, se almacenan dentro de la memoria interna, y rápidamente puede ser reemplazado por otro conjunto de instrucciones para otro procesamiento distinto (tal conjunto de instrucciones se llama programa). Así, por ejemplo, un computador puede procesar los pedidos de los clientes, y luego generar la facturación o diseñar productos o calcular los cheques de pago. La técnica del salto de secuencia (o selección lógica) implica que en un programa) es posible instruir a la máquina para que elija una entre varias alternativas, saltándose así la secuencia normal de ejecución de las instrucciones del programa (de arriba a abajo y de izquierda a derecha). Lenguajes de programación de computadores, de alto nivel y más soficticados, se diseñaron y comenzaron a emplearse con esta segunda generación de computadores. Ejemplos de ellos son: el COBOL (Common Business-Oriented Language) para aplicaciones comerciales típicas (gran volumen de datos y poca exigencia matemática) y el FORTRAN (Formula Translator) para aplicaciones técnicas, científicas y de ingeniería (poco o gran volumen de datos, pero intensa formulación matemática). Ambos lenguajes, y muchos otros que surgieron igualmente en este periodo, han sobrevivido hasta hoy con versiones mejoradas y adaptadas a los actuales ambientes tecno-informáticos. El lenguaje COBOL fue desarrollado por un grupo de investigación liderado por Grace Hooper (en la figura). Grace Hopper fue pionera en el procesamiento de datos; su disciplina principal de trabajo era la matemática; de nacionalidad estadounidense, a Grace Hopper se le atribuye la creación del primer compilador en 1952. Hopper ayudó a desarrollar dos lenguajes informáticos, así como a convertir los ordenadores o computadoras en un elemento atractivo para el mundo de la empresa. ( UPI/BETTMANN 1998). Estos lenguajes reemplazaron al críptico código binario del lenguaje de máquina, y se diseñaron con un enfoque más orientado hacia el usuario, por medio de palabras e instrucciones (en Inglés) y de fórmulas matemáticas (como en el Álgebra), que han hecho mucho más fácil y accesible la programación de computadores. Uno de los efectos inmediatos ha sido la especialización del trabajo en las áreas de computación y de informática: surgieron carreras académicas y organizacionales como operador de computadores, programador, analista, ingeniero de sistemas, etc. Otro de los efectos es que surgió toda la Industria de Software y también toda la Industria de Hardware, las cuales han vendido desarrollándose explosivamente durante las cuatro últimas décadas. __________________________________________________________________________________ [email protected] Página 21 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ Tercera Generación de Computadores (1964 – 1971) Aunque el transistor fue una clara mejora sobre los tubos al vacío, aún se generaba mucho calor interno en las máquinas, lo cual implicaba costos para su control, y el calor afectaba los otros componentes internos sensitivos. El empleo del cuarzo eliminó gran parte de este problema. Jack Kilby, un ingeniero que trabajaba con la empresa Texas Instruments, desarrolló el Circuito Integrado (IC) en 1958. El IC combina tres componentes electrónicos en un disco pequeñísimo de silicio (denominado desde entonces chip), el cual se fabricaba a partir de cristales de cuarzo (uno de los materiales más abundantes en la naturaleza, lo cual implica bajos costos en su utilización). Los investigadores de diferentes empresas especializadas rápidamente descubrieron y aplicaron técnicas para ensamblar cada vez más componentes dentro de un único chip, surgiendo así toda la industria de los semiconductores. Como resultado, los computadores redujeron aún más su tamaño, eliminándose -además- la mayor parte de los efectos nocivos del calor interno. Otros desarrollos importantes dentro de esta tercera generación de computadores son: La mejora de los Sistemas Operativos que permitió a las máquinas ejecutar a la vez diferentes programas a través de un programa central que monitorea y coordina la memoria interna del computador. Las ténicas relacionadas incluyen la multitarea y la multiprogramación. Las mejoras en los dispositivos periféricos, tanto para entrada de datos como para salida y para almacenamiento. Se aplicaron técnicas de reconocimiento óptico y de reconocimiento magnético de caracteres. Mejoras en las capacidades y velocidades de la memoria interna de máquina. En cuanto a la capacidad de memoria interna, se tenían dispositvos capaces de almacenar centenares de miles de bytes. La velocidad de acceso a memoria era del orden de los microsegundos. Mejoras en el almacenamiento externo (o secundario), a través de discos magnéticos, tambores magnéticos y celdas. Las capacidades eran de varios millones de bytes. Las técnicas de teleproceso y de redes hicieron su aparición y desde entonces se han estado mejorando y potenciando continuamente. Una máquina prototipo de esta tercera generación de computadores fue la IBM 360, que se convirtió en el paradigma tecnológico a partir del cual se han desarrollado otras muchas máquinas en las últimas tres décadas, incluyendo los computadores personales. El sistema IBM 360 era una máquina construída con componentes semicompatibles; un cierto número de modelos permitían el proceso de datos de muy diversos tipos - comercial, científico, de comunicaciones, control de procesos industriales -, y combinaciones de ellos. Involucraba varios procesadores y gran cantidad de periféricos que facilitaban armar configuraciones de cómputo de acuerdo a las necesidades de los usuarios. __________________________________________________________________________________ [email protected] Página 22 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ Cuarta Generación de Computadores (1971 – Presente) Después de la invención de los circuitos integrados y el chip, la industria microelectrónica ha venido reduciendo el tamaño de los chips y aumentando el número de componentes ensamblado en cada chip. Las técnicas de alta escala de integración (LSI = Large Scale Integration) pudieron ensamblar cientos de componentes en un único chip. Hacia 1980, las técnicas de muy alta escala de integración (VLSI = Very Large Scale Integration) ensamblaban centeneraes de miles de componentes en un solo chip. Los desarrollos en la microminiaturización de componentes han continuado, y actualmente (en los inicios del siglo 21) las técnicas de Ultraintegración permiten ensamblar hasta miles de millones de componentes en un único chip - (ULSI = Ultra-large scale integration). La habilidad de ensamblar tan alto número de componentes electrónicos, en un área equivalente al tamaño de la uña del dedo pulgar, ha ayudado a disminuir constantemente el tamaño de los computadores y a rebajar los costos de los mismos. También, ha permitido que los computadores sean más potentes (en velocidad y memoria), más confiables y seguros con ayuda de las economías de escala en la producción y comercialización de microchips. El chip Intel 4004, desarrollado en 1971, marcó un hito adicional en las técnicas de microminiaturización de componentes, al ensamblar en un solo chip todas las unidades básicas de un computador (la unidad central de proceso, la memoria interna, y los controles de entrada y salida). Aunque inicialmente los microprocesadores se diseñaban y construían para cumplir con un único propósito, en la actualidad un microprocesador se diseña, se construye y se programa para servir a una serie de funciones. Así por ejemplo, muchos electrodomésticos como el horno microondas, los aparatos de televisión, las lavadoras, los lavaplatos, los relojes despertadores, las videograbadoras, los equipos de sonido, etc., involucran diversas categorías de microprocesadores. También los automóviles, la maquinaria industrial, los aviones, los cohetes espaciales, los satélites de comunicaciones y de investigación profunda del espacio, los cajeros automáticos, los aparatos dispensadores, los teléfonos celulares, los equipos médicos, etc. involucran otras muchas variedades de microprocesadores. Tal concentración de poder computacional, que había estado bajo el dominio exclusivo de las grandes empresas y de los gobiernos, se hizo de dominio público cuando a mediados de la década de 1970's los fabricantes de computadores desarrollaron y comercializaron los medianos y pequeños computadores. Estas categorías de computadores facilitaron a las personas no expertas, al consumidor final, tener acceso a las facilidades del proceso electrónico de datos por medio de programas («paquetes» de software) tan populares como los procesadores de texto (como Word o Latex) y las hojas electrónicas (como Excel). Pioneros en estos campos fueron empresas como Commodore, Radio Shack y Apple Computers. En los inicios de la década de 1980's, los videojuegos tales como Pac Man, y los sistemas de videojuegos caseros como el Atari 2600 hicieron masivo el interés por más sofisticados y programables computadores personales domésticos. En Octubre de 1981, la empresa IBM introdujo su modelo de computador personal (PC = Personnal Computer) para uso en las oficinas, los hogares y las escuelas. Así se originó una __________________________________________________________________________________ [email protected] Página 23 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ sin par revolución tecno-informática, tanto en hardware como en software, especialmente al expandirse la industria de computadores personales compatibles con el modelo IBM (los llamados «clones»), todo lo cual ha hecho más accesible el proceso electrónico de datos al gran público. Como un ejemplo, el número de computadores personales en uso en 1981 era de 2 millones, la mayoría de ellos en Estados Unidos; en 1982, tal número de 5.5 millones; diez años después, en 1992, se utilizaban 65 millones de PC; hacia finales de 1999, el número era de 140 millones de PC utilizados en el mundo, con cerca del 60% en Estados Unidos. Y en los inicios del siglo XXI, países como China e India están adoptando masivamente los computadores y las redes de computadores, en especial la Internet, todo locual está retroalimentando en forma acelerada las economías de escala propiciando -a su vez - más innovaciones y abaratando costos. Los computadores han continuado su tendencia hacia un menor tamaño, yendo desde los típicos computadores de escritorios hasta los portátiles (laptops) que caben en un maletín y los computadores tipo palmtop que caben en la mano o son del tamaño de un pequeño libro. En competencia directa con los PC tipo IBM están los computadores de la empresa Apple cuya línea llamada Macintosh fue introducida en 1984 y que marcó un estándar en la industria del software por su sistema operativo visual basado en íconos y menús, permitiendo al usuario operar el computador por medio de dispositivos como el mouse y el trackball. Hacia 1989 la empresa Microsoft con su sistema operativo llamado Windows empezó a apoderarse del mercado del software para PC, llegando a poseer en 1999 cerca del 70% de tal mercado. Muchos otros fabricantes de hardware y de software han entrado en la contienda y actualmente es un mercado bastante competitivo el de la computación personal. En la medida que se abaratan los computadores y sus componentes, más y más usos se desarrollan. En la medida en que los PC se han hecho más potentes, se han podido interconectar -formando redes- compartiendo los recursos de memoria, periféricos, software, información, y comunicándosen con otros computadores a menudo localizados en sitios remotos (incluso otros países). A diferencia de los grandes o supergrandes computadores, los cuales comparten recursos con muchas terminales para muchas aplicaciones, los computadores tipo PC interconectados permiten al usuario final compartir recursos e información con cualquier otro computador en prácticamente cualquier lugar del mundo. Utilizando Redes de Area Local (LAN = Local Area Network), o simples líneas telefónicas, los PC interconectados pueden adquirir proporciones gigantescas. Una telaraña global de circuitería computacional, la llamada Internet, por ejemplo, enlaza diferentes categorías de computadores en una enorme red de información. Durante las elecciones presidenciales de 1992 en Estados Unidos, el entonces candidato a la vicepresidencia Al Gore propuso que el desarrollo en el futuro próximo de la llamada Superautopista de la Información sea una prioridad administrativa del gobierno de estados Unidos; en tal sentido, a finales de 1999 se tenía un prototipo de Internet II que será entre __________________________________________________________________________________ [email protected] Página 24 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ 100 y 1000 veces más rápida y potente que la internet actual. Una de las aplicaciones más utilizadas de la red mundial, Internet es la del correo electrónico, o E-mail, que permite a personas no expertas enviar y recibir mensajes en su PC; también la consulta de información a través de páginas web ocupa lugares de privilegio en la red de redes. La tendencia actual es a que, incluso los negocios de más alto nivel, se hagan por internet. Así mismo, muchas otras actividades tienden a efectuarse cada vez más por internet tales como las videoconferencias, las conversaciones, los procesos de enseñanza/aprendizaje, los videojuegos, la consulta y actualización de información bibliográfica, los videos, la música, etc. Quinta Generación de Computadores (Presente - Futuro) Definir la quinta generación de computadores es algo difícil debido a que este campo apenas se está iniciando. En los primeros años de la década de 1980's, el gobierno japonés conjuntamente con un consorcio de empresas japonesas planteó un proyecto de «Quinta generación de computadores» cuya visión fundamental era la de obtener computadores inteligentes. En esa misma década, Estados Unidos y Canadá plantearon un proyecto con objetivos similares; igualmente varios países europeos plantearon un proyecto conjunto con miras a obtener las llamadas máquinas inteligentes. Después de más de 20 años, aún es ciencia ficción una máquina inteligente, pero sin lugar a dudas en tales regiones (Japón, Europa y Norteamérica) se han jalonado importantes desarrollos tanto en la industria del hardware como en la industria del software y en la disciplina de la Inteligencia Artificial (cuyo objetivo básico es dotar a las máquinas de comportamientos inteligentes propios de los humanos). Uno de los ejemplos más famosos de un computador de la llamada quinta generación es el HAL9000 de la novela de Arthur C. Clarke, 2001: A Space Odyssey(2001: Odisea del espacio). El computador HAL9000 desarrollaba (en la novela y en la película) todas las funciones básicas de una máquina inteligente. Con su diseño, basado en técnicas de Inteligencia Artificial, HAL9000 podía razonar suficientemente bien para entablar y sostener conversaciones inteligentes con sus operadores humanos, podía recibir y suministrar datos en un ambiente visual, y podía aprender de sus experiencias. (Desafortunadamente, HAL9000 se volvió demasiado humano y tuvo un colapso psicótico, tomando el control de la nave y eliminando a los humanos de a bordo). Otro de los ejemplos, también de la ciencia ficción, corresponde a la computadora de la nave Enterprise de la película y de la serie de televisión «Viaje a las Estrellas: la nueva generación», que va mucho más allá que el computador HAL9000, pues es capaz de manejar - adicionalmente a sus habilidades inteligentes- la materia y la energía y hacer ciertas creaciones. Dos ejemplos portentosos son: las técnicas de teletransportación y la sala de holocubierta que emplea técnicas de hipersimulación para recrear personajes, ambientes y situaciones reales. Aunque la computadora Hal9000 y la computadora de la nave Enterprise son todavía parte de la ciencia ficción, y están quizás a muchas décadas de ser realidades en las empresas y en la vida diaria, algunas de sus funciones ya se están empleando en varios modelos de computadores. Con los más recientes avances de la ingeniería de hardware y de software, __________________________________________________________________________________ [email protected] Página 25 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ algunos computadores son capaces del reconocimiento de voz y de imitar el razonamiento humano -incluso a nivel de computadores personales, aunque todavía de manera incipiente. Las habilidades para traducir un idioma a otro es también un objetivo central de la quinta generación de computadores. Aunque en principio parece un objetivo muy simple, los investigadores, los ingenieros de computación y los programadores se han dado cuenta que es extremadamente difícil (con la tecnología actual) lograr un traductor realmente inteligente, pues el significado preciso de un discurso depende del contexto, de las inflexiones de voz, de la semántica y del entorno cultural, y no sólo de la simple traducción de palabras sueltas. No obstante, a nivel internacional y especialmente en los países más industrializados y avanzados tecnológicamente del planeta, se están haciendo investigaciones e ingentes esfuerzos para lograr la mezcla perfecta de hardware y software que permita lograr en un futuro cercano las verdaderas máquinas inteligentes preconizadas por los proyectos de quinta generación de computadores. Algunos avances sobresalientes en dicha dirección son los siguientes: El procesamiento en paralelo, que reemplaza el modelo de von Neumann de una sola unidad central de proceso (CPU) por sistemas computacionales donde intervienen sinérgicamente centenares y aún miles de procesadores trabajando cooperativamente, tratando de emular los procesos biológicas de las neuronas; ha surgido toda una nueva disciplina denominada Redes Neuronales. La Tecnología de Superconductividad, la cual permite que fluya la corriente eléctrica con prácticamente cero resistencia, incrementando enormemente la velocidad interna de procesamiento de los computadores; esta tecnología está desarrollando computadores cuyas velocidades internas es del orden de 10-15 segundos (o femtosegundos). Los llamados Sistemas Expertos que emulan las habilidades básicas de un experto humano en un campo específico constituyen uno de los avances más espectaculares y a la vez los más comercializados; así, por ejemplo, en medicina se emplean los sistemas expertos para ayudar al diagnóstico de enfermedades, en la misma industria de la computación se emplean sistemas expertos para asistir a los humanos en el armado de configuraciones de cómputo, en las empresas se utilizan los sistemas expertos para ayudar a la gestión de ciertos procesos (inventarios, producción, etc.), y en muchas otras áreas los sistemas expertos auxilian a los humanos en la toma de decisiones. La tecnología de Arquitecturas reconfigurables (RCP) está propiciando un nuevo enfoque y permitiendo novedosas aplicaciones, tanto a nivel de la investigación pura como de las aplicaciones en las empresas. Esta técnica ya pasó de los laboratorios y está siendo aplicada en muy diversos ambientes, hasta tal punto que muchos preconizan que en los próximos años será el estándar básico de la computación a tood nivel. Ya en medios académicos se enseñan metodologías de desarrollo de software basadas en RCP. En nuestro medio, por ejemplo, se desarrollan seminarios y otros eventos que ayudan a popularizar las técnicas RCP (como el auspiciado por la Udea en febrero de 2005). __________________________________________________________________________________ [email protected] Página 26 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ La nanotecnología promete microminiaturizar aún más los componentes de los computadores, pues se basa en la manipulación a nivel molecular (100 Amstrongs). Computadores con esta tecnología serían miles de millones de veces más potentes y versátiles que los actuales y sus aplicaciones y usos estarían limitados sólo por la imaginación. En el diseño de sistemas de cómputo se tiene a disposición todo un arsenal de tecnologías basadas en semiconductores altamente integradas y de alto desempeño, tales como circuitos integrados para aplicaciones específicas (ASICs = Application-Specific Integrated Circuits), productos estándar para aplicaciones específicas (ASSPs = application-specific integrated circuits), procesadores de señales digitales (DSPs = digital signal processors), y arreglos de puertas de campo programable (FPGAs = field-programmable gate arrays). Sin embargo, existe una presión constante, a nivel internacional, para obtener sistemas de cómputo más confiables, flexibles y de alto rendimiento. Recientemente ha surgido toda una línea de desarrollo denominada procesador de comunicación reconfigurable (RCP = reconfigurable communication processor), una categoría totalmente nueva basada en semiconductores que sirve como una plataforma a nivel de sistemas hardware, de comunicación específica, para diseñar e implementar una amplia gama de aplicaciones. La tecnología RCP llena el vacío entre los sistemas ASICs, rápidos pero inflexibles, y los sistemas DSPs y FPGAs, flexibles pero lentos y costosos, al combinar unas pocas funciones claves a nivel de sistema hardware con un arreglo de celdas reconfigurables en una única plataforma. Una solución RCP efectiva se compone de cuatro elementos básicos (en la figura se muestra un dispositivo tipo RCP que incluye el procesador, la matriz reconfigurable y la memoria): • Un procesador ensamblado tipo RISC (Reduced-Instrution Set Computer) de alto desempeño para procesar los niveles más altos de la estructura OSI (Open Standard Interconetion) en el flujo de comunicación de datos y para organizar la estructura reconfigurable. Una estructura reconfigurable consistente de múltiples celdas lógicas de hardware. Estas celdas rápidamente transforman las representaciones algorítmicas y los protocolos en archivos de configuración recividos del procesador para acelerar el hardware. Un segundo atributo esencial de la estructura reocnfigurable es la __________________________________________________________________________________ [email protected] Página 27 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ disponibilidad de almacenamiento distribuído para habilitar el rápido transporte de los datos a través de la estructura. Además, la celda de la estructura reconfigurable debe estar optimizada anchos de la trayectorias de datos en los rangos de 16-bit y 32-bit — substancialmente más anchos que las celdas en las estructuras FPGAs convencionales — para soportar efectivamente las aplicaciones de comunicación. • Funciones I/O de banda ancha y un fino acoplamiento entre la estructura reconfigurable y el procesador. • Una herramienta de software que habilita al usuario (al diseñador) para trasladar rápidamente las señales y los algoritmos del procesamiento de protocolos a código para el microprocesador RISC y los archivos de configuración de la estructura reconfigurable. La solución RCP también suministra un sistema de verificación y capacidades de depuración. Las ventajas de la tecnología RCPs incluyen: Diseño fácil y rápido La permanente evolución de los estándares de comunicación, y las presiones competitivas para obtener rápidamente productos más eficientes, han impulsado el desarrollo de las tecnologías de diseño de hardware que sean adaptables a los nuevos estándares. La prototipación utilizando RCPs y sus herramientas asociadas facilita un diseño rápido del software a tood nivel. La stécnicas RCP también ofrecen una alta velocidad en el diseño de señales digitales, manteniendo la flexibilidad algorítmica. Fácil actualización La habilidad de reconfigurar la funcionalidad del producto permite a los proveedores de hardware distribuir rápidamente los productos iniciales, evaluar el desempeño de campo, suministrar funciones mejoradas o substancialmente modificadas, y mejorar el desempeño por medio de actualizaciones vía hardware y software. Generar diferenciación de productos Las técnicas no RCP sólo permiten la diferenciación vía software. Por el contrario, RCPs permite a los distribuidores de hardware generar diferenciaciones de sus productos, con licencia propia, manteniendo a la vez los beneficios de desempeño del estado del arte. Además, RCPs induce a desarrollar algoritmos creativos, técnicas de manejo y distribución (tales como algoritmos adaptativos a tiempo real y distribución en línea vía internet)para responder a la cpmpetencia del mercado rápida y eficientemente. Crear productos adaptativos y flexibles El rapido crecimiento del volumen de comunicaciones en todos los medios exige productos de hardware que se adapten flexiblemente a las cambintes exigencias de las telecomunicaciones. Por ejemplo, no se puede predecir los crecientes volúmenes de datos, audio (voces, música), y video que se transmiten y que se tranmitirán en el futuro cercano por los sistemes de telecomunicaciones inalámbricas. Por lo tanto, la infraestructura computacional debe asignar __________________________________________________________________________________ [email protected] Página 28 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ dinámicamente, a tiempo real, el hardware y el software que suministren la mejor calidad del servicio para todos los usuarios, independientemente de sus disímiles requerimientos. 0La tecnología RCPs permite a los diseñadores de sistemas de hardware para suministrar una nueca clase de algoritmos adaptativos que proporcionan máxima flexibilidad y desempeño en todos los niveles de la estructura OSI (el estándar actual, con 7 niveles o capas), incluyendo el nivel físico. Aumento de la funcionalidad. La flexibilidad de la tecnología RCPs facilita a los diseñadores de sistemas de hardware o a los proveedores de servicios técnicos desarrollar rápidamente e instalar nuevos servicios, simplemente descargando de internet nuevos paquetes de software. Por ejemplo, para mejorar el cubrimiento y funciones de los servicios de comunicación, pueden descargarse de internet nuevo software con algoritmos para el procesamiento agresivo de señales digitales, como la eliminación del eco en redes alámbricas, o la detección de multiusuarios en redes inalámbricas. Agregando soporte para nuevos protocolos puede extenderse las características de acceso múltiple para un sistema. Otras ventajes incluyen: mejoras en la escalabilidad (una gama más amplia de versiones); menores requerimientos de potencia eléctrica; menores tiempos del ciclo de desarrollo de productos, con disminución de los costos pertinentes; incrementos de los anchos de banda de los sistemas de telecomunicaciones. La computación fotóptica como una aplicación de la tecnología laser, está permitiendo la fabricación de prototipos de computadores mucho más rápidos y potentes que los actuales. Permite, además, la hibridación con otras diferentes tecnologías que permiten entrever mayores logros en la inteligencia artificial y en las aplicaciones de misión crítica a tiempo real. Pero a pesar de todas estas aplicaciones, la quinta generación de computadores (las máquinas realmente inteligentes) dista mucho de ser una realidad diaria para las empresas y para las personas. Sin embargo, hay una megatendencia de fondo muy clara: las empresas y los países están evolucionando hacia organizaciones cimentadas en el aprendizaje continuo, en las cuales la información y el conocimiento, basados en el Talento Humano, son los recursos estratégicos más importantes que potencian a los otros recursos organizacionales (tierra, capital y trabajo). El boom tecnològico inciado con los computadores, desde mediados del siglo XX, ha permeado todas las actividades de los hogares, los individuos, los gobiernos, las empresas, las ciencias. Pràcticamente, no hay quehacer humano que pueda sustraerse a esta influencia. En general, para bien. Sin embargo, la tecnología propicia –igualmente- delitos e inseguridades. Los virus informáticos son el pan de cada día de los computadores y de las redes. El fraude electrónico es una de las nuevas modalidades delictivas. Los efectos sobre __________________________________________________________________________________ [email protected] Página 29 Capitulo 1.- Evolución y Desarrollo de los Computadores http://www.unalmed.edu.co/~walvarem/ 08/16/05 __________________________________________________________________________________ los organismos y sobre la psicoemotividad de las personas están moldeando nuevas categorías de dolencias y de enfermedades laborales. La cruda realidad es que el computador, las redes de computadores, y las tecnologías conexas han llegado para quedarse. Los vaticinios expertos no ven un horizonte cercano en el cual dicha realidad desaparezca. Por el contrario, con cada nuevo invento computacional, con cada nuevo descubrimiento son más y mejores las aplicaciones y utilizaciones de este tipo de tecnología. Toda persona cuyo ámbito de estudio y trabajo tenga que ver con las ciencias, las técnicas y las ingenierías deber tener un alto nivel de competitividad en el manejo de los computadores y las redes de computadores en sus áreas propias de desempeño, so pena de quedar rezagado y no ser suficientemente competitivo como científico, como técnico o como ingeniero. Esta es una de las razones fundamentales por las cuales es requisito un aprendizaje excelente del computador y sus tecnologías conexas: el computador es la herramienta imprescindible de trabajo en cualquier área técnica o de ingeniería. __________________________________________________________________________________ [email protected] Página 30 Capitulo 1.- Evolución y Desarrollo de los Computadores