PRÓLOGO
Es bien conocido que la Informática, a pesar de su relativa juventud (nació a mediados de los años cuarenta) es uno de los campos de mayor importancia de la actualidad, entre otros motivos por estar impulsando, y a veces posibilitando, el desarrollo de casi la totalidad de las ciencias y las tecnologías.
La Informática tiene una serie de características que hay que tener en cuenta a la hora de desarrollar un texto general sobre ella. Entre otras se encuentran:
* Representa, sin duda, uno de los campos de la actividad humana que ha sufrido un mayor desarrollo en los últimos años
* El sujeto principal de la Informática es la computadora, existiendo en la actualidad desde supercomputadoras que cuestan cientos de millones de euros, hasta microcomputadoras de unos pocos euros integradas en un único chip y embebidas en multitud de sistemas (electrodomésticos, redes de comunicaciones, automóviles, etc.).
* La Informática puede considerarse simultáneamente como Ciencia y como Ingeniería, utilizando las metodologías tanto del desarrollo teórico (con las fases de definición, teorema, demostración e interpretación de resultados), como del desarrollo experimental (hipótesis, construcción de un modelo predictivo, diseño y realización de experimentos, y análisis de resultados) y del desarrollo tecnológico (requisitos, especificaciones, diseño, construcción del sistema, validación y prueba).
El crecimiento vertiginoso de la Informática nos ha obligado a hacer una profunda revisión en la mayoría de los capítulos de la presente edición respecto de la anterior. Por otra parte a lo largo del texto hacemos hincapié en que los procedimientos y técnicas presentados se aplican no sólo a las computadoras de uso general sino también a las de uso específico, y particularmente a los sistemas embebidos. La última característica, la Informática como Ciencia e Ingeniería, subyace a lo largo de todo el libro, aunque la naturaleza de cada uno de los temas tratados en cada capítulo hace que su participación en cada una de las tres metodologías citadas (teoría, experimentación o tecnología) sea desigual.
El objetivo de este libro es presentar una introducción a la Informática, tratando tanto el hardware como el software. Para entender y tener un conocimiento profundo de la Informática es necesario mostrar una visión global de ella, que permita ver cómo sus diferentes partes encajan en un todo.
Nuestra obra trata de dar una visión general de los aspectos principales de la Informática, tan clara y completa como es posible. Pretendemos que la obra sea útil:
1) Dentro del contexto de una asignatura a nivel universitario de Introducción a la Informática (o Informática General o Introducción a las Computadoras), en titulaciones tanto de Informática como en otras en las que se suele incluir esta materia (Ingenierías, Físicas, Matemáticas, Químicas, Ciencias Empresariales, Estadística, etc.). Debido a la autonomía universitaria no es frecuente que este tipo de asignatura tenga un porcentaje elevado de contenidos comunes en distintos centros; ello nos ha obligado a planificar la obra de tal manera que sea posible adaptarla para ser utilizada en diversas asignaturas y contextos, sin más que alterar el orden de exposición o eliminar ciertos capítulos para explicar con más detenimiento otros.
2) Para los profesionales de la Informática que deseen tener una visión actualizada de los tópicos más básicos de esta disciplina.
3) Para los usuarios de computadoras que no se conformen con tan sólo saber utilizar un paquete de aplicación o un lenguaje de programación, sino que además deseen conocer los fundamentos de la máquina que ejecuta sus programas.
4) Para cualquier persona que de forma autodidacta (sin asistir a clase) tenga interés en adquirir una formación rigurosa en los aspectos más destacados de la Informática.
De acuerdo con los objetivos anteriores se ha procurado que los capítulos sean lo más autónomos posibles, por lo que a veces se repiten conceptos, hecho que, por otra parte, refuerza el sentido didáctico del texto, que es un objetivo primordial en una obra como la que pretendemos.
La obra trata de dar al lector unos conocimientos básicos y terminológicos, intentando aportar una visión panorámica y equilibrada sobre todos los elementos importantes de la Informática. Para ello sus contenidos los hemos agrupado en los siguientes capítulos:
* Definiciones y conceptos básicos.
* Estructuras de datos y algoritmos.
* Representación de datos en una computadora.
* Diseño lógico.
* Esquema de funcionamiento de una computadora.
* Lenguajes máquina y ensamblador.
* La computadora a nivel de micromáquina (diseño de una computadora básica).
* Dispositivos de entrada/salida y unidades de memoria masiva.
* Sistemas Operativos.
* Conceptos básicos sobre lenguajes de programación y traductores.
* Archivos y bases de datos.
* El concepto de ingeniería del software.
* Redes de computadoras e Internet.
* Desarrollo y evolución histórica de la Informática.
En todo momento hemos tratado de enfocar los conceptos que presentamos de la forma más descriptiva y práctica posible. Uno de nuestros objetivos es hacer hincapié más en los conceptos que en los detalles, de no hacerlo así los conocimientos que pretendemos transmitir rápidamente dejarían de ser válidos. A pesar de la gran diversidad y ritmo de cambio en el campo de las computadoras, esperamos haber tenido la habilidad suficiente para haber identificado los conceptos fundamentales que persistirán en el tiempo. En definitiva, pretendemos que el estudiante comprenda satisfactoriamente, además de las versiones actuales, las futuras.
La herramienta fundamental de la Informática es la computadora, y obviamente a ella se le da una especial atención en el libro (un título alternativo podría haber sido Introducción a las computadoras). Una computadora posiblemente sea uno de los sistemas más complejos ideado por el hombre, lo que dificulta considerablemente nuestra pretensión de realizar un texto comprensible incluso estudiándolo de forma autodidacta. Para conseguir este objetivo tratamos de presentar las ideas y versiones de la forma más sencilla posible. Así, y como es habitual en las asignaturas de introducción a la Informática, presentamos en distintos capítulos una computadora sencilla, que denominamos CODE-2, que es una versión nueva del Ordenador Didáctico Elemental (ODE), descrito en ediciones anteriores. Sobre CODE-2 explicamos: cómo se usa (Capitulo 6), cómo funciona (Capítulos 6 y 7) y cómo se implementa (Capitulo 7). Obviamente hemos concebido esta computadora con un sencillo repertorio de instrucciones (16) fácil de comprender y fácil de implementar. CODE-2 además tiene la peculiaridad de que se ha diseñado completamente utilizando distintas metodologías, y se ha construido físicamente. Además hemos desarrollado, en colaboración con alumnos de distintas promociones, emuladores y ensambladores cruzados del mismo.
Al ser los sistemas que pretendemos analizar o diseñar de gran complejidad, utilizamos ampliamente la metodología usual de la ingeniería, consistente en ver los mismos según distintos niveles conceptuales de complejidad. La idea que subyace en esta sistemática es comprender las cosas yendo de lo sencillo a lo complejo. Así, describimos cómo se utiliza esta metodología en el diseño de algoritmos complejos (Capítulo 2), la computadora la presentamos según seis niveles conceptuales (Sección 1.6): desde el de máquina simbólica hasta el de lógica digital, y presentamos la descripción de redes de computadoras utilizando esta misma sistemática (Modelo OSI, Capítulo 13).
Hemos tratado de que la organización del libro sea lo más didáctica posible, para lo cual cada capitulo contiene los siguientes elementos:
* Una introducción, incluida en un cuadro con fondo gris, que informa del contenido del capítulo y lo enmarca dentro del contexto global de la obra.
* El texto se estructura en secciones jerárquicas (de hasta cuatro niveles), indicándose siempre al inicio de cada sección el objetivo de la misma y su estructura en secciones de nivel inferior.
* Cada capítulo incluye gran cantidad de figuras que tratan de facilitar al lector la comprensión de los conceptos que se presentan.
* También se insertan multitud de tablas que tratan, o bien de presentar sucintamente características comparativas entre elementos de la misma naturaleza, o bien clasificaciones o esquemas que enumeran distintas perspectivas bajo las que analizar un tema concreto.
* Para reforzar muchos conceptos, insertamos ejemplos que los aplican a situaciones prácticas. Estos ejemplos se diferencian del texto principal por estar entre rayas horizontales y con un tamaño de letra menor.
* El texto principal de cada capítulo finaliza con una sección de conclusiones, que sirve para resaltar los temas abordados en el capítulo, y enlazarlo con el capítulo siguiente.
* Después, se proponen una serie de ejercicios para que el alumno pueda aplicar a casos prácticos los conceptos desarrollados en el capítulo presente y anteriores. Consideramos fundamental el refuerzo del aprendizaje con la resolución de este tipo de problemas.
* Todos los capítulos concluyen con una bibliografía, a donde el lector puede acudir para ampliar las materias correspondientes. En primer lugar las referencias bibliográficas se refieren a libros o artículos de revistas especializadas. Al ser este libro de introducción, cada capítulo podría contener una gran cantidad de referencias bibliográficas; no obstante, consideramos que para el lector es más útil disponer de un conjunto de referencias reducido, convenientemente seleccionado y actualizado. También hemos tenido especial cuidado en incluir, cuando existen, las versiones en español de las distintas obras.
* La mayor parte de los capítulos incluyen dentro de la bibliografía referencias a la página web del libro. Estas referencias son enlaces que permiten al lector ampliar conceptos o datos técnicos.
Para la presente edición del libro se ha diseñado una pagina web para uso de estudiantes y profesores. La dirección de acceso es:
Esta página incluye numeroso material suplementario, tal como:
Deseamos que está página web sea un medio vivo por estar actualizada con regularidad y recoger las sugerencias de los lectores de la obra. Serán bien venidos todas las sugerencias y comentarios tendentes a mejorar el libro.
La tercera edición de esta obra, mantiene la misma estructura de capítulos de la edición anterior, pero hemos tratado de incluir los cambios y novedades más significativos que se han producido en los seis años que han transcurrido desde la pasada edición. El material incluido en cada uno de los capítulos se ha revisado minuciosamente, incluyendo nuevos conceptos y eliminando los que han dejado de tener interés, actualizando tablas de características, mejorando el contenido y calidad de las figuras, y procurando dar una visión más práctica y aplicada de los distintos temas. Además de los cambios generales indicados, se han efectuado las siguientes modificaciones significativas:
Introducción. En este capítulo hemos incluido una sección sobre los niveles conceptuales de descripción de una computadora, que en la segunda edición se encontraba en el Capítulo 5.
Representación de la información.
* Hemos incluido el sistema Unicode de codificación de E/S, que se perfila como uno de los estándares de mayor interés para un próximo futuro.
* Debido a la importancia adquirida por las aplicaciones multimedia; se han incluido apartados nuevos sobre la representación de sonidos e imágenes.
Diseño lógico. Se ha incrementado el número de ejemplos y ejercicios, además de incluir nuevos conceptos, utilizados en capítulos posteriores (como por ejemplo, el concepto de banco de registros).
Se ha realizado una coordinación mayor entre los capítulos 5, 6 y 7, dedicados a analizar la estructura y arquitectura de computadoras.
Esquema de funcionamiento de una computadora. Este capítulo ha sufrido grandes transformaciones, incluyéndose en él nuevas secciones dedicadas a microprocesadores, procesadores RISC y CISC, computadoras personales (se hace una descripción de los elementos internos de un PC), y paralelismo en computadoras.
Lenguajes máquina y ensamblador. Se describe en los niveles de lenguaje máquina y lenguaje ensamblador el CODE-2, que es una nueva versión del Ordenador Didáctico Elemental (ODE) de las ediciones previas. El lenguaje máquina de CODE-2 utiliza como código intermedio la notación hexadecimal, y el formato de las instrucciones resulta mejor estructurado que el de ODE (que utilizaba notación octal). CODE-2 dispone de un banco de registros, mantiene tan sólo 16 instrucciones máquina, y dispone de las características más notables de un procesador RISC.
La computadora a nivel de micromáquina. Se ha mejorado sustancialmente la presentación de la aritmética en la computadora, y se incluye el diseño completo de CODE-2, tanto con unidad de control cableada como microprogramada. Hay, además, una sección nueva sobre memorias RAM dinámicas avanzadas.
Periféricos. Aparte de actualizar los datos técnicos y tablas comparativas de distintas unidades, se han incluido nuevas secciones sobre:
* Periféricos para aplicaciones multimedia (sistemas de audio y de video).
* Unidades RAID
* Discos digitales versátiles (DVD)
Sistemas operativos. Para motivar al lector, se hacen numerosas referencias a lo largo de todo el capítulo a los sistemas operativos Windows NT y UNIX. También se dedica una sección nueva a la gestión de memoria en el Pentium. Se ha reestructurado notablemente la sección dedicada a la gestión del procesador.
Lenguajes de programación. Traductores. Se ha actualizado la sección dedicada a la clasificación de los lenguajes.
Ingeniería del software. Se ha realizado una profunda revisión de todo el capítulo, actualizándolo e incluyendo nuevos ejemplos.
Redes de computadores. Internet.
* Se ha reestructurado todo el capítulo. Se inicia con una descripción del objetivo de las redes de comunicaciones, indicando los requisitos de velocidad de los distintos tipos de información a transferir por una red.
* Se hace mayor énfasis en las comunicaciones ópticas; así incluimos secciones dedicadas a multiplexación de longitud de onda y a redes en anillo FDII.
* Se amplia el concepto de RDSI, y se incluye él de ADSL.
* Se incrementan notablemente, o incluyen secciones nuevas, dedicadas a: Internet y web (World Wide Web).
Evolución histórica y desarrollo de la Informática. Se ha completado, dentro de la descripción de las distintas generaciones, en aspectos tales como el desarrollo de supercomputadoras y de discos magnéticos. También se ha incluido una última sección sobre la situación actual y perspectivas próximas de la Informática.
Queremos agradecer la valiosa colaboración de nuestros alumnos, cuyas críticas y sugerencias han sido fundamentales. También deseamos agradecer la colaboración de diversos compañeros de los departamentos de Arquitectura y Tecnología de Computadores, de Lenguajes y Sistemas Informáticos, y de Ciencias de la Computación e Inteligencia Artificial, de la Universidad de Granada, que nos han dado valiosas sugerencias o han revisado el texto o proporcionado nuevos problemas. Caben destacar las aportaciones de Ana Anaya, José Luis Bernier, Antonio Cañas, Antonio Díaz, Francisco Javier Fernández, Francisco Gómez Mula, Julio Ortega, Francisco J. Pelayo, David Palomar, Begoña del Pino, Beatriz Prieto, Carlos G. Puntonet, Ignacio Rojas, y Eduardo Ros; así como la de Mancia Anguita, Pedro Angel Castillo, Buenaventura Clares, Miguel Damas, Jesús González, Francisco Illeras, Pedro Martín Smith, Juan Julián Merelo, Gonzalo Olivares, Hector Pomares, Ignacio Requena, Manuel Rodríguez y Moisés Salmerón. La empresa Informática Valenzuela S.L., y en especial Estrella Ramírez, regularmente nos mantienen informados de los equipos informáticos que van apareciendo en el mercado, su colaboración nos ha facilitado considerablemente la inclusión de datos técnicos en distintas partes del texto. Diversos alumnos de Ingeniería Informática e Ingeniería Electrónica han diseñado distintas implementaciones, simuladores y ensambladores de CODE-2, algunas de las cuales se encuentran en la web del libro; a todos ellos nuestro agradecimiento.
Nuestra gratitud a los equipos de edición y producción de McGraw-Hill en Madrid, y especialmente a la editora Concepción Fernández Madrid, por su gran profesionalidad e interés en que está tercera edición haya visto la luz.
Por último, debemos mencionar que la mayoría de las horas dedicadas a la realización de este libro han sido substraídas a nuestras familias a las que agradecemos su comprensión y apoyo.
Almuñecar, Agosto de 2001