UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI HISTORIA Y DESCRIPCIÓN FUNCIONAL DE LOS SISTEMAS DE CÓMPUTOS 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. . 1 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI Cometa Bennett En 1970, el astrónomo amateur sudafricano J. Bennett observó este brillante cometa con una larga cola gaseosa. Mediante una técnica informática llamada cartografía isofotográfica se ha realizado esta imagen asignando colores diferentes a los diversos tonos grises de la fotografía original en blanco y negro. Shell (informática), elemento de software, que puede ser un programa independiente o constituir un elemento básico de un sistema operativo. Proporciona una comunicación directa entre el usuario y el propio sistema operativo, y así facilita la ejecución de órdenes o comandos del sistema y de los programas que se ejecutan en él. Con un shell se busca un uso más simple, generalmente mediante la utilización de menús, cajas de diálogo y ayudas acerca de su uso o de la sintaxis de órdenes. Se trata, en definitiva, de la parte del sistema que se muestra al usuario final, para que interactúe con él. Accesorio (informática), periférico o dispositivo complementario de un ordenador o computadora, como un ratón (mouse) o un módem. El accesorio ofrece una funcionalidad que no está disponible en la máquina original, pero que no es necesaria para el funcionamiento de la misma. No obstante, el accesorio puede resultar imprescindible para determinadas tareas; por ejemplo, el módem es imprescindible para conectarse a Internet. La incorporación del ordenador o computadora en las oficinas, constituyó una revolución en los sistemas ofimáticos, ya que las máquinas ofrecían el medio para realizar comunicaciones e intercambio de información instantáneos entre compañeros de trabajo, recursos y equipos. Los accesorios, como el mouse (ratón), facilitan el desplazamiento dentro de las aplicaciones (programas de computadora). Los rápidos avances tecnológicos han mejorado 2los sistemas informáticos y, al mismo tiempo, UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI han disminuido los precios, haciendo que los equipos sean más asequibles. INTRODUCCIÓN a la Arquitectura (informática), Arquitectura (informática), término general que se aplica a la estructura de un sistema informático o de una parte del mismo. El término se aplica también al diseño del software de sistema, por ejemplo, el sistema operativo, y a la combinación de hardware y software básico que comunica los aparatos de una red informática. La arquitectura de ordenadores se refiere a toda una estructura y a los detalles necesarios para que sea funcional, es decir, cubre sistemas informáticos, microprocesadores, circuitos y programas del sistema. Por lo general, el término no suele referirse a los programas de aplicación, como hojas de cálculo o procesadores de textos, que son necesarios para realizar una tarea pero no para que el sistema funcione. ELEMENTOS DE DISEÑO Al diseñar un sistema informático, se tienen en cuenta los cinco elementos fundamentales que componen el hardware: la unidad aritmético-lógica, la unidad de control, la memoria, la entrada y la salida. La unidad aritmético-lógica realiza operaciones aritméticas y compara valores numéricos. La unidad de control dirige el funcionamiento de la computadora recibiendo instrucciones del usuario y transformándolas en señales eléctricas que puedan ser comprendidas por los circuitos del ordenador. La combinación de la unidad aritmético-lógica y la unidad de control se denomina unidad central de procesamiento, o CPU (siglas en inglés). La memoria almacena instrucciones y datos. Las secciones de entrada y salida permiten respectivamente que la computadora reciba y envíe datos. Se necesitan arquitecturas diferentes de hardware debido a las necesidades especializadas de los distintos sistemas y usuarios. Por ejemplo, un usuario puede necesitar que su sistema muestre gráficos de forma extremadamente rápida, mientras que otro tal vez necesite buscar eficazmente en una base de datos o tener un consumo bajo de energía, como en el caso de ordenadores personales portátiles. Además del diseño del hardware, se debe considerar los sistemas operativos que harán funcionar el sistema. El software, como los lenguajes de programación y los sistemas operativos, hace que los detalles de la arquitectura del hardware resulten invisibles para el usuario. Por ejemplo, diferentes computadoras que empleen el lenguaje de programación C o el sistema operativo UNIX pueden parecer iguales desde el punto de vista del usuario aunque la arquitectura de hardware sea diferente. ARQUITECTURA DE PROCESAMIENTO Una computadora ejecuta una instrucción en cinco pasos. En primer lugar, la unidad de control recupera la instrucción desde la memoria; por ejemplo, la instrucción de sumar dos números. En segundo lugar, la unidad de control descodifica la instrucción y la convierte en señales electrónicas que controlan la computadora. En tercer lugar, la unidad de control recupera los datos necesarios para ejecutar la instrucción (en este caso, los dos números). En cuarto lugar, la unidad aritmético-lógica ejecuta la operación (la adición de ambos números). En quinto lugar, la unidad de control almacena el resultado (en este caso, el número resultante de la suma). 3 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI Las primeras computadoras sólo empleaban instrucciones sencillas, porque el coste de los dispositivos electrónicos capaces de ejecutar instrucciones complejas era muy elevado. A medida que este coste fue disminuyendo, a lo largo de la década de 1960, fueron posibles instrucciones más complicadas. Las instrucciones complejas (instrucciones únicas que especifican operaciones múltiples) pueden ahorrar tiempo al evitar que el ordenador tenga que recuperar instrucciones adicionales. Por ejemplo, si se combinan siete operaciones en una instrucción, se eliminan seis de los pasos de recuperación de instrucciones, y la computadora tarda menos tiempo en procesar la operación correspondiente. Los ordenadores que combinan varias operaciones en una sola instrucción se denominan ordenadores CISC. Sin embargo, la mayoría de los programas no utilizan instrucciones complejas, sino que constan esencialmente de instrucciones simples. Cuando estas instrucciones simples se ejecutan en una arquitectura CISC, el proceso es más lento, porque en un diseño CISC todas las instrucciones, simples o complejas, tardan más en ser descodificadas. Una estrategia alternativa es volver a diseños que utilizan sólo juegos de instrucciones sencillas y hacer que las operaciones más usadas se ejecuten más rápidamente para aumentar el rendimiento global. Las computadoras que emplean este diseño se llaman RISC. Los diseños RISC son especialmente rápidos para realizar los cómputos numéricos necesarios en aplicaciones científicas, de gráficos y de ingeniería. Los llamados procesadores de señales digitales son arquitecturas CISC especializadas para acelerar el procesado de señales digitalizadas de audio y vídeo. ARQUITECTURAS ABIERTAS Y CERRADAS La CPU de un ordenador está conectada con la memoria y con el mundo exterior a través de una arquitectura que puede ser abierta o cerrada. Las arquitecturas abiertas pueden ampliarse después de la construcción del sistema, generalmente añadiendo circuitos adicionales, por ejemplo, conectando al sistema principal un chip con un nuevo microprocesador. Las especificaciones del sistema se hacen públicas, lo que permite que otras empresas puedan fabricar los productos de expansión. Las arquitecturas cerradas suelen utilizarse en computadoras especializadas que no necesitan ampliaciones, como los microprocesadores que controlan los hornos de microondas. Algunos fabricantes de ordenadores han empleado arquitecturas cerradas para que sus clientes obtengan los circuitos de ampliación únicamente a través de ellos. El fabricante cobra más, pero las opciones para el consumidor se reducen. ARQUITECTURA DE REDES Las computadoras se comunican por medio de redes. La red más sencilla es una conexión directa entre dos computadoras. Sin embargo, también pueden conectarse a través de grandes redes que permiten a los usuarios intercambiar datos, comunicarse mediante 4 correo electrónico y compartir recursos, por ejemplo, impresoras. UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI Las computadoras pueden conectarse de distintas formas. En una configuración en anillo, los datos se transmiten a lo largo del anillo, y cada computadora examina los datos para determinar si van dirigidos a ella. Si no es así, los transmite a la siguiente computadora del anillo. Este proceso se repite hasta que los datos llegan a su destino. Una red en anillo permite la transmisión simultánea de múltiples mensajes, pero como varias computadoras comprueban cada mensaje, la transmisión de datos resulta más lenta. En una configuración de bus, los ordenadores están conectados a través de un único conjunto de cables denominado bus. Un ordenador envía datos a otro transmitiendo a través del bus la dirección del receptor y los datos. Todos los ordenadores de la red examinan la dirección simultáneamente, y el indicado como receptor acepta los datos. A diferencia de una red en anillo, una red de bus permite que un ordenador envíe directamente datos a otro. Sin embargo, en cada momento sólo puede transmitir datos una de las computadoras, y las demás tienen que esperar para enviar sus mensajes. En una configuración en estrella, los ordenadores están conectados con un elemento integrador llamado hub. Las computadoras de la red envían la dirección del receptor y los datos al hub, que conecta directamente los ordenadores emisor y receptor. Una red en estrella permite enviar simultáneamente múltiples mensajes, pero es más costosa porque emplea un dispositivo adicional —el hub— para dirigir los datos. AVANCES RECIENTES Uno de los problemas en arquitectura de ordenadores es la diferencia entre la velocidad de la CPU y la velocidad con que la memoria proporciona instrucciones y datos. Las CPU modernas pueden procesar instrucciones en 3 nanosegundos (3.000 millonésimas de segundo). Un acceso a memoria típico, en cambio, requiere 70 nanosegundos, y cada juego de instrucciones puede suponer múltiples accesos. Para compensar esta disparidad se han diseñado nuevos chips que sitúan cerca de la CPU memorias muy rápidas llamadas caché. Debido a su proximidad a la CPU y a su rapidez, las memorias caché pueden suministrar instrucciones y datos más rápidamente que la memoria normal. La memoria caché almacena las instrucciones y datos empleados más frecuentemente, y mejora notablemente la eficacia de la computadora. Aunque una memoria caché más grande puede contener más datos, también resulta proporcionalmente más lenta. Por eso, los arquitectos de ordenadores emplean diseños con múltiples memorias caché. En estos diseños se coloca la memoria caché más pequeña y rápida más cerca de la CPU, y se sitúa más lejos de ésta una segunda memoria caché mayor y más lenta. Esta disposición permite que la CPU utilice a velocidad máxima las instrucciones y datos más usados, y que sólo opere más lentamente cuando accede a la memoria caché secundaria. El empleo de memorias caché diferentes para instrucciones y datos también permite a la CPU recuperar simultáneamente una instrucción y un dato. Otra estrategia para aumentar la velocidad y la eficacia es el uso de múltiples unidades aritmético-lógicas para efectuar operaciones simultáneas, la llamada ejecución superescalar. En este diseño, las instrucciones se recuperan en grupos. La unidad de control examina cada grupo para comprobar si contiene instrucciones que pueden ejecutarse a la vez. Algunos diseños llegan 5a ejecutar seis operaciones simultáneamente. UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI Sin embargo, es raro que se ejecuten tantas instrucciones simultáneas, por lo que en promedio la CPU no llega a multiplicar por seis el rendimiento. A veces se combinan varias computadoras en sistemas únicos llamados procesadores paralelos. Cuando una máquina tiene más de 1.000 unidades aritmético-lógicas, se dice que es masivamente paralela. Estas máquinas se usan fundamentalmente para cálculos científicos o de ingeniería, que exigen gran cantidad de cómputos numéricos. Se han construido ordenadores paralelos que contienen hasta 16.000 procesadores Programación informática, Acción de programar, es decir, de establecer una serie de instrucciones para que el ordenador o computadora ejecute una tarea. Previamente hay que realizar una serie de trabajos que tienen por objeto la definición de la tarea, el análisis de la información que se quiere obtener (información de salida) y de los datos que se precisan para ello (información de entrada), y el establecimiento del algoritmo, o procedimiento de cálculo, que va a permitir transformar una información en otra. Para esta labor de análisis, el programador utiliza una serie de herramientas, entre las que destacan los diagramas de flujo y las tablas de decisión. Resuelto del problema desde el punto de vista lógico, se utiliza un lenguaje de programación para codificar la secuencia de instrucciones que el ordenador debe ejecutar para realizar la tarea. Escrito el programa, hay verificarlo, es decir, someterlo a pruebas que determinen si puede realizar la tarea prevista, lo que se consigue simulando situaciones que se puedan comprobar; a esto se le denomina depuración. Una vez verificado, el programa se debe optimizar, con el fin de que utilice los recursos del sistema del modo más eficiente. Es muy importante documentar el programa, es decir, escribir una descripción del mismo que permita actuar sobre él a un programador distinto del que lo creó. Además, si el programa va a ser utilizado por múltiples usuarios, hay que redactar su manual de instrucciones. Existe, finalmente, otro requisito importante en programación informática: que se pueda realizar el mantenimiento del programa, esto es, su adaptación a variantes de la tarea que se puedan presentar o a novedades que aparezcan en el sistema informático. 6 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI LENGUAJE DE PROGRAMACIÓN INTRODUCCIÓN Lenguaje de programación, en informática, cualquier lenguaje artificial que puede utilizarse para definir una secuencia de instrucciones para su procesamiento por un ordenador o computadora. Es complicado definir qué es y qué no es un lenguaje de programación. Se asume generalmente que la traducción de las instrucciones a un código que comprende la computadora debe ser completamente sistemática. Normalmente es la computadora la que realiza la traducción. Aplicación de lenguajes de programación Los lenguajes de programación permiten comunicarse con los ordenadores o computadoras. Una vez identificada una tarea, el programador debe traducirla o codificarla a una lista de instrucciones que la computadora entienda. Un programa informático para determinada tarea puede escribirse en varios lenguajes. Según la función, el programador puede optar por el lenguaje que implique el programa menos complicado. También es importante que el programador elija el lenguaje más flexible y más ampliamente compatible para el caso de que el programa tenga varias aplicaciones. Los ejemplos que se ven en la ilustración son programas escritos para calcular el promedio de una serie de números. C y BASIC son los lenguajes de computadora más utilizados. En el recuadro inferior de la ilustración se muestra cómo una computadora procesará y ejecutará los comandos de los programas. LENGUAJES DE BAJO NIVEL Vistos a muy bajo nivel, los microprocesadores procesan exclusivamente señales electrónicas binarias. Dar una instrucción a un microprocesador supone en realidad enviar series de unos y ceros espaciadas en el tiempo de una forma determinada. Esta secuencia de señales se denomina código máquina. El código representa normalmente datos y números e instrucciones para manipularlos. Un modo más fácil de comprender el código máquina es dando a cada instrucción un mnemónico, como por ejemplo STORE, ADD o JUMP. Esta abstracción da como resultado el ensamblador, un lenguaje de muy bajo nivel que es específico de cada microprocesador. Los lenguajes de bajo nivel permiten crear programas muy rápidos, pero que son a menudo difíciles de aprender. Más importante es el hecho de que los programas escritos en un bajo nivel son prácticamente específicos para cada7 procesador. Si se quiere ejecutar el programa UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI en otra máquina con otra tecnología, será necesario reescribir el programa desde el principio. LENGUAJES DE ALTO NIVEL Por lo general se piensa que los ordenadores son máquinas que realizan tareas de cálculos o procesamiento de textos. La descripción anterior es sólo una forma muy esquemática de ver una computadora. Hay un alto nivel de abstracción entre lo que se pide a la computadora y lo que realmente comprende. Existe también una relación compleja entre los lenguajes de alto nivel y el código máquina. Los lenguajes de alto nivel son normalmente fáciles de aprender porque están formados por elementos de lenguajes naturales, como el inglés. En BASIC, el lenguaje de alto nivel más conocido, los comandos como "IF CONTADOR = 10 THEN STOP" pueden utilizarse para pedir a la computadora que pare si CONTADOR es igual a 10. Por desgracia para muchas personas esta forma de trabajar es un poco frustrante, dado que a pesar de que las computadoras parecen comprender un lenguaje natural, lo hacen en realidad de una forma rígida y sistemática. INTÉRPRETES Y COMPILADORES La traducción de una serie de instrucciones en lenguaje ensamblador (el código fuente) a un código máquina (o código objeto) no es un proceso muy complicado y se realiza normalmente por un programa especial llamado compilador. La traducción de un código fuente de alto nivel a un código máquina también se realiza con un compilador, en este caso más complejo, o mediante un intérprete. Un compilador crea una lista de instrucciones de código máquina, el código objeto, basándose en un código fuente. El código objeto resultante es un programa rápido y listo para funcionar, pero que puede hacer que falle el ordenador si no está bien diseñado. Los intérpretes, por otro lado, son más lentos que los compiladores ya que no producen un código objeto, sino que recorren el código fuente una línea cada vez. Cada línea se traduce a código máquina y se ejecuta. Cuando la línea se lee por segunda vez, como en el caso de los programas en que se reutilizan partes del código, debe compilarse de nuevo. Aunque este proceso es más lento, es menos susceptible de provocar fallos en la computadora. Código fuente, en informática, las instrucciones de programa legibles por el programador y escritas en un lenguaje ensamblador o de más alto nivel. El concepto contrario es el código objeto, que se deriva del código fuente y está diseñado para ser legible sólo por la máquina. Código objeto, en informática, código generado por un compilador o un ensamblador, traducido a partir del código fuente de un programa. Casi siempre este término se refiere al código máquina 8 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI que puede ejecutarse directamente en la unidad central de proceso (CPU) del sistema, pero también puede ser código fuente de lenguaje ensamblador o una variante de código máquina. Programa, en informática, sinónimo de software, el conjunto de instrucciones que ejecuta un ordenador o computadora. El término puede referirse al código fuente original o a la versión ejecutable (en lenguaje máquina) de un componente de software. Cuando se habla de un programa se supone un cierto grado de terminación, o sea, se da por hecho que están presentes todas las instrucciones y archivos necesarios para la interpretación o compilación del programa. Por otro lado, se entiende que un programa ejecutable puede cargarse en un entorno determinado y ejecutarse independientemente de otros programas Unidad central de proceso INTRODUCCIÓN Unidad central de proceso o UCP (conocida por sus siglas en inglés, CPU), circuito microscópico que interpreta y ejecuta instrucciones. La CPU se ocupa del control y el proceso de datos en las computadoras. Generalmente, la CPU es un microprocesador fabricado en un chip, un único trozo de silicio que contiene millones de componentes electrónicos. El microprocesador de la CPU está formado por una unidad aritmético-lógica que realiza cálculos y comparaciones, y toma decisiones lógicas (determina si una afirmación es cierta o falsa mediante las reglas del álgebra de Boole); por una serie de registros donde se almacena información temporalmente, y por una unidad de control que interpreta y ejecuta las instrucciones. Para aceptar órdenes del usuario, acceder a los datos y presentar los resultados, la CPU se comunica a través de un conjunto de circuitos o conexiones llamado bus. El bus conecta la CPU a los dispositivos de almacenamiento (por ejemplo, un disco duro), los dispositivos de entrada (por ejemplo, un teclado o un mouse) y los dispositivos de salida (por ejemplo, un monitor o una impresora). FUNCIONAMIENTO DE LA CPU Cuando se ejecuta un programa, el registro de la CPU, llamado contador de programa, lleva la cuenta de la siguiente instrucción, para garantizar que las instrucciones se ejecuten en la secuencia adecuada. La unidad de control de la CPU coordina y temporiza las funciones de la CPU, tras lo cual recupera la siguiente instrucción desde la memoria. En una secuencia típica, la CPU localiza la instrucción en el dispositivo de almacenamiento correspondiente. La instrucción viaja por el bus desde la memoria hasta la CPU, donde se almacena en el registro de instrucción. Entretanto, el contador de programa se incrementa en uno para prepararse para la siguiente instrucción. A continuación, la instrucción actual es analizada por un descodificador, que determina lo que hará la instrucción. Cualquier dato requerido por la instrucción es recuperado desde el dispositivo de almacenamiento 9 correspondiente y se almacena en el registro de datos de la CPU. A continuación, la CPU UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI ejecuta la instrucción, y los resultados se almacenan en otro registro o se copian en una dirección de memoria determinada. Inteligencia artificial, Término que, en su sentido más amplio, indicaría la capacidad de un artefacto de realizar los mismos tipos de funciones que caracterizan al pensamiento humano. La posibilidad de desarrollar un artefacto así ha despertado la curiosidad del ser humano desde la antigüedad; sin embargo, no fue hasta la segunda mitad del siglo XX, cuando esa posibilidad se materializó en herramientas tangibles. El término inteligencia artificial (IA) fue acuñado en 1956 por John McCarthy, del Instituto de Tecnología de Massachussets. En ese año se celebró la conferencia de Dartmouth, en Hanover (Estados Unidos), y en ella, McCarthy, Marvin Minsky, Nathaniel Rochester y Claude E. Shannon establecieron las bases de la inteligencia artificial como un campo independiente dentro de la informática. Previamente, en 1950, Alan M. Turing había publicado un artículo en la revista Mind, titulado “Computing Machinery and Intelligence” (“Ordenador e inteligencia”), en el que reflexionaba sobre el concepto de inteligencia artificial y establecía lo que luego se conocería como el test de Turing, una prueba que permite determinar si un ordenador o computadora se comporta conforme a lo que se entiende como artificialmente inteligente o no. Con el avance de la ciencia moderna la búsqueda de la IA ha tomado dos caminos fundamentales: la investigación psicológica y fisiológica de la naturaleza del pensamiento humano, y el desarrollo tecnológico de sistemas informáticos cada vez más complejos. En este sentido, el término IA se ha aplicado a sistemas y programas informáticos capaces de realizar tareas complejas, simulando el funcionamiento del pensamiento humano, aunque todavía muy lejos de éste. En esta esfera los campos de investigación más importantes son el procesamiento de la información, el reconocimiento de modelos, los juegos y las áreas aplicadas, como el diagnóstico médico. Un ejemplo de los logros alcanzados fue la partida de ajedrez que el superordenador de IBM denominado Deep Blue ganó, en mayo de 1997, al campeón del mundo Gari Kaspárov. Algunas áreas de la investigación actual del procesamiento de la información están centradas en programas que permiten a un ordenador o computadora comprender la información escrita o hablada, y generar resúmenes, responder a preguntas específicas o redistribuir datos a los usuarios interesados en determinados sectores de esta información. En esos programas es esencial la capacidad del sistema de generar frases gramaticalmente correctas y de establecer vínculos entre palabras e ideas. La investigación ha demostrado que mientras que la lógica de la estructura del lenguaje, su sintaxis, está relacionada con la programación, el problema del significado, o semántica, es mucho más profundo, y va en la dirección de una auténtica inteligencia artificial. Actualmente existen dos tendencias en cuanto al desarrollo de sistemas de IA: los sistemas expertos y las redes neuronales. Los sistemas expertos intentan reproducir el razonamiento humano de forma simbólica. Las redes neuronales lo hacen desde una perspectiva más biológica (recrean la estructura de un cerebro humano mediante algoritmos genéticos). A pesar de la complejidad de ambos sistemas 1los resultados distan mucho de un auténtico 0 pensamiento inteligente. UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI Muchos científicos se muestran escépticos acerca de la posibilidad de que alguna vez se pueda desarrollar una verdadera IA. El funcionamiento de la mente humana todavía no ha llegado a conocerse en profundidad y, en consecuencia, el diseño informático seguirá siendo esencialmente incapaz de reproducir esos procesos desconocidos y complejos. LISP, en informática, acrónimo de List Processing. Un lenguaje de programación para ordenadores o computadoras orientado a la generación de listas, desarrollado en 1959-1960 por John McCarthy y usado principalmente para manipular listas de datos. El lenguaje LISP constituyó un cambio radical con respecto a los lenguajes procedurales (FORTRAN, ALGOL) que se desarrollaban por entonces. El LISP es un lenguaje interpretado, en el que cada expresión es una lista de llamadas a funciones. Este lenguaje se sigue utilizando con frecuencia en investigación y en círculos académicos, y fue considerado durante mucho tiempo el lenguaje modelo para la investigación de la inteligencia artificial (IA), aunque el Prolog ha ganado terreno durante los últimos años. 1 1 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI ORDENADOR INTRODUCCIÓN Ordenador o Computadora, dispositivo electrónico capaz de recibir un conjunto de instrucciones y ejecutarlas realizando cálculos sobre los datos numéricos, o bien compilando y correlacionando otros tipos de información. El mundo de la alta tecnología nunca hubiera existido de no ser por el desarrollo del ordenador o computadora. Toda la sociedad utiliza estas máquinas, en distintos tipos y tamaños, para el almacenamiento y manipulación de datos. Los equipos informáticos han abierto una nueva era en la fabricación gracias a las técnicas de automatización, y han permitido mejorar los sistemas modernos de comunicación. Son herramientas esenciales prácticamente en todos los campos de investigación y en tecnología aplicada. 2 TIPOS DE ORDENADORES O COMPUTADORAS En la actualidad se utilizan dos tipos principales de ordenadores: analógicos y digitales. Sin embargo, el término ordenador o computadora suele utilizarse para referirse exclusivamente al tipo digital. Los ordenadores analógicos aprovechan la similitud matemática entre las interrelaciones físicas de determinados problemas y emplean circuitos electrónicos o hidráulicos para simular el problema físico. Los ordenadores digitales resuelven los problemas realizando cálculos y tratando cada número dígito por dígito. Las instalaciones que contienen elementos de ordenadores digitales y analógicos se denominan ordenadores híbridos. Por lo general se utilizan para problemas en los que hay que calcular grandes cantidades de ecuaciones complejas, conocidas como integrales de tiempo. En un ordenador digital también pueden introducirse datos en forma analógica mediante un convertidor analógico digital, y viceversa (convertidor digital a analógico). 2.1 Ordenadores analógicos El ordenador analógico es un dispositivo electrónico o hidráulico diseñado para manipular la entrada de datos en términos de, por ejemplo, niveles de tensión o presiones hidráulicas, en lugar de hacerlo como datos numéricos. El dispositivo de cálculo analógico más sencillo es la regla de cálculo, que utiliza longitudes de escalas especialmente calibradas para facilitar la multiplicación, la división y otras funciones. En el típico ordenador analógico electrónico, las entradas se convierten en tensiones que pueden sumarse o multiplicarse empleando elementos de circuito de 1 2 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI diseño especial. Las respuestas se generan continuamente para su visualización o para su conversión en otra forma deseada. 2.2 Ordenadores digitales Todo lo que hace un ordenador digital se basa en una operación: la capacidad de determinar si un conmutador, o ‘puerta’, está abierto o cerrado. Es decir, el ordenador puede reconocer sólo dos estados en cualquiera de sus circuitos microscópicos: abierto o cerrado, alta o baja tensión o, en el caso de números, 0 o 1. Sin embargo, es la velocidad con la cual el ordenador realiza este acto tan sencillo lo que lo convierte en una maravilla de la tecnología moderna. Las velocidades del ordenador se miden en megahercios (millones de ciclos por segundo), aunque en la actualidad se alcanzan velocidades del orden de los gigahercios (miles de millones de ciclo por segundo). Un ordenador con una velocidad de reloj de 1 gigahercio (GHz), velocidad bastante representativa de un microordenador o microcomputadora, es capaz de ejecutar 1.000 millones de operaciones discretas por segundo, mientras que las supercomputadoras utilizadas en aplicaciones de investigación y de defensa alcanzan velocidades de billones de ciclos por segundo. La velocidad y la potencia de cálculo de los ordenadores digitales se incrementan aún más por la cantidad de datos manipulados durante cada ciclo. Si un ordenador verifica sólo un conmutador cada vez, dicho conmutador puede representar solamente dos comandos o números. Así, ON simbolizaría una operación o un número, mientras que OFF simbolizará otra u otro. Sin embargo, al verificar grupos de conmutadores enlazados como una sola unidad, el ordenador aumenta el número de operaciones que puede reconocer en cada ciclo. Por ejemplo, un ordenador que verifica dos conmutadores cada vez, puede representar cuatro números (del 0 al 3), o bien ejecutar en cada ciclo una de las cuatro operaciones, una para cada uno de los siguientes modelos de conmutador: OFF-OFF (0), OFF-ON (1), ON-OFF (2) u ON-ON (3). En general, los ordenadores de la década de 1970 eran capaces de verificar 8 conmutadores simultáneamente; es decir, podían verificar ocho dígitos binarios, de ahí el término bit de datos en cada ciclo. Un grupo de ocho bits se denomina byte y cada uno contiene 256 configuraciones posibles de ON y OFF (o 1 y 0). Cada configuración equivale a una instrucción, a una parte de una instrucción o a un determinado tipo de dato; estos últimos pueden ser un número, un carácter o un símbolo gráfico. Por ejemplo, la configuración 11010010 puede representar datos binarios, en este caso el número decimal 210 (véase Sistemas numéricos), o bien estar indicando al ordenador que compare los datos almacenados en estos conmutadores con los datos almacenados en determinada ubicación del chip de memoria. El desarrollo de procesadores capaces de manejar simultáneamente 16, 32 y 64 bits de datos permitió 1 incrementar la velocidad de los ordenadores. 3 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI La colección completa de configuraciones reconocibles, es decir, la lista total de operaciones que una computadora es capaz de procesar, se denomina conjunto, o repertorio, de instrucciones. Ambos factores, el número de bits simultáneos y el tamaño de los conjuntos de instrucciones, continúa incrementándose a medida que avanza el desarrollo de los ordenadores digitales modernos. 3 HISTORIA La primera máquina de calcular mecánica, un precursor del ordenador digital, fue inventada en 1642 por el matemático francés Blaise Pascal. Aquel dispositivo utilizaba una serie de ruedas de diez dientes en las que cada uno de los dientes representaba un dígito del 0 al 9. Las ruedas estaban conectadas de tal manera que podían sumarse números haciéndolas avanzar el número de dientes correcto. En 1670 el filósofo y matemático alemán Gottfried Wilhelm Leibniz perfeccionó esta máquina e inventó una que también podía multiplicar. El inventor francés Joseph Marie Jacquard, al diseñar un telar automático, utilizó delgadas placas de madera perforadas para controlar el tejido utilizado en los diseños complejos. Durante la década de 1880 el estadístico estadounidense Herman Hollerith concibió la idea de utilizar tarjetas perforadas, similares a las placas de Jacquard, para procesar datos. Hollerith consiguió compilar la información estadística destinada al censo de población de 1890 de Estados Unidos mediante la utilización de un sistema que hacía pasar tarjetas perforadas sobre contactos eléctricos. 3.1 La máquina analítica También en el siglo XIX el matemático e inventor británico Charles Babbage elaboró los principios de la computadora digital moderna. Inventó una serie de máquinas, como la máquina diferencial, diseñadas para solucionar problemas matemáticos complejos. Muchos historiadores consideran a Babbage y a su socia, la matemática británica Augusta Ada Byron (1815-1852), hija del poeta inglés Lord Byron, como a los verdaderos inventores de la computadora digital moderna. La tecnología de aquella época no era capaz de trasladar a la práctica sus acertados conceptos; pero una de sus invenciones, la máquina analítica, ya tenía muchas de las características de un ordenador moderno. Incluía una corriente, o flujo de entrada en forma de paquete de tarjetas perforadas, una memoria para guardar los datos, un procesador para las operaciones matemáticas y una impresora para hacer permanente el registro. 1 4 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI 3.2 Primeros ordenadores Los ordenadores analógicos comenzaron a construirse a principios del siglo XX. Los primeros modelos realizaban los cálculos mediante ejes y engranajes giratorios. Con estas máquinas se evaluaban las aproximaciones numéricas de ecuaciones demasiado difíciles como para poder ser resueltas mediante otros métodos. Durante las dos guerras mundiales se utilizaron sistemas informáticos analógicos, primero mecánicos y más tarde eléctricos, para predecir la trayectoria de los torpedos en los submarinos y para el manejo a distancia de las bombas en la aviación. 3.3 Ordenadores electrónicos Durante la II Guerra Mundial (1939-1945), un equipo de científicos y matemáticos que trabajaban en Bletchley Park, al norte de Londres, crearon lo que se consideró el primer ordenador digital totalmente electrónico: el Colossus. Hacia diciembre de 1943 el Colossus, que incorporaba 1.500 válvulas o tubos de vacío, era ya operativo. Fue utilizado por el equipo dirigido por Alan Turing para descodificar los mensajes de radio cifrados de los alemanes. En 1939 y con independencia de este proyecto, John Atanasoff y Clifford Berry ya habían construido un prototipo de máquina electrónica en el Iowa State College (EEUU). Este prototipo y las investigaciones posteriores se realizaron en el anonimato, y más tarde quedaron eclipsadas por el desarrollo del Calculador e integrador numérico electrónico (en inglés ENIAC, Electronic Numerical Integrator and Computer) en 1946. El ENIAC, que según se demostró se basaba en gran medida en el ordenador AtanasoffBerry (en inglés ABC, Atanasoff-Berry Computer), obtuvo una patente que caducó en 1973, varias décadas más tarde. El ENIAC contenía 18.000 válvulas de vacío y tenía una velocidad de varios cientos de multiplicaciones por minuto, pero su programa estaba conectado al procesador y debía ser modificado manualmente. Se construyó un sucesor del ENIAC con un almacenamiento de programa que estaba basado en los conceptos del matemático húngaro-estadounidense John von Neumann. Las instrucciones se almacenaban dentro de una llamada memoria, lo que liberaba al ordenador de las limitaciones de velocidad del lector de cinta de papel durante la ejecución y permitía resolver problemas sin necesidad de volver a conectarse al ordenador. A finales de la década de 1950 el uso del transistor en los ordenadores marcó el advenimiento de elementos lógicos más pequeños, rápidos y versátiles de lo que permitían las máquinas con válvulas. Como los transistores utilizan mucha menos energía y tienen una vida útil más prolongada, a su desarrollo se debió el nacimiento de máquinas más perfeccionadas, que fueron llamadas ordenadores o computadoras de segunda 1 generación. Los componentes se hicieron más 5 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI pequeños, así como los espacios entre ellos, por lo que la fabricación del sistema resultaba más barata. 3.4 Circuitos integrados A finales de la década de 1960 apareció el circuito integrado (CI), que posibilitó la fabricación de varios transistores en un único sustrato de silicio en el que los cables de interconexión iban soldados. El circuito integrado permitió una posterior reducción del precio, el tamaño y los porcentajes de error. El microprocesador se convirtió en una realidad a mediados de la década de 1970, con la introducción del circuito de integración a gran escala (LSI, acrónimo de Large Scale Integrated) y, más tarde, con el circuito de integración a mayor escala (VLSI, acrónimo de Very Large Scale Integrated), con varios miles de transistores interconectados soldados sobre un único sustrato de silicio. 4 HARDWARE Todos los ordenadores digitales modernos son similares conceptualmente con independencia de su tamaño. Sin embargo, pueden dividirse en varias categorías según su precio y rendimiento: el ordenador o computadora personal es una máquina de coste relativamente bajo y por lo general de tamaño adecuado para un escritorio (algunos de ellos, denominados portátiles, o laptops, son lo bastante pequeños como para caber en un maletín); la estación de trabajo, un microordenador con gráficos mejorados y capacidades de comunicaciones que lo hacen especialmente útil para el trabajo de oficina; el miniordenador o minicomputadora, un ordenador de mayor tamaño que por lo general es demasiado caro para el uso personal y que es apto para compañías, universidades o laboratorios; y el mainframe, una gran máquina de alto precio capaz de servir a las necesidades de grandes empresas, departamentos gubernamentales, instituciones de investigación científica y similares (las máquinas más grandes y más rápidas dentro de esta categoría se denominan superordenadores). En realidad, un ordenador digital no es una única máquina, en el sentido en el que la mayoría de la gente considera a los ordenadores. Es un sistema compuesto de cinco elementos diferenciados: una CPU (unidad central de proceso); dispositivos de entrada; dispositivos de almacenamiento de memoria; dispositivos de salida y una red de comunicaciones, denominada bus, que enlaza todos los elementos del sistema y conecta a éste con el mundo exterior. 1 6 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI 4.1 CPU (unidad central de proceso) La CPU puede ser un único chip o una serie de chips que realizan cálculos aritméticos y lógicos y que temporizan y controlan las operaciones de los demás elementos del sistema. Las técnicas de miniaturización y de integración han posibilitado el desarrollo de un chip de CPU denominado microprocesador, que incorpora un sistema de circuitos y memoria adicionales. El resultado son unos ordenadores más pequeños y la reducción del sistema de circuitos de soporte. Los microprocesadores se utilizan en la mayoría de los ordenadores personales de la actualidad. La mayoría de los chips de CPU y de los microprocesadores están compuestos de cuatro secciones funcionales: una unidad aritmética/lógica; unos registros; una sección de control y un bus interno. La unidad aritmética/lógica proporciona al chip su capacidad de cálculo y permite la realización de operaciones aritméticas y lógicas. Los registros son áreas de almacenamiento temporal que contienen datos, realizan un seguimiento de las instrucciones y conservan la ubicación y los resultados de dichas operaciones. La sección de control tiene tres tareas principales: temporiza y regula las operaciones de la totalidad del sistema informático; su descodificador de instrucciones lee las configuraciones de datos en un registro designado y las convierte en una actividad, como podría ser sumar o comparar, y su unidad interruptora indica en qué orden utilizará la CPU las operaciones individuales y regula la cantidad de tiempo de CPU que podrá consumir cada operación. El último segmento de un chip de CPU o microprocesador es su bus interno, una red de líneas de comunicación que conecta los elementos internos del procesador y que también lleva hacia los conectores externos que enlazan al procesador con los demás elementos del sistema informático. Los tres tipos de bus de la CPU son: el bus de control que consiste en una línea que detecta las señales de entrada y de otra línea que genera señales de control desde el interior de la CPU; el bus de dirección, una línea unidireccional que sale desde el procesador y que gestiona la ubicación de los datos en las direcciones de la memoria; y el bus de datos, una línea de transmisión bidireccional que lee los datos de la memoria y escribe nuevos datos en ésta. 4.2 Dispositivos de entrada Estos dispositivos permiten al usuario del ordenador introducir datos, comandos y programas en la CPU. El dispositivo de entrada más común es un teclado similar al de las máquinas de escribir. La información introducida con el mismo, es transformada por el ordenador en modelos reconocibles. Otros dispositivos de entrada son los lápices ópticos, que transmiten información gráfica desde tabletas electrónicas hasta el ordenador; joysticks y el ratón o mouse, que convierte 1 7 el movimiento físico en movimiento dentro de una pantalla de ordenador; los escáneres UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI luminosos, que leen palabras o símbolos de una página impresa y los traducen a configuraciones electrónicas que el ordenador puede manipular y almacenar; y los módulos de reconocimiento de voz, que convierten la palabra hablada en señales digitales comprensibles para el ordenador. También es posible utilizar los dispositivos de almacenamiento para introducir datos en la unidad de proceso. 4.3 Dispositivos de almacenamiento Los sistemas informáticos pueden almacenar los datos tanto interna (en la memoria) como externamente (en los dispositivos de almacenamiento). Internamente, las instrucciones o datos pueden almacenarse por un tiempo en los chips de silicio de la RAM (memoria de acceso aleatorio) montados directamente en la placa de circuitos principal de la computadora, o bien en chips montados en tarjetas periféricas conectadas a la placa de circuitos principal del ordenador. Estos chips de RAM constan de conmutadores sensibles a los cambios de la corriente eléctrica. Los chips de RAM estática conservan sus bits de datos mientras la corriente siga fluyendo a través del circuito, mientras que los chips de RAM dinámica (DRAM, acrónimo de Dynamic Random Access Memory) necesitan la aplicación de tensiones altas o bajas a intervalos regulares aproximadamente cada dos milisegundos para no perder su información. Otro tipo de memoria interna son los chips de silicio en los que ya están instalados todos los conmutadores. Las configuraciones en este tipo de chips de ROM (memoria de sólo lectura) forman los comandos, los datos o los programas que el ordenador necesita para funcionar correctamente. Los chips de RAM son como pedazos de papel en los que se puede escribir, borrar y volver a utilizar; los chips de ROM son como un libro, con las palabras ya escritas en cada página. Tanto los primeros como los segundos están enlazados a la CPU a través de circuitos. Los dispositivos de almacenamiento externos, que pueden residir físicamente dentro de la unidad de proceso principal del ordenador, están fuera de la placa de circuitos principal. Estos dispositivos almacenan los datos en forma de cargas sobre un medio magnéticamente sensible, por ejemplo una cinta de sonido o, lo que es más común, sobre un disco revestido de una fina capa de partículas metálicas. Los dispositivos de almacenamiento externo más frecuentes son los disquetes y los discos duros, aunque la mayoría de los grandes sistemas informáticos utiliza bancos de unidades de almacenamiento en cinta magnética. Los discos flexibles pueden contener, según sea el sistema, desde varios centenares de miles de bytes hasta bastante más de un millón de bytes de datos. 1 8 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI Los discos duros no pueden extraerse de los receptáculos de la unidad de disco, que contienen los dispositivos electrónicos para leer y escribir datos sobre la superficie magnética de los discos y pueden almacenar miles de millones de bytes. La tecnología de CD-ROM, que emplea las mismas técnicas láser utilizadas para crear los discos compactos (CD) de audio, permiten capacidades de almacenamiento del orden de varios cientos de megabytes (millones de bytes) de datos. 4.4 Dispositivos de salida Estos dispositivos permiten al usuario ver los resultados de los cálculos o de las manipulaciones de datos de la computadora. El dispositivo de salida más común es la unidad de visualización (VDU, acrónimo de Video Display Unit), que consiste en un monitor que presenta los caracteres y gráficos en una pantalla similar a la del televisor. Por lo general, las VDU tienen un tubo de rayos catódicos como el de cualquier televisor, aunque los ordenadores pequeños y portátiles utilizan hoy pantallas de cristal líquido (LCD, acrónimo de Liquid Crystal Displays) o electroluminiscentes. Otros dispositivos de salida más comunes son la impresora y el módem. Un módem enlaza dos ordenadores transformando las señales digitales en analógicas para que los datos puedan transmitirse a través de las telecomunicaciones. 4.5 Sistemas operativos Los sistemas operativos internos fueron desarrollados sobre todo para coordinar y trasladar estos flujos de datos que procedían de fuentes distintas, como las unidades de disco o los coprocesadores (chips de procesamiento que ejecutan operaciones simultáneamente con la unidad central, aunque son diferentes). Un sistema operativo es un programa de control principal, almacenado de forma permanente en la memoria, que interpreta los comandos del usuario que solicita diversos tipos de servicios, como visualización, impresión o copia de un archivo de datos; presenta una lista de todos los archivos existentes en un directorio o ejecuta un determinado programa. 5 PROGRAMACIÓN Un programa es una secuencia de instrucciones que indican al hardware de un ordenador qué operaciones debe realizar con los datos. Los programas pueden estar incorporados al propio hardware, o bien pueden existir de manera independiente en forma de software. En algunas computadoras especializadas las instrucciones operativas están incorporadas en el sistema de circuitos; entre los ejemplos más comunes pueden citarse los microordenadores de las 1 calculadoras, relojes de pulsera, motores de coches y hornos microondas. Por otro lado, un 9 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI ordenador universal, o de uso general, contiene algunos programas incorporados (en la ROM) o instrucciones (en el chip del procesador), pero depende de programas externos para ejecutar tareas útiles. Una vez programado, podrá hacer tanto o tan poco como le permita el software que lo controla en determinado momento. El software de uso más generalizado incluye una amplia variedad de programas de aplicaciones, es decir, instrucciones al ordenador acerca de cómo realizar diversas tareas. 5.1 Lenguajes Las instrucciones deben darse en un lenguaje de programación, es decir, en una determinada configuración de información digital binaria. En las primeras computadoras, la programación era una tarea difícil y laboriosa ya que los conmutadores ON-OFF de las válvulas de vacío debían configurarse a mano. Programar tareas tan sencillas como ordenar una lista de nombres requería varios días de trabajo de equipos de programadores. Desde entonces se han inventado varios lenguajes informáticos, algunos orientados hacia funciones específicas y otros centrados en la facilidad de uso. 5.2 Lenguaje máquina El lenguaje propio del ordenador, basado en el sistema binario, o código máquina, resulta difícil de utilizar para las personas. El programador debe introducir todos y cada uno de los comandos y datos en forma binaria, y una operación sencilla como comparar el contenido de un registro con los datos situados en una ubicación del chip de memoria puede tener el siguiente formato: 11001010 00010111 11110101 00101011. La programación en lenguaje máquina es una tarea tan tediosa y consume tanto tiempo que muy raras veces lo que se ahorra en la ejecución del programa justifica los días o semanas que se han necesitado para escribir el mismo. 5.3 Lenguaje ensamblador Uno de los métodos inventados por los programadores para reducir y simplificar el proceso es la denominada programación con lenguaje ensamblador. Al asignar un código mnemotécnico (por lo general de tres letras) a cada comando en lenguaje máquina, es posible escribir y depurar o eliminar los errores lógicos y de datos en los programas escritos en lenguaje ensamblador, empleando para ello sólo una fracción del tiempo necesario para programar en lenguaje máquina. En el lenguaje ensamblador, cada comando mnemotécnico y sus operadores simbólicos equivalen a una instrucción de máquina. Un programa ensamblador traduce el código fuente, una lista de códigos de operación mnemotécnicos y de operadores simbólicos, a código objeto (es decir, a lenguaje máquina) y, a continuación, ejecuta el programa. 2 0 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI Sin embargo, el lenguaje ensamblador puede utilizarse con un solo tipo de chip de CPU o microprocesador. Los programadores, que dedicaron tanto tiempo y esfuerzo al aprendizaje de la programación de un ordenador, se veían obligados a aprender un nuevo estilo de programación cada vez que trabajaban con otra máquina. Lo que se necesitaba era un método abreviado en el que un enunciado simbólico pudiera representar una secuencia de numerosas instrucciones en lenguaje máquina, y un método que permitiera que el mismo programa pudiera ejecutarse en varios tipos de máquinas. Estas necesidades llevaron al desarrollo de lenguajes de alto nivel. 5.4 Lenguajes de alto nivel Los lenguajes de alto nivel suelen utilizar términos ingleses del tipo LIST, PRINT u OPEN como comandos que representan una secuencia de decenas o de centenas de instrucciones en lenguaje máquina. Los comandos se introducen desde el teclado, desde un programa residente en la memoria o desde un dispositivo de almacenamiento, y son interceptados por un programa que los traduce a instrucciones en lenguaje máquina. Los programas traductores son de dos tipos: intérpretes y compiladores. Con un intérprete, los programas que repiten un ciclo para volver a ejecutar parte de sus instrucciones, reinterpretan la misma instrucción cada vez que aparece. Por consiguiente, los programas interpretados se ejecutan con mucha mayor lentitud que los programas en lenguaje máquina. Por el contrario, los compiladores traducen un programa íntegro a lenguaje máquina antes de su ejecución, por lo cual se ejecutan con tanta rapidez como si hubiesen sido escritos directamente en lenguaje máquina. Se considera que fue la estadounidense Grace Hopper quien implementó el primer lenguaje de ordenador orientado al uso comercial. Después de programar un ordenador experimental en la Universidad de Harvard, trabajó en los modelos UNIVAC I y UNIVAC II, desarrollando un lenguaje de alto nivel para uso comercial llamado FLOW-MATIC. Para facilitar el uso del ordenador en las aplicaciones científicas, IBM desarrolló un lenguaje que simplificaría el trabajo que implicaba el tratamiento de fórmulas matemáticas complejas. Iniciado en 1954 y terminado en 1957, el FORTRAN (acrónimo de Formula Translator) fue el primer lenguaje exhaustivo de alto nivel de uso generalizado. En 1957 una asociación estadounidense, la Association for Computing Machinery comenzó a desarrollar un lenguaje universal que corrigiera algunos de los defectos del FORTRAN. Un año más tarde fue lanzado el ALGOL (acrónimo de Algorithmic Language), otro lenguaje de orientación científica. De gran difusión en Europa durante 2las décadas de 1960 y 1970, desde entonces ha 1 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI sido sustituido por nuevos lenguajes, mientras que el FORTRAN continúa siendo utilizado debido a las gigantescas inversiones que se hicieron en los programas existentes. El COBOL (acrónimo de Common Business Oriented Language) es un lenguaje de programación para uso comercial y empresarial especializado en la organización de datos y manipulación de archivos, y hoy día está muy difundido en el mundo empresarial. El lenguaje BASIC (acrónimo de Código de Instrucciones Simbólicas de Uso General para Principiantes) fue desarrollado en el Dartmouth College a principios de la década de 1960 y está dirigido a los usuarios de ordenador no profesionales. Este lenguaje se universalizó gracias a la popularización de los microordenadores en las décadas de 1970 y 1980. Calificado de lento, ineficaz y poco estético por sus detractores, BASIC es sencillo de aprender y fácil de utilizar. Como muchos de los primeros microordenadores se vendieron con BASIC incorporado en el hardware (en la memoria ROM), se generalizó el uso de este lenguaje. Aunque existen centenares de lenguajes informáticos y de variantes, hay algunos dignos de mención, como el PASCAL, diseñado en un principio como herramienta de enseñanza, hoy es uno de los lenguajes de microordenador más populares; el Logo fue desarrollado para que los niños pudieran acceder al mundo de la informática; el C, un lenguaje de Bell Laboratories diseñado en la década de 1970, se utiliza ampliamente en el desarrollo de programas de sistemas, al igual que su sucesor, el C++. El LISP y el PROLOG han alcanzado amplia difusión en el campo de la inteligencia artificial. EVOLUCIÓN FUTURA Una tendencia constante en el desarrollo de los ordenadores es la microminiaturización, iniciativa que tiende a comprimir más elementos de circuitos en un espacio de chip cada vez más pequeño. Además, los investigadores intentan agilizar el funcionamiento de los circuitos mediante el uso de la superconductividad, un fenómeno de disminución de la resistencia eléctrica que se observa cuando se enfrían los objetos a temperaturas muy bajas. Las redes informáticas se han vuelto cada vez más importantes en el desarrollo de la tecnología de computadoras. Las redes son grupos de computadoras interconectados mediante sistemas de comunicación. La red pública Internet es un ejemplo de red informática planetaria. Las redes permiten que las computadoras conectadas intercambien rápidamente información y, en algunos 2 muchas computadoras pueden cooperar en la casos, compartan una carga de trabajo, con lo que 2 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI realización de una tarea. Se están desarrollando nuevas tecnologías de equipo físico y soporte lógico que acelerarán los dos procesos mencionados. Otra tendencia en el desarrollo de computadoras es el esfuerzo para crear computadoras de quinta generación, capaces de resolver problemas complejos en formas que pudieran llegar a considerarse creativas. Una vía que se está explorando activamente es el ordenador de proceso paralelo, que emplea muchos chips para realizar varias tareas diferentes al mismo tiempo. El proceso paralelo podría llegar a reproducir hasta cierto punto las complejas funciones de realimentación, aproximación y evaluación que caracterizan al pensamiento humano. Otra forma de proceso paralelo que se está investigando es el uso de computadoras moleculares. En estas computadoras, los símbolos lógicos se expresan por unidades químicas de ADN en vez de por el flujo de electrones habitual en las computadoras corrientes. Las computadoras moleculares podrían llegar a resolver problemas complicados mucho más rápidamente que las actuales supercomputadoras y consumir mucha menos energía. 2 3 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI 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 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. 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 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. 2 4 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI La imagen ampliada de la placa de circuitos de un detector de humo muestra sus componentes, entre los que se incluyen transistores, reóstatos, condensadores, diodos y bobinas. Los transistores que permiten el funcionamiento del circuito están encerrados en unos contenedores redondos plateados. Los transistores pueden efectuar diversas funciones, sirviendo, por ejemplo, de amplificadores, interruptores y osciladores. Cada transistor consta de un pequeño trozo de silicio al que se le han aplicado átomos de impurezas para crear semiconductores de tipo n y de tipo p. Inventados en 1948, los transistores son un componente fundamental en casi todos los dispositivos electrónicos modernos. 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. 2 5 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI El ENIAC (siglas en inglés de "calculador e integrador numérico electrónico") fue el primer ordenador digital totalmente electrónico. Construido en la Universidad de Pensilvania en 1946, siguió funcionando hasta 1955. El ENIAC contenía 18.000 válvulas de vacío, y para programarlo había que cambiar manualmente el cableado. Los circuitos integrados han hecho posible la fabricación del microordenador o microcomputadora. Sin ellos, los circuitos individuales y sus componentes ocuparían demasiado espacio como para poder conseguir un diseño compacto. También llamado chip, un circuito integrado típico consta de varios elementos como reóstatos, condensadores y transistores integrados en una única pieza de silicio. En los más pequeños, los elementos del circuito pueden tener un tamaño de apenas unos centenares de átomos, lo que ha permitido crear sofisticadas computadoras del tamaño de un cuaderno. Una placa de circuitos de una computadora típica incluye numerosos circuitos integrados interconectados entre sí. 2 6 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI La invención del microchip permitió reducir el tamaño de los ordenadores, primero lo suficiente para colocarlos encima de la mesa, y más tarde para llevarlos en la mano. Los dispositivos de mano más completos disponen de varios megabytes (millones de caracteres) de espacio para almacenar archivos, enorme capacidad de cálculo, con utilidades de hoja de cálculo y gráficos, y los medios necesarios para enviar y recibir correo electrónico y recorrer Internet. En la fotografía se utiliza un pequeño ordenador para reprogramar el sistema electrónico de control de una moderna motocicleta Un ordenador o computadora personal (PC) cuenta con dispositivos para visualizar la información (monitor e impresora láser), para introducir datos (teclado y ratón o mouse), para recoger y almacenar la información (unidades de disco y CD-ROM) y para comunicarse con otros ordenadores (módem). 2 7 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI 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ético-ló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. Los lápices ópticos son punteros electrónicos que permiten al usuario modificar los diseños en pantalla. Este puntero, que se sostiene en la mano, contiene sensores que envían señales a la computadora cada vez que se registra luz. La pantalla de la computadora no se enciende entera, sino fila por fila 60 veces por segundo, mediante un haz de electrones. Por ello, la computadora puede determinar la posición del lápiz cada vez que detecta el haz de electrones. Los lápices ópticos suelen utilizarse en la tecnología CAD/CAM (diseño y fabricación asistidos por computadora) debido a su gran flexibilidad. Aquí vemos a un diseñador utilizando un lápiz óptico para modificar un plano en una pantalla de computadora. 2 8 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI El CD-ROM es un estándar de almacenamiento de archivos informáticos en disco compacto que se caracteriza por ser de sólo lectura. En la fotografía, un CDROM se inserta en un lector de CDROM. Grace Hopper Pionera en el procesamiento de datos, a la matemática estadounidense 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. Mainframe, un ordenador o computadora de gran capacidad, diseñado para realizar tareas computacionales muy intensas. Las computadoras de tipo mainframe proporcionan acceso a una gran cantidad de usuarios simultáneamente — pueden ser hasta varios millares—, conectados al sistema a través de terminales. Se diferencian de los superordenadores en que, mientras éstos pueden ejecutar un programa de gran potencia de cálculo de forma más rápida, los mainframes pueden ejecutar varios programas de manera simultánea y con un gran número de usuarios.2 9 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI Los primeros mainframes aparecieron entre 1964 y 1972; eran los denominados computadores de tercera generación, en cuya base estaban los primeros circuitos integrados. IBM y Unisys son las empresas con mayor tasa de producción de mainframes; en el mundo de la banca y de contabilidad de grandes empresas, se han utilizado mucho los mainframes de la serie 360 de IBM y más recientemente los de la serie 390 y los denomi nados “zSerie eServers”. En esta fotografía se muestra una sala de ordenadores típica de las grandes computadoras de tipo "mainframe" empleadas en las décadas de 1970 y 1980. Lenguajes de programación 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 1961 Lenguaje interpretado que utiliza un amplio conjunto de (Un lenguaje de programación) símbolos especiales y que se caracteriza por su brevedad. Utilizado fundamentalmente por los matemáticos. BASIC Beginners All-Purpose Symbolic 1965 Lenguaje de programación de alto nivel, utilizado con Instruction Code(Código de frecuencia por programadores principiantes. instrucciones simbólicas multipropósito para 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 3 conceptos, como las variables, las instrucciones diversos 0 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI condicionales y las subrutinas 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 1980 Lenguaje que hace hincapié en la programación modular. Es como fase secundaria de Pascal un lenguaje de alto nivel basado en Pascal, que se (diseñados ambos por Niklaus caracteriza por la ausencia de funciones y procedimientos Wirth) estandarizados. Pascal Blaise PASCAL, matemático e 1971 Lenguaje compilado y estructurado basado en ALGOL. inventor del primer dispositivo Agrega tipos y estructuras de datos simplificando la sintaxis. de computación. Al igual que el C, se trata de un lenguaje de programación estándar para microcomputadoras. PILOT Programmed Inquiry, Language 1969 Lenguaje de programación utilizado fundamentalmente para Or Teaching crear aplicaciones destinadas a instrucciones asistidas por (Consulta, lenguaje o computadora. Se caracteriza por utilizar un mínimo de aprendizaje de investigación sintaxis. programada) PL/1 Programming Language 1 (Lenguaje de programación uno) Los microprocesadores suelen estar recubiertos por una carcasa de protección. Los conductores que sobresalen del procesador mostrado en la fotografía se conectan a unas pequeñas patillas metálicas que se sueldan 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. 3 1 UNIVERSIDAD NACIONAL DE INGENIERÍA UNI RUACS ESTELI a las placas de circuito integrado Este circuito integrado, un microprocesador F100, tiene sólo 0,6 cm2, y es lo bastante pequeño para pasar por el ojo de una aguja. Superconductividad, fenómeno que presentan algunos conductores que no ofrecen resistencia al flujo de corriente eléctrica Nitrógeno líquido Ciertos materiales cerámicos se vuelven superconductores a temperaturas que permiten utilizar nitrógeno líquido (en la fotografía) como refrigerante. El nitrógeno líquido se obtiene por licuación del aire y puede almacenarse durante periodos prolongados en recipientes especiales denominados termos o frascos Dewar 3 2