PROCESAMIENTO AUTOMATIZADO DE LA INFORMACIÓN. Lic. Angel Gutiérrez Fernández. I Evolución histórica de las computadoras. Partes funcionales de una computadora. Clasificación de las computadoras. Sistemas de numeración. Organización lógica de la memoria. Organización de la información y sus soportes. Evolución histórica de las computadoras. El origen del proceso de cálculo se remonta al origen mismo de la civilización, cuando el hombre, en su desarrollo social, necesitó contar y para ello se auxilió de sus dedos. Precisamente la palabra "digital" (derivada del latín digitus, que significa dedos) tiene relación con estos orígenes. El ábaco, inventado por los chinos en el año 3000 a.n.e y adoptado por numerosas culturas, constituyó en su época un salto cualitativo en el proceso de cálculo, al ser el primer dispositivo construido para esos fines. En su forma mas usual, el ábaco consiste en un tablero con varillas en cada una de las cuales tiene insertada diez cuentas. Los primeros intentos que se conocen por construir una máquina que auxiliara al hombre en la realización de cálculos datan de 1633. Posteriormente en 1642 el físico y matemático francés Blas Pascal construyó el primer equipo mecánico para sumar, y luego Leibnitz continuó desarrollando estas ideas. Fueron lentos los pasos iniciales dados en esta dirección, pero uno esencial fue el desarrollo de una máquina que mediante una tarjeta perforada era capaz de controlar el trabajo de un telar. Esto ocurrió en 1801; su inventor Joseph Jacquard. Máquina diferencial de Babbage Considerada por muchos como predecesora directa de los modernos dispositivos de cálculo, la máquina diferencial era capaz de calcular tablas matemáticas. Este corte transversal muestra una pequeña parte de la ingeniosa máquina diseñada por el matemático británico Charles Babbage en la década de 1820. La máquina analítica, ideada también por Babbage, habría sido una auténtica computadora programable si hubiera contado con la financiación adecuada. Las circunstancias quisieron que ninguna de las máquinas pudieran construirse durante su 1 vida, aunque esta posibilidad estaba dentro de la capacidad tecnológica de la época. En 1991, un equipo del Museo de las Ciencias de Londres consiguió construir una máquina diferencial Nº 2 totalmente operativa, siguiendo los dibujos y especificaciones de Babbage. En 1833 (dos siglos después del primer intento de construir una máquina que auxiliara al hombre en realizar cálculos) un profesor inglés de apellido Babbage logró idear un calculador mecánico automático bajo el principio de las tarjetas perforadas, que era capaz de calcular varias tablas matemáticas y analíticas, pero no logró construirlo debido al atraso tecnológico de su época. No obstante, muchas de sus ideas se mantuvieron vigentes hasta nuestros días. Un equipo menos ambicioso, pero mas práctico, basado en las tarjetas perforadas, fue inventado por Herman Hollerith en 1889, el cual era capaz de almacenar grandes volúmenes de información y realizar cálculos aritméticos. Este inventó fue usado para tabular el censo de 1890 en los EEUU y constituyó la base de los equipos que posteriormente se diseñaran para manipular grandes colecciones de datos. No fue hasta 1930 que se logró construir una poderosa computadora(MARK I); diseñada por Howard Aiken en la Universidad de Harvard, a nivel de relay. Esta computadora era capaz de resolver ecuaciones y cálculo avanzado, y comenzó a operar en 1944. En 1946 se logró terminar en la Universidad de Pensilvania el primer equipo totalmente electrónico (con tecnología digital) y que recibió el nombre de ENIAC (Electronic Numerical Integrator And Calculator), el cual fue considerado el primer computador digital diseñado en el mundo. Este equipo, construido por John Mauchly y J. Presper Eckert, usaba 18000 válvulas para sus circuitos electrónicos, y constituyó una hazaña el mantenerlo funcionando; pero era capaz de realizar en una hora, lo que a los demás equipos no electrónicos de la época les hubiera costado una semana aproximadamente. En esta época surge la primera generación de máquinas computadoras con la MARK I, ENIAC, EDVAC y UNIVAC I. Esta generación se caracteriza por su gran tamaño, baja velocidad de procesamiento, un gran costo, y posibilidades muy limitadas de 2 programación, ya que fueron programadas mediante contactos físicos eléctricos. Sistema informático UNIVAC La primera computadora electrónica comercial, la UNIVAC I, fue también la primera capaz de procesar información numérica y textual. Diseñada por J. Presper Eckeret y John Mauchly, cuya empresa se integró posteriormente en Remington Rand, la máquina marcó el inicio de la era informática. En la ilustración vemos una UNIVAC. La computadora central está al fondo, y en primer plano puede verse al panel de control de supervisión. Remington Rand entregó su primera UNIVAC a la Oficina del Censo de Estados Unidos en 1951. A partir de este momento el desarrollo de los equipos de cómputos fue acelerado. Ya para los primeros años de la década del 50 se empiezan a fabricar nuevos tipos de computadoras con la anexión de diodos y elementos semiconductores (transistores de germanio y silicio) y comienza a emplearse pequeños núcleos de forma anular de un material ferromagnético conocido como ferrita, para el almacenamiento de información (datos e instrucciones a ejecutar por la máquina). Estos pequeños núcleos tienen la propiedad de magnetizarse en uno u otro sentido dependiendo del sentido de la corriente que circula a través de un cable que pasa por su orificio central. Surge una importante apreciación conceptual en cuanto a la programación de estos equipos. Estas ideas fueron desarrolladas por John Von Neumann en la Universidad de Princeton. El plantaba que los programas debían ser almacenados en la memoria de la computadora, no por contactos físicos eléctricos, sino externamente, mediante la conmutación de conectores que permitiera darle diferentes ordenes a la computadora. Esto permitió una flexibilidad enorme. Aparecieron las primeras tecnologías asociadas a la computadora(compilador FORTRAN muy primario). Con el desarrollo del primer transistor (Laboratorios Bell en 1947), de los circuitos integrados (1950) y el perfeccionamiento de los núcleos de ferrita fue posible la aparición de nuevas y mas sofisticadas computadoras. Entre otras ventajas, la disminución del tamaño de las partes componentes no sólo permitió aumentar su potencialidad sino también posibilitó la aparición de modelos similares a las grandes computadoras pero de reducido tamaño, denominadas minicomputadoras. En esta etapa adquieren su máximo desarrollo los lenguajes universales para máquinas computadoras, así como determinados sistemas que auxilian al hombre en el manejo de la máquina y que recibieron el nombre de sistemas operativos, surgiendo, con esta tecnología la segunda generación de máquinas computadoras. Estas se caracterizan por velocidades mas altas de procesamiento y mayor capacidad de almacenamiento, aunque su tamaño sigue siendo grande, así como su costo. En esta etapa comienza a adquirir gran importancia toda la tecnología asociada a las computadoras (sistemas operativos, monitores, lenguajes emsambladores, lenguajes de alto nivel, generadores, etc). De esta generación se dice "puedes comprar una computadora y te regalamos su tecnología asociada (software)". 3 En la década del 1970 se comienzan a fabricar sistemas de proceso empleando una nueva tecnología denominados circuitos de alta integración o circuitos integrados a gran escala. A estos sistemas de procesos se les llamó microprocesadores(fabricado el primero por Intel), ya que empleando circuitos de alta integración, es posible compactar decenas de miles de componentes activos (transistores, diodos, resistencias y hasta condensadores), en un sólo circuito de reducidas dimensiones (Chip). La anexión de los microprocesadores a las máquinas computadoras dieron lugar a un nuevo tipo de equipo que se denominan microcomputadoras. Con el desarrollo de los circuitos integrados, y como almacenamiento de información las memorias de semiconductores, surge la tercera generación de máquinas computadoras. Al aumentar la densidad y reducir el tamaño al mismo tiempo, se presenta un avance importantísimo en el diseño de circuitos electrónicos, y por ende en el diseño y construcción de computadoras.Usando la misma tecnología de los transistores, con ellos es posible agrupar cientos o miles de componentes en un paquete, que es similar en tamaño a un condensador pequeño, por lo que las computadoras se vuelven cada vez más baratas y asequibles a una mayor cantidad de personas. Su capacidad para impactar, se deriva del desarrollo de su tecnología asociada (software) que incluye: los métodos económico-matemáticos; la modelación aplicada a procesos de dirección; nuevos paquetes de programas en el campo del diseño, la estadística y la investigación; la existencia de lenguajes de propósito específico; y los nuevos enfoques en las técnicas de análisis y diseño de los sistemas; por lo que la programación adquiere una importante relevancia. Esta etapa la podemos caracterizar por "usted compra la computadora, pero tiene que comprar también su tecnología asociada". La introducción de esta nueva tecnología ha permitido un salto cualitativo de enormes proporciones en el desarrollo de las computadoras, ya que permitió ampliar en gran medida su campo de aplicación. Por su reducido tamaño puede ubicarse con facilidad en una oficina, laboratorio, etc, y estar concebida para atender un solo usuario, por lo que también se le suele llamar computadoras personales. Con el uso de las microcomputadoras desaparecen conceptos como por ejemplo, el de operador de la máquina, y toman mayor difusión otros como programas interactivos, puesto de trabajo automatizado, etc. Se estima, que con la revolución de los microprocesadores y el desarrollo que se espera de la electrónica en los próximos años, podamos hablar de una cuarta generación de máquinas computadoras, donde la premisa fundamental sería "le regalamos la computadora, pero usted tiene que comprar su tecnología asociada". 4 Sin embargo, a pesar del vertiginoso desarrollo que han tenido las computadoras, y la diversidad de aplicaciones donde pueden emplearse, sólo son capases de realizar cálculos elementales como secuencias de sumas, multiplicaciones, divisiones y operaciones lógicas. I.1 La evolución del Pentium. Microprocesador Los microprocesadores suelen estar recubiertos por una carcasa de protección. Los conductores que sobresalen del procesador mostrado arriba se conectan a unas pequeñas patillas metálicas que se sueldan a las placas de circuito integrado. Mas de 20 años de desarrollo han llevado a los microprocesadores de Intel del primitivo diseño 8080 de 8 bits, 6000 transitores y 2 Mhz, que se utilizó en el Altair (la primera computadora personal), al Pentium de 32 bits, 15 millones de transistores a 600 Mhz de hoy en día. Medidos en MIPS (millones de instrucciones por segundos), el primer Pentium a 66 Mhz alcanzó 112 MIPS, lo cual es unas 1800 veces más potente que el procesador 4040 que fue la base conceptual de lo que vendría mas tarde. Aunque el sofisticado Pentium debe parte de su linaje al primer diseño del 4040, sus predecesores más directos son los microprocesadores Intel 8080 y la línea x86, iniciada en 1876 con la 5 introducción del 8086. Los primeros miembros de la familia x86 tenían registros de 16 bits, un bus de 16 bits, y podían direccionar hasta 1 Mbyte de memoria física. El 8086 estaba en versiones de 4,77 – 8 y 10 Mhz. IBM eligió el procesador 8080 para su primer IBM – PC. Se estimó que este chip alcanzó 0,33 MIPS. Cuando apareció el 80286 en 1982 (empleado por primera vez por IBM en la PC – AT de 1984), tenía 134000 transistores y 1,2 MIPS (era más rápido y cuatro veces más potente que el 8080). Este microprocesadore introdujo el “modo protegido”, que permitía al CPU romper la barrera de los 640K de memoria (podía direccionar hasta 12 Mbyte de memoria). Este microprocesador suplantó rápidamente al 8086 como el estándar corporativo y se utilizó en millones de compatibles IBM PC – AT. Se tardó años en disponer de un Sistema Operativo en modo protegido (como lo hacen el OS/2 o el Microsoft Windows) debido a que los software y compiladores que explotaban las capacidades de un microprocesador por lo general aparecían años después de la aparición de un microprocesador. Aún así, gran parte del atractivo de 80286 estaba en que era compatible con las aplicaciones escritas para el 8080/8086. Tenía la capacidad de ejecutar todas sus bibliotecas de programas, y lo hacía más rápido que los chips anteriores. Intel se dio cuenta que el 80286 estaba “dañado en el cerebro” debido a su modelo de memoria segmentado basado en 64 segmentos de 286 Kb. La compañía lo reemplazó por el 80386, que tenía segmentos más grandes, aunque el 80286 sigue viviendo como un procesador incorporado en aplicaciones tales como los hornos de microondas. En 1985 Intel sacó con mucho ruido el diseño del microprocesador 80386DX. Inicialmente funcionaba a una velocidad de 16Mhz y contenía 275000 transistores. El 80386 era un procesador de 32 bits puros, y rápidamente estuvo en variantes de 16, 20, 25 y 33 Mhz. Inicialmente estaba entre 5 y 6 MIPS (unas 15 veces más potente que el 8086). Tenía registros de 32 bits, un bus de 32 bits y podía direccionar hasta 4GigaByte y 64bTeraByte de memoria virtual. El 80386 tenía mas herramientas de programación como un modo virtual 8086 (tanto el OS/2 como Windows utilizan el modo virtual 8086 para ejecutar múltiples sesiones de DOS) y una gestión de memoria mucho mejor que su predecesor el 80286. COMPAQ fue el primer gran fabricante en usar el 80386 en 1986, eclipsando el status de IBM por primera vez. En 1989 Intel presentó la familia de procesadores 486, con 1,2 millones de transistores y a velocidades de 25, 33 y 50 Mhz, con una potencia de proceso de 20 MIPS. Aunque podía parecer sólo un CPU 386DX crecida, el 486 (Intel abandonó la designación 80 en un esfuerzo por 6 diferenciarse de los competidores que ofrecían CPU parecidos) incluía una serie de innovaciones técnicas que le proporcionaban un mejor rendimiento que sus predecesores. El siguiente paso en la evolución de los CPUs incluyó la serie de microprocesadores que doblaban la velocidad de reloj, que hacían que un 486 funcionara al doble de velocidad que la placa madre (motherboard). Estos chips estaban a velocidades de 25/50 Mhz y 33/66 Mhz, llegando alcanzar 100Mhz el más rápido de todos (el 486DX4). En 1993 Intel saca al mercado el Pentium (nuevamente deja la denominación x86 para diferenciarse de los competidores con productos similares) con 3,3 millones de transistores, 100 Mhz y 112MIPS. En 1994 introduce el P6, 33% más rápido que el Pentium original, a 133Mhz y con 5,5 millones de transistores (más rápido que el Nx586 de NexGen, y con igual rapidez que el K5 de AMD y el M1 de Cyrix, sus mas fuertes competidores). En 1996 sale al mercado el Pentium MMX, con un set de instrucciones ampliado (fundamentalmente para aplicaciones en multimedia) a velocidades de 133, 166 y 230 Mhz. Actualmente trabajan la línea de los Pentium MMx a 230, 300, 400 Mhz. A mediados de 1996 comienzan a desarrollar una nueva generación de Pentium (los Pentium Pro y los Pentium II), a velocidades de 233, 266, 300 y 333 Mhz, soportando nuevas arquitecturas. Actualmente Intel a dejado de fabricar los Pentium, y Pentium MMX, concentrando sus esfuerzos en la versión comercial con los Pentium II, y en su versión más potente para servidores con los Pentium Pro. Por su parte NexGen sacó al mercado en 1997 el Nx686, con un promedio de 2 a 4 veces superior al Nx586. AMD puso en el mercado el K6, como sucesor del K5, con 6,5 millones de transistores. Para 1998 pretende sacar el K7 (10 a 15 millones de transistores) a 400 Mhz, y para el 2001 plantea el K8 (20 millones de transistores) a 600 Mhz. Por su parte IBM se ha asociado a Motorola y ha producido el PowerPC, microprocesador que es usado actualmente por la PowerMac y que logra compatibilizar dos plataformas hasta ahora incompatibles. 7 Evolución de los procesadores Intel: del 8080 al Pentium. 8080 Velocidad: 2Mhz MIPS :0,64 Transistores : 6,000 Bus interno: 8 bit 1974 1975 8088 Velocidad: 5Mhz MIPS :0,33 Transistores : 29,000 Bus interno: 16 bit 1976 1977 1978 80286 Velocidad: 8Mhz MIPS :1,2 Transistores : 134,000 Bus interno: 16 bit 1979 1980 1981 1982 8086 Velocidad: 5Mhz MIPS :0,33 Transistores : 29,000 Bus interno: 16 bit 80386 SX Velocidad: 16Mhz MIPS :2,5 Transistores : 275,000 Bus interno: 32 bit 1986 1987 486 DX Velocidad: 25 Mhz MIPS :20 Transistores : 1,2 millones Bus interno: 32 bit 1984 1985 80386DX Velocidad: 16 Mhz MIPS :6 Transistores : 275,000 Bus interno: 32 bit 486 SX Velocidad: 20 Mhz MIPS :16,5 Transistores : 1,18 millones Bus interno: 32 bit 1988 1983 1989 1990 PENTIUM Velocidad: 66 Mhz MIPS :112 Transistores : 3,1 millones Bus interno: 64 bit 1991 486 DX2 Velocidad: 50 Mhz MIPS :40 Transistores : 1,2 millones Bus interno: 32 bit 1992 PENTIUM II Velocidad: 233 Mhz MIPS :120 Transistores : 8,3 millones Bus interno: 64 bit 1993 1994 PENTIUM – MMX. Velocidad: 166 Mhz MIPS :116 Transistores : 5,6 millones Bus interno: 64 bit 1995 1996 1997 1 II Partes funcionales de una computadora. Sistema informático Un sistema informático suele estar compuesto por una unidad central de proceso (CPU), dispositivos de entrada, dispositivos de almacenamiento y dispositivos de salida. La CPU incluye una unidad aritméticológica (ALU), registros, sección de control y bus lógico. La unidad aritmético-lógica efectúa las operaciones aritméticas y lógicas. Los registros almacenan los datos y los resultados de las operaciones. La unidad de control regula y controla diversas operaciones. El bus interno conecta las unidades de la CPU entre sí y con los componentes externos del sistema. En la mayoría de las computadoras, el principal dispositivo de entrada es el teclado. Dispositivos de almacenamiento son los discos duros, flexibles (disquetes) y compactos (CD). Dispositivos de salida que permiten ver los datos son los monitores e impresoras. No es necesario saber cómo funciona una computadora para poder usarla, del mismo modo que podemos conducir un coche sin saber qué hay debajo del capó. La tecnología de programación asociada a estos equipos nos permite utilizarla sin saber nada acerca de cómo funcionan realmente. Alguien podría, no obstante sentirse incómodo en este tema, de modo que, para los que necesiten tranquilizarse, introduciremos algunos de los conceptos técnicos empleados en la informática, e intentaremos dar una idea de cómo funcionan las computadoras. La más barata de las calculadoras que se pueda comprar en el comercio local es una computadora en todos los aspectos, salvo en uno. Examinemos primero las semejanzas. Imagínese que utiliza este tipo de calculadora pulsando digamos, las 1 teclas etiquetadas con 2, +, 3, =, una tras otra, y observará que la calculadora consiste esencialmente de 5 partes: Una unidad de entrada, o sea, algo que permite al usuario comunicarse con la calculadora: el teclado. Una unidad de salida, esto es, algo que permite a la calculadora comunicarse con el usuario: la pantalla. Una memoria, o sea, algún lugar en que el número o números sobre los que se va a operar están almacenados: por ejemplo, el número 2 de la secuencia anterior ha de ser recordado mientras se está escribiendo el segundo número. Una unidad aritmética, esto es, un dispositivo que efectúa realmente las operaciones; por ejemplo, tomando dos números almacenados en lugares específicos de la memoria, sumando el uno al otro, y colocando el resultado en un lugar específico de la memoria. Una unidad de control, es decir, un dispositivo que coordina las actividades de las otras unidades; por ejemplo, enviando las señales adecuadas a la unidad de salida para asegurarse de que el resultado del cálculo es visible. Ahora bien, incluso la mayor de las computadoras tiene únicamente estas cinco unidades, aunque, naturalmente, difieren en el aspecto, tamaño, velocidad de procesamiento, etc. La unidad de entrada puede constituir una variada gama de dispositivos: lectoras de cintas y tarjetas perforadas (si bien éstas se están volviendo obsoletas rápidamente); teletipos y terminales, en los que un teclado se combina con una pantalla de televisión, de forma que el usuario pueda ver lo que ha escrito; dispositivos más especializados, tales como tableros de diseño, lápices fotosensibles, pantallas tactosensibles y dispositivos de entrada de habla. Algunos de estos dispositivos, las terminales en particular, se desdoblan también como dispositivos de salidas, lo cual permite que se use la computadora interactivamente, es decir, en una modalidad en la cual la computadora y el usuario se turnan para enviarse mensajes mutuamente. Los equipos de salida especiales incluyen monitores y generadores de habla. La memoria de una computadora es de dos clases, memoria principal y memoria secundaria(llamada también memoria de almacenamiento). Los números, o más en general los datos, que se encuentran en la memoria principal, pueden ser transferidos a la unidad aritmética para operar sobre ellos. Puesto que el tiempo 2 que se tarda en localizar y desplazar los datos en la memoria principal, determina, principalmente, la velocidad global de la computadora al realizar sus cálculos, ésta está diseñada para ser tan pequeña como sea factible desde el punto de vista de la rentabilidad. La memoria principal es pues, cara en relación a la memoria secundaria, que se usa para almacenar los datos que la memoria principal no requiere en ese momento. Los "discos duros" (hard disk) de las microcomputadoras y los "discos flexibles", son ejemplos de medios usados para memoria de almacenamiento. Considérese, por ejemplo, un programa de enseñanza asistido por computadora empleado en una clase de 100 alumnos, de los cuales sólo uno a la vez puede usar el programa. La información acerca de cada alumno estaría guardada en la memoria de almacenamiento; cuando un alumno utiliza el programa, su "expediente de alumno" se transferirá a la memoria principal, en la que se usaría según los requerimientos del programa. Al final de la sesión, el expediente actualizado del alumno se transferiría de nuevo a la memoria de almacenamiento. Las unidades aritméticas y de control de las computadoras difieren sólo cuantitativamente de las calculadoras. La unidad aritmética será capaz de realizar más operaciones que la +, -, *, /, de nuestra calculadora, y la unidad de control tendrá que supervisar unidades considerablemente más complejas. Por cierto que, el adjetivo "aritmética", es ahora engañoso, puesto que la mayor parte de las operaciones internas que realiza una computadora no son aritméticas en absoluto, sino que tienen que ver con, por ejemplo, comparar y desplazar datos. Unidad aritmética, unidad de control y memoria interna, pueden no ser tres dispositivos físicamente distintos. Las tres unidades juntas constituyen la "Unidad Central de Procesamiento (CPU)" o procesador. Las otras unidades se denominan "periféricos". Unidad de Memoria Unidad de Entrada Unidad Aritmética Unidad de Salida Unidad de Control 3 Fig 1 Componentes de una computadora. Los punteados indican el camino de las señales de control; las líneas continuas indican el camino de los datos. Resumiendo, podemos decir que los componentes básicos de una computadora son: i.) Memoria: Consiste en unidades en las que se almacena la información. Existe la memoria central(RAM, ROM, EPROM, etc), que son los dispositivos electromagnéticos dentro de la computadora en los que se registra o almacena la información; y la memoria externa, que son los dispositivos periféricos electromecánicos(harddisk, floppy disk, etc). ii.) Unidad Central de Procesamiento (CPU): Realiza las operaciones aritméticas y lógicas sobre las informaciones que se almacenan en la memoria central. iii.) Unidades de Entrada/Salida: Consisten en equipos a través de los cuales se realiza la introducción de los datos en la memoria de la computadora y la devolución de los resultados que se han obtenido. En sentido teórico todas las computadoras son las mismas, en cuanto a cualquier cosa que pueda hacerse con una, puede hacerse con otra, asumiendo que haya suficiente memoria y que no importa cuánto tarde. Por consiguiente los detalles técnicos acerca de los distintos dispositivos nos resultan, en gran parte, irrelevantes. 4 III Clasificación de las computadoras. Las computadoras pueden clasificarse de varias formas pero la que mejor permite el estudio de sus características es tomando como fundamento básico su modo de operación. De acuerdo a ello las computadoras se clasifican en dos tipos: - Analógicas - Digitales Las analógicas se caracterizan por el empleo de una magnitud física para la representación de una variable en un problema dado. Por ejemplo, en su analogía en cuanto al comportamiento del sistema, puede relacionarse el voltaje en dos puntos y la caída de agua de un embalse. Los circuitos integrados de estas computadoras son lineales o analógicos (amplificadores operacionales, reguladores de voltaje, osciladores,etc). Estas computadoras analógicas se emplean generalmente en la industria, para el control de procesos, donde es necesario medir magnitudes físicas, aunque en los últimos años estas aplicaciones están siendo absorbidas por las computadoras digitales. La precisión de las computadoras analógicas dependen de la precisión de los instrumentos empleados en la medición de las magnitudes físicas utilizadas en ellas. Además, por lo general, las computadoras analógicas presentan los resultados en forma de gráficos continuos sobre un papel o sobre una pantalla, por ejemplo, la pantalla de un osciloscopio. Por otra parte, las computadoras digitales, están compuestas de circuitos integrados lógicos o digitales(TTL y CMOS). De aquí que, la representación de una variable se realiza de forma numérica, es decir, se almacenan y procesan los diferentes valores de dicha variable, por ello su representación no tiene variación continua. La precisión de las computadoras digitales depende de la cantidad de cifras significativas por números que se pueda almacenar, y los resultados, generalmente se representan en forma de símbolos comprensibles para el hombre (números, letras, y caracteres en general) o a través de gráficos empleando un conjunto de puntos mas o menos unidos. 5 Las computadoras digitales son mas universales que las analógicas al poder resolver cualquier tipo de problema susceptible a ser representado mediante magnitudes numéricas. Como las computadoras digitales constituirán el tema a desarrollar en el presente curso, cada vez que hagamos referencia a las "computadoras", se estará indicando a las computadoras digitales. Al igual que no todo caballo es de carrera, también las distintas clases de computadoras se utilizan en distintas formas. La computadora "tradicional", voluminosa y cara (denominada actualmente mainframe), está organizada, por regla general, como un "sistema de tiempo compartido", es decir un sistema que puede ser utilizado simultáneamente por varios usuarios a la vez en terminales diferentes. Gracias a que las velocidades de los periféricos de entrada-salida es extremadamente lentas, con respecto a la velocidad de procesamiento, resulta posible que la computadora, por medio de un programa especial denominado Sistema Operativo, reparta su tiempo entre los usuarios, cada uno de los cuales (idealmente) parece estar recibiendo la atención única de la computadora. En el otro extremo tenemos las microcomputadora (computadoras personales), que están basados en la microelectrónica, y que su sistema operativo es invariablemente interactivo. Hemos planteado que una calculadora barata difería de una computadora en un aspecto. Podríamos eliminar esa diferencia gastando un poco mas de dinero en una calculadora que fuese "programable". Ahora bien, qué es un programa? Un programa es una secuencia de instrucciones que pueden desdoblarse en operaciones para las cuales sí existe soporte físico. IV Sistema de numeración. Organización lógica de la memoria. Uno de los principios fundamentales que rigen el funcionamiento de las computadoras es la necesidad de conservar información a través del 6 tiempo(almacenamiento de la información). Esto está determinado por el hecho de que a la máquina hay que suministrarle un conjunto de órdenes y datos a utilizar en el cumplimiento de estas órdenes, que son preparados a priori por el hombre, es decir, antes de que la computadora comience a ejecutar lo ordenado. Una vez que la computadora comienza el trabajo, cesa la interacción con el hombre, y no se reanuda hasta tanto haya terminado la ejecución del algoritmo. El hecho de que el hombre tenga que especificar todos los pasos y combinaciones que deben tenerse en cuenta en la ejecución del trabajo es, por sí mismo, justificativo de la necesidad de almacenar información en la memoria de la computadora. Sin embargo, la memoria de la computadora es uno de los recursos más caros con que cuenta esta máquina, por lo que se hace necesario tratar de buscar las vías para almacenar la mayor cantidad posible de información en el sistema de conjunto. No obstante, el tratar de ahorrar memoria puede conducirnos a elaborar programas excesivamente lentos en su ejecución, lo cual también resulta negativo, si se tiene en cuenta que el tiempo que consume del procesador central constituye un recurso caro en el sistema de cómputo. La unidad de memoria de una computadora puede diseñarse de diversos modos, de ahí que existen las memorias de núcleos magnéticos, de semiconductores, las de burbujas magnéticas, etc. El principio empleado en la construcción de memorias para las computadoras se basa en las propiedades biestable de la sustancia o mecanismo empleado en el diseño, es decir, la posibilidad de encontrarse en cada momento en uno de dos estados posibles, por ejemplo, para las memorias nagnéticas, los dos estados estables de magnetización en cada núcleo corresponde a los dos sentidos en que puede estar magnetizado el mismo; en las memorias de semiconductores bipolares, cada cédula se comporta como un biestable con un transistor conduciendo o saturado, y otro en corte. Si se establece una relación entre cada estado de la cédula con los dígitos "cero" y "uno", entonces dicho elemento se puede emplear para almacenar información codificada, es decir, si se encuentra en un estado estará representando un cero, y en el otro estado un uno, de acuerdo al convenio establecido. Como dicha cédula sólo es capaz de representar los dígitos que componen el sistema binario de numeración, se dice entonces que es capaz de almacenar un bit de información (contracción de "binary digit"). Ocho cédulas interconextadas de información, constituyen un byte, y es en él donde se puede almacenar la menor cantidad de información en una 7 computadora. Cómo nos comunicamos con la computadora?. El método usado para comunicarse con la computadora es muy importante. La computadora recibe ordenes en forma de instrucciones que puede aceptar y responder. La computadora no puede entender un lenguaje humano tal como el inglés o castellano; ella está construida electrónicamente para responder a instrucciones en "lenguaje de máquina", y éste está basado en el sistema de numeración binario. IV.1 Qué es un sistema de numeración? Un sistema de numeración es el conjunto de reglas y convenios que permiten la representación de todos los números mediante varios signos o símbolos. Los sistemas mas conocidos son el decimal y el romano. Estamos acostumbrados a trabajar con el sistema de numeración decimal desde tiempos remotos, producto de que el hombre desde un inicio se auxiliaba con los dedos de sus manos (10 dedos) para contar. Este sistema de base 10 permite representa combinaciones de dígitos del 0 al 9; pero no es el único sistema de numeración que existe. El sistema binario es de base 2, y sus números se forman por combinaciones de los dígitos 0 y 1. Así tenemos que: binario 0 1 10 11 100 101 decimal 0 1 2 3 4 5 La representación de un número binario en decimal es por ejemplo: 101011101 = 1.28 +0.27+1.26+0.25+1.24+1.23+1.22+0.21+1.20 La representación de un número decimal a binario es dividiendo el número entre 2 8 y tomando sus restos. Ejemplo, llevar el número 35 a binario. 35 : 2 1 17 : 2 1 8:2 0 4:2 0 2:2 0 1:2 1 0 100011 Claramente, nos resulta mucho mas fácil comunicarnos con la computadora en un lenguaje como el inglés o el castellano. Por su puesto, la computadora no entiende el inglés o el castellano, pero los hombres han desarrollado lenguajes que permiten comunicarse con la computadora de forma mucho mas cerca que el lenguaje de máquina. A continuación mostraremos algunas unidades de medidas usadas para indicar la capacidad de las memorias: 1 Byte = 8 bit 1 KByte = 1024 bytes 1 MByte = 1024 Kbytes 1 Gbyte = 1024 Mbyte 1 Tbyte = 1024 GByte 20 = 1 21 = 2 23 = 4 24 = 8 25 = 16 26 = 32 27 = 64 28 = 128 29 = 512 210 = 1024 9 V Organización de la información y sus soportes. Veamos algunos conceptos importantes relacionados con el de memoria (es posible que las denominaciones y nomenclatura varíen de un autor a otro). El lugar (unidad) donde se almacena la información sobre memoria interna se denomina localización o palabra; y sobre memoria externa registro. La memoria está numerada consecutivamente, según sus unidades, y el número que identifica o corresponde a una unidad se denomina dirección. También se le llama apuntador, referencia, enlace o Link. En cada unidad de memoria se puede almacenar un valor que se denomina contenido. El contenido es interpretado por el programador, quien lo identificará como dato o como programa convenientemente. El contenido de cualquier localización por tanto puede ser números, caracteres alfanuméricos, apuntadores, o cualquier otra referencia que el programador desee. Hemos planteado que la memoria nos interesa ya que es donde se almacena la información. Aunque éste será con el concepto que mas trabajaremos, sólo plantearemos su definición y características desde el punto de vista informático. “La información se presenta como una organización particular de materia o energía, representada mediante un conjunto de elementos básicos o símbolos o códigos” La expresión de la información en un conjunto de símbolos determinados se llama codificación. Generalmente tenemos que la unión de varios campos tiene un determinado significado desde el punto de vista de la estructura. A esta unión, mediante la cual se crean unidades estructurales se les denomina registro, artículo, nodo o entidad. 10 Los registros definidos con los mismos campos se agrupan en listas o ficheros. Por tradición cuando el almacenamiento se realiza en memoria interna se le llama lista, y cuando está en memoria externa se le llama fichero. Recordemos que una premisa fundamental que debemos respetar siempre en el trabajo con datos almacenados en la memoria es la no existencia del "mejor método", sino del método más adecuado para la situación concreta de un programa determinado, y que las leyes que rigen la programación están en constante desarrollo, por lo cual lo que hoy nos parece la máxima expresión de eficiencia en cuanto a tiempo de procesamiento o ejecución y ahorro de memoria, puede no serlo mañana. Es preciso recordar que es el hombre el más preciado recurso en le trabajo de creación intelectual denominado programación. Luego, el esfuerzo que éste haga para seleccionar los métodos más eficientes en cada caso, redundará en la eficiencia del trabajo. LENGUAJE ORIGEN DEL NOMBRE AÑO USOS/COMENTARIOS ADA Augusta ADA Byron (Lady Lovelace) 1979 Derivado de Pascal, utilizado principalmente por los militares. ALGOL ALGOrithmic Language (Lenguaje ALGOL algorítmico) 1960 Primer lenguaje de programación procedural estructurado, utilizado sobre todo para resolver problemas matemáticos. APL A Programming Language (Un lenguaje de programación) 1961 Lenguaje interpretado que utiliza un amplio conjunto de símbolos especiales y que se caracteriza por su brevedad. Utilizado fundamentalmente por los matemáticos. BASIC Beginners All-Purpose Symbolic Instruction Code(Código de instrucciones simbólicas multipropósito para principiantes) 1965 Lenguaje de programación de alto nivel, utilizado con frecuencia por programadores principiantes. C Predecesor del lenguaje de programación B, fue desarrollado en Bell Laboratory, en 1972 1972 Lenguaje de programación compilado y estructurado, que suele utilizarse en numerosos lugares de trabajo porque sus programas pueden transferirse fácilmente entre distintos tipos de computadoras. COBOL COmmon Business-Oriented Language (Lenguaje simbólico de programación orientado a aplicaciones comerciales) 1959 Lenguaje de programación semejante al idioma inglés, que hace hincapié en las estructuras de datos. De amplia utilización, principalmente en empresas. FORTH Lenguaje de cuarta (FOuRTH) generación 1970 Lenguaje estructurado e interpretado de fácil ampliación. Ofrece una alta funcionalidad en un espacio reducido. FORTRAN FORmula TRANslation (Traducción de fórmulas) 1954 Diseñado en un principio para usos científicos y de ingeniería, se trata de un lenguaje compilado de alto nivel que hoy se utiliza en numerosos campos. Precursor de diversos conceptos, como las variables, las instrucciones condicionales y las subrutinas 11 compiladas por separado. LISP LISt Processing (Procesamiento de listas) 1960 Lenguaje de programación orientado a la generación de listas, utilizado principalmente para manipular listas de datos. Lenguaje interpretado que suele utilizarse en las investigaciones y está considerado como el lenguaje estándar en proyectos de inteligencia artificial. LOGO Derivado del griego logos, ‘palabra’. 1968 Lenguaje de programación que suele utilizarse con niños. Presenta un sencillo entorno de dibujo y varias prestaciones de mayor nivel del lenguaje LISP. Fundamentalmente educativo. Modula-2 MODUlar LAnguage-2, diseñado como fase secundaria de Pascal (diseñados ambos por Niklaus Wirth) 1980 Lenguaje que hace hincapié en la programación modular. Es un lenguaje de alto nivel basado en Pascal, que se caracteriza por la ausencia de funciones y procedimientos estandarizados. Pascal Blaise PASCAL, matemático e inventor del primer dispositivo de computación. 1971 Lenguaje compilado y estructurado basado en ALGOL. Agrega tipos y estructuras de datos simplificando la sintaxis. Al igual que el C, se trata de un lenguaje de programación estándar para microcomputadoras. PILOT Programmed Inquiry, Language Or Teaching (Consulta, lenguaje o aprendizaje de investigación programada) 1969 Lenguaje de programación utilizado fundamentalmente para crear aplicaciones destinadas a instrucciones asistidas por computadora. Se caracteriza por utilizar un mínimo de sintaxis. PL/1 Programming Language 1 (Lenguaje de programación uno) 1964 Diseñado para combinar las principales virtudes del FORTRAN, COBOL y ALGOL, se trata de un lenguaje de programación complejo. Compilado y estructurado, es capaz de gestionar errores y de procesar multitareas, y se emplea en entornos académicos y de investigación. Supercomputadora Cray La supercomputadora Cray-1 (diseñada por Seymour Cray de Cray Research, de Eagan, Minnesota, EEUU) fue la primera capaz de ejecutar más de 100 millones de operaciones de coma flotante por segundo. Entre los numerosos problemas tecnológicos que hubo que resolver, uno de los más importantes fue eliminar el calor generado por la alta velocidad de las operaciones lógicas. Esto se consiguió montando los circuitos sobre placas verticales enfriadas mediante un sistema 12 basado en gas freón. Aunque en la actualidad ya se han construido máquinas más rápidas, la Cray-1 sigue utilizándose para estudios matemáticos de problemas muy complejos, como por ejemplo el análisis del habla, la previsión climatológica e interrogantes básicos en física y química. Además, la Cray-1 se utiliza como unidad de medida informal para las supercomputadoras más nuevas, algunas de las cuales se proyectan ahora para ser equivalentes a 1.000 crays. 13