Introducción a la Programación con Orientación a Objetos

Anuncio
Introducción a la Programación
con Orientación a Objetos
Camelia Muñoz Caro
Alfonso Niño Ramos
Aurora Vizcaíno Barceló
INTRODUCCIÓN A LA PROGRAMACIÓN
CON ORIENTACIÓN A OBJETOS
INTRODUCCIÓN A LA
PROGRAMACIÓN
CON ORIENTACIÓN A OBJETOS
Camelia Muñoz Caro
Alfonso Niño Ramos
Aurora Vizcaíno Barceló
Universidad de Castilla-La Mancha
Madrid • México • Santafé de Bogotá • Buenos Aires • Caracas • Lima • Montevideo • San Juan • San José
Santiago • São Paulo • White Plains
Datos de catalogación bibliográfica
MUÑOZ CARO, C.; NIÑO RAMOS, A.;
VIZCAÍNO BARCELÓ, A.
Introducción a la programación con orientación a objetos
PEARSON EDUCACIÓN, S.A., Madrid, 2002
ISBN: 84-205-3440-4
MATERIA: Informática 681.3
Formato: 195 3 250 mm
Páginas: 408
Todos los derechos reservados.
Queda prohibida, salvo excepción prevista en la Ley, cualquier forma de reproducción, distribución,
comunicación pública y transformación de esta obra sin contar con autorización de los titulares
de propiedad intelectual. La infracción de los derechos mencionados puede ser constitutiva de delito
contra la propiedad intelectual (arts. 270 y sgts. Código Penal).
DERECHOS RESERVADOS
© 2002 respecto a la primera edición en español por:
PEARSON EDUCACIÓN, S.A.
Núñez de Balboa, 120
28006 Madrid
MUÑOZ CARO, C.; NIÑO RAMOS, A.; VIZCAÍNO BARCELÓ, A.
Introducción a la programación con orientación a objetos
ISBN: 84-205-3440-4
ISBN eBook: 978-84-8322-584-4
PRENTICE HALL es un sello editorial autorizado de PEARSON EDUCACIÓN, S.A.
Edición en español:
Equipo editorial:
Editor: David Fayerman Aragón
Técnico editorial: Ana Isabel García
Equipo de producción:
Director: José A. Clares
Técnico: Diego Marín
Diseño de cubierta: Equipo de diseño de Pearson Educación, S.A.
Composición: JOSUR TRATAMIENTOS DE TEXTOS, S.L.
Powered by Publidisa
IMPRESO EN ESPAÑA - PRINTED IN SPAIN
Este libro ha sido impreso con papel y tintas ecológicos
1
Sistemas basados
en computador
Sumario
1.1. Introducción
1.2. Concepto de computación
1.2.1. Definición de computación
1.2.2. Dispositivos de computación
1.3. Concepto de Informática
1.3.1. Definición de informática
1.3.2. Datos e información
1.3.3. Representación de la información
1.3.4. Sistemas informáticos
1.3.5. Consideraciones sobre el software
1.4. Arquitectura clásica o de von Neumann
de un computador
1.5. Redes de computadores
1.5.1. Generalidades
1.5.2. Internet
1.5.3. La World-Wide-Web (WWW)
2
Introducción a la programación con orientación a objetos
1.1.
INTRODUCCIÓN
Este tema pretende proporcionar una visión global de los sistemas basados en computador 1 y de la
informática como disciplina. Desde la perspectiva de un texto introductorio como es éste, presentaremos el concepto de computación, así como una pequeña semblanza cronológica, histórica, de las técnicas de computación que han desembocado en el ordenador moderno. A partir de aquí presentaremos
el concepto de informática, como campo de conocimiento, y de sistema basado en computador. En el
cuarto apartado se considera la estructura y funcionamiento genérico de los computadores modernos.
Por su interés actual y su relación con el lenguaje que se utilizará para la implementación de los ejemplos (lenguaje Java) se presenta el tema de las redes de computadores y de Internet.
1.2.
CONCEPTO DE COMPUTACIÓN
En este apartado vamos a definir el concepto de computación y a presentar el desarrollo de las técnicas y dispositivos de computación que han conducido al ordenador moderno.
1.2.1.
DEFINICIÓN DE COMPUTACIÓN
Como definición clásica de computación tenemos la dada por el Merriam-Websters’s Collegiate Dictionary en su décima edición que define computación como el acto y acción de computar, donde computar equivale a determinar, especialmente por medios matemáticos. En el mundo anglosajón,
originalmente un “computer” era una persona que realizaba cálculos para resolver un problema. Sólo
hacia 1945 el nombre se empieza a aplicar a la maquinaria que realiza dicha tarea (Ceruzzi, 1999).
Los computadores (ordenadores) actuales son todavía capaces de computar (resolver problemas por
medios matemáticos), especialmente en el campo científico-técnico donde ésta es su misión principal.
Sin embargo, la tremenda repercusión del ordenador en la vida actual no proviene sólo de su capacidad
de cómputo, sino de su capacidad para almacenar y recuperar datos, para manejar redes de comunicaciones, para procesar texto, etc. Es decir, de su capacidad para procesar información. Ésta es la causa
de la gran importancia del computador en la vida actual. Para la mayoría de la gente el computador
representa una forma eficiente de gestionar información, sea en forma de texto, cartas enviadas por
correo electrónico, informes generados automáticamente o transacciones de todo tipo. Para la mayor
parte de la población la realización de cálculos es lo “menos importante” que un computador realiza.
Sin embargo, los computadores se desarrollaron con el principal objetivo de realizar cálculos, aunque la potencia final y los usos del ingenio habrían sido impensables para muchos de los que a lo largo del tiempo participaron en la tarea. Resulta interesante presentar el desarrollo histórico de los
medios de computación y el desarrollo del computador moderno. Esta presentación implícitamente lleva aparejado el desarrollo del concepto de programación como técnica para describir al computador,
en términos inteligibles para él, las tareas que se desea que realice.
1.2.2.
DISPOSITIVOS DE COMPUTACIÓN
Los dispositivos originales de computación eran dispositivos de ayuda para la realización de cálculos
aritméticos (computación en sentido etimológico), que poco a poco incrementaron sus posibilidades
hasta llegar al concepto moderno de computador. Veamos brevemente la evolución histórica.
1
Según el Diccionario de la Lengua de la Real Academia Española los términos computador, ordenador y computadora se pueden utilizar indistintamente. A lo largo de este libro así se usarán.
Sistemas basados en computador
3
Sistemas de numeración
El punto de partida para cualquier técnica de computación es la preexistencia de un sistema de numeración. Esto no es en absoluto trivial, hoy por hoy la educación elemental enseña a los niños a contar
usando un sistema de notación decimal, y la técnica parece algo consustancial con la existencia humana. Sin embargo, el concepto de número como una abstracción de las entidades numeradas es un paso
fundamental en la evolución cultural del hombre. Que no siempre esto ha sido así se puede todavía
observar en algunos lenguajes tribales donde se usan distintos nombres para las cantidades dependiendo de la naturaleza de lo numerado. Desde este punto de vista no es lo mismo cuatro piedras que
cuatro naranjas y el paso de abstracción fundamental es la consideración de que en ambos casos tenemos cuatro elementos. Una vez que se dispone de un sistema de numeración el siguiente paso es su
uso para contar elementos.
Dispositivos de cómputo antiguos
Una vez establecido un sistema de numeración, la raza humana ideó dispositivos de ayuda para
la realización de tareas aritméticas. En los primeros tiempos de la historia humana, para las tareas más sencillas no era necesaria una habilidad aritmética más allá de sumas y restas simples o
de multiplicaciones sencillas. Al aumentar la complejidad de la vida en común, se incrementa la
complejidad de los cálculos aritméticos necesarios para los tratos comerciales, los impuestos, la
creación de calendarios o las operaciones militares. Para agilizar la realización de estos “cómputos” la primera ayuda es la de los dedos, para simbolizar cantidades e incluso realizar operaciones.
Los dedos pueden usarse de la forma más simple para indicar una cantidad mostrando el número de dedos equivalentes. Sin embargo, también pueden usarse de forma simbólica para representar
cantidades arbitrarias con combinaciones distintas de dedos mostrados u ocultados. Una primera
necesidad en la antigüedad fue la de disponer de un medio de representar cantidades que fuera conocido por todos los pueblos (al menos en el entorno euro-asiático-africano clásico). Esta técnica se
usaba fundamentalmente para el intercambio comercial entre pueblos cuyas lenguas podían ser desconocidas entre sí. En la antigüedad clásica existió este sistema que usaba los dedos (de las dos
manos) para representar simbólicamente cantidades hasta de 9999 elementos y que estaba extendido por el norte de África, Oriente Medio y Europa. Herodoto y otros autores más modernos como
Cicerón o Marco Fabio Quintiliano lo mencionan. Con los dedos se pueden aplicar técnicas de
cálculo más complejas que la simple enumeración de elementos. Por ejemplo, en Europa existieron
hasta épocas relativamente recientes, técnicas de multiplicación que usaban las manos para realizar
los cálculos.
Sin embargo, el medio mecánico más antiguo de realización de cálculos parece ser el ábaco (en
sus diferentes versiones). El ábaco es, en esencia, una tabla de conteo que puede ser tan simple
como una serie de piedras colocadas sobre el suelo. Su estructura típica es la de un marco de madera con una serie de alambres donde se ensartan varias cuentas, véase la Figura 1.1. Esta herramienta, a pesar de su simplicidad, es una gran ayuda de computación si se usa adecuadamente.
Actualmente se asocia el ábaco con Oriente pero se usó en Europa desde la antigüedad clásica hasta hará unos 250 años. La potencia del ábaco reside en que no es una simple tabla de anotaciones;
además se pueden realizar operaciones aritméticas con él. De hecho, la capacidad de cálculo con
un ábaco es muy alta. Un ejemplo de su eficacia es el siguiente: en 1946 en un concurso de velocidad y precisión de cálculo, Kiyoshi Matsuzake del Ministerio de Administración Postal Japonés
derrotó con un ábaco, en cuatro de cinco ocasiones, al soldado Thomas Nathan Wood del ejército
americano de ocupación que era el operador más experto de máquina mecánica de calcular de la
marina de los EE.UU.
4
Introducción a la programación con orientación a objetos
Figura 1.1. Ábaco
En la evolución hacia el computador moderno, merece mención especial el escocés John Napier,
barón de Merchiston, quien inventó los logaritmos en el siglo XVII 2. Como herramienta de cálculo los
logaritmos permiten transformar las multiplicaciones en sumas y las divisiones en restas. Los logaritmos presentan una tremenda utilidad práctica, pero el problema del barón era la creación de las tablas
de logaritmos necesarias para su uso. En la historia de los medios de computación el barón es importante por haber diseñado varios instrumentos de cómputo. Entre ellos el denominado rabdologia, popularmente conocido como “huesos” de Napier, que él usaba para calcular sus tablas. Estos “huesos”
eran una serie de barras cuadrangulares que en esencia representaban la tabla de multiplicar y que permitían realizar esta operación. El apelativo de “huesos” deriva del aspecto que presentaban y del material del que muchas veces estaban hechos. Otros dispositivos de cálculo de Napier fueron el Prontuario
de Multiplicación (una versión más elaborada de los “huesos”) y el dispositivo de Aritmética Local,
un tablero de ajedrez modificado para ser usado como una especie de ábaco que trabajaba en sistema
binario. Napier publicó un libro describiendo el manejo de la rabdologia. El libro titulado Rabdologia
muestra también una de las primeras menciones del punto 3 decimal. Los huesos de Napier se difundieron con rapidez por Europa.
Sin embargo, en la historia de la computación la invención de los logaritmos dio nacimiento al que
probablemente haya sido el dispositivo de cómputo más usado desde el siglo XVII hasta la última mitad
del siglo XX: la regla de cálculo. El origen de la regla de cálculo es el siguiente. Tras conocer la invención de los logaritmos por Napier, Henry Briggs, Profesor de Geometría del Gresham College en Londres, comenzó a trabajar en el tema, introduciendo los logaritmos en base 10 y creando nuevas tablas
de logaritmos para los números enteros. Edmund Gunter, Profesor de astronomía y matemáticas también en el Gresham College, conoció por Briggs la existencia de los logaritmos. Gunter estaba interesado en problemas de astronomía y navegación, lo que implicaba el uso de funciones trigonométricas.
Dado que las tablas de logaritmos de Briggs eran para números enteros, no presentaban mucha utilidad para Gunter, quien decidió abordar el cálculo de tablas de logaritmos para senos y tangentes. Gunter había trabajado en la popularización y desarrollo del compás de sector, un instrumento de cálculo
2
El apellido Napier se escribía de varias formas en la época: Napier, Napeir, Napair, Nepier y algunas formas más, y de
él toman el nombre los logaritmos en base e, los logaritmos neperianos.
3
Entre los anglosajones los decimales se indican con punto, no con coma.
Sistemas basados en computador
5
Figura 1.2. Regla de cálculo
consistente en un par de brazos unidos en un extremo por un pivote en forma de compás y con una
serie de escalas calibradas sobre cada uno. Puesto que el logaritmo de un producto es la suma de los
logaritmos, Gunter pensó en un sistema parecido al sector que permitiera realizar mecánicamente un
producto. Gunter ideó una regla graduada en escala logarítmica con un compás. Para multiplicar dos
números x e y se abría el compás la cantidad x, midiendo sobre la regla logarítmica. A continuación
se colocaba uno de los brazos del compás apoyado en el punto de la regla correspondiente al valor y.
Sin cerrar el compás se colocaba el otro brazo en la dirección creciente de la escala. El proceso equivalía a sumar las dos distancias en la escala (suma de logaritmos), así que el valor que señalaba el brazo final del compás sobre la escala logarítmica era el producto de los dos números. Para hacer un
cociente se sustraían las distancias en lugar de sumarse. El dispositivo simplificaba el cálculo de productos y cocientes y también evitaba tener que gastar tiempo buscando en las tablas de logaritmos.
La modificación final del dispositivo se debió a William Oughtred quien hoy sería definido
como un matemático puro y que se puede considerar el inventor de la versión definitiva de la regla
de cálculo. En una visita que realizó en 1610 a Henry Briggs, conoció a Edmund Gunter quien le
mostró su instrumento de cálculo logarítmico. Oughtred se dio cuenta de que se podía eliminar la
necesidad del compás si se usaban dos reglas graduadas logarítmicamente que se deslizaran una con
respecto a la otra. Así, para multiplicar los dos números x e y bastaba con colocar el origen de la
segunda escala sobre el punto del valor x en la primera, localizar el valor y en la segunda y mirar
cuál era el valor que correspondía en la primera escala. Este sistema de reglas deslizantes en escala
logarítmica es la base de todas las reglas de cálculo posteriores 4. Las reglas de cálculo evolucionaron a lo largo del tiempo hasta adquirir forma muy sofisticada, véase la Figura 1.2, representando
un instrumento analógico de cómputo de precisión. Hasta la introducción de las calculadoras
electrónicas de mano, la regla de cálculo era un instrumento que todo ingeniero o científico usaba
en su trabajo cotidiano.
Dispositivos mecánicos
Aparte de los instrumentos manuales indicados en el apartado anterior, los intentos auténticos de computación automática comienzan con el desarrollo de los distintos modelos de calculadoras mecánicas.
Sin embargo, el desarrollo práctico de estas máquinas tuvo que esperar hasta el siglo XVII cuando la
4
Por esta razón, en inglés la regla de cálculo se denomina sliding rule (regla deslizante).
6
Introducción a la programación con orientación a objetos
ingeniería mecánica estuvo lo suficientemente desarrollada como para permitir la construcción de los
sistemas de engranajes y palancas en los que se basa su funcionamiento.
La primera calculadora mecánica (sumadora) con un dispositivo de acarreo para tener en cuenta
que se ha conseguido pasar a una posición decimal superior (el “me llevo uno” de la aritmética elemental) se atribuye a Blaise Pascal. Sin embargo, la primera fue realizada por el matemático alemán
Wilhelm Schickard a principios del siglo XVII quien comunicó su invención a Kepler, con quien había
colaborado. Por la descripción y los diagramas que Schickard remitió a Kepler se sabe que la máquina de Schickard automatizaba el trabajo con una serie de huesos de Napier, realizando mecánicamente las sumas implicadas en la obtención de multiplicaciones. La máquina representaba cada
posición decimal con una rueda donde estaban representados los diez dígitos 1-2-3-4-5-6-7-8-9-0. El
problema de la máquina era el del acarreo acumulado cuando se pasaba de 9 a 0 en un disco y había
que mover el disco de la siguiente posición decimal en una unidad. Esto se realizaba con una rueda
dentada (rueda de acarreo) con un diente que hacía avanzar a la rueda a la nueva posición decimal
cuando la de la posición anterior daba una vuelta completa. El problema se entiende si imaginamos
que tenemos el valor 9999999 y sumamos 1. Habrá un total de 7 discos que tienen que girar a la vez
a base de ruedas dentadas con un solo diente (una por posición decimal). Es fácil entender que la rueda de acarreo del primer dígito debe aguantar el esfuerzo necesario para poder girar todos los demás
dígitos. En la práctica el sistema no podía aguantar el esfuerzo y se rompía si el número de posiciones decimales era grande. Schickard sólo construyó máquinas con un máximo de seis posiciones
decimales.
Posteriormente y de forma independiente Pascal desarrolló una serie de ingenios mecánicos similares. La primera máquina fue diseñada cuando Pascal contaba 19 años. Cuando intentó que los artesanos locales construyeran las piezas necesarias, el resultado fue tan catastrófico que decidió él mismo
aprender mecánica, e incluso trabajó con un herrero para aprender a manejar el metal y construir las
piezas. Pascal construyó unas cincuenta máquinas a lo largo de su vida, en esencia todas máquinas
sumadoras. El problema de Pascal para construir máquinas capaces de multiplicar era nuevamente
acumular el acarreo sobre varias posiciones decimales. Pascal ideó un sistema de pesos que evitaba el
sistema de engranajes de Schickard. El problema era que la máquina sólo podía avanzar sus engranajes en un sentido. En la práctica esto se traducía en que la máquina sólo podía aumentar acarreos, no
disminuir o dicho de otra forma, sólo sumaba.
Otro interesante diseño es el de la máquina de Leibniz. Habiendo oído hablar de la máquina sumadora de Pascal, Leibniz se interesa por el tema y comienza con el diseño de una máquina multiplicadora. El diseño original no era factible y Leibniz abandona el tema durante varios años. Finalmente,
acaba construyendo una máquina multiplicadora operativa gracias a la invención de un elegante sistema de engranajes con dientes de anchura variable (tambor escalonado). Otras calculadoras mecánicas
fueron construidas por personajes como el inglés Samuel Morland o el francés René Grillet ambos en
el siglo XVII.
Comercialmente, la primera calculadora mecánica de utilidad fue el aritmómetro de Thomas de
Colmar fabricado en la década de 1820 en Francia y basado en el diseño de tambor escalonado de
Leibniz. Sin embargo, el gran paso en la producción comercial de calculadoras mecánicas se da con
las máquinas de Baldwin-Odhner. El problema con las calculadoras mecánicas previas era que el sistema de tambor escalonado de Leibniz resultaba un dispositivo pesado y engorroso que implicaba que
las máquinas fueran grandes y masivas. A finales del siglo XIX, Frank. S. Baldwin en EE.UU. y W. T.
Odhner, un suizo que trabajaba en Rusia, idearon un nuevo diseño para las ruedas dentadas que representaban los dígitos decimales de cada posición decimal. La idea era que el número de dientes en las
ruedas fuera variable, correspondiendo el número de dientes al número representado. Estos dientes
podían aparecer o desaparecer según se seleccionaba un dígito u otro con una palanca colocada sobre
la propia rueda. Estas ruedas dentadas variables se podían construir como discos finos y ligeros, lo que
permitía colocar varios de estos discos, representando cada uno un dígito, en unos pocos centímetros
de espacio. El resultado era una máquina mucho más compacta y ligera que las existentes hasta entonces, véase la Figura 1.3. A principios del siglo XX estas máquinas se vendían por decenas de miles.
Sistemas basados en computador
7
Figura 1.3. La Minerva, una máquina de Baldwin-Odhler de fabricación española
Hasta la introducción de las calculadoras electrónicas las máquinas de Baldwin-Odhner se seguían
usando en oficinas y laboratorios.
Las máquinas de Babbage
Los instrumentos mecánicos mencionados en el aparatado anterior no son sino ayudas mecánicas de
computación. El primer gran paso hacia lo que es el concepto moderno de computador, lo dio Charles
Babbage (1791-1871) con sus trabajos sobre computación automática. El nivel tecnológico de su tiempo no era suficiente para poder llevar a cabo sus diseños, pero las ideas de Babbage eran muy avanzadas para la época. Tanto es así que Babbage se considera uno de los pioneros del desarrollo del
computador moderno, al mismo nivel de Konrad Zuse o Howard Aitken que trabajaron en el desarrollo de los primeros modelos de computador en las décadas de 1930-1940.
Charles Babbage era matemático y hombre de ciencia en el sentido más general que esta palabra
tenía en el siglo XIX. En aquella época, se hacía amplio uso de tablas matemáticas como las de logaritmos, por ejemplo, para reducir el trabajo de cálculo. Dada su formación e intereses, Babbage hacía
uso intensivo de las tablas matemáticas y era consciente de la gran cantidad de errores que poseían. La
pasión por la precisión de Babbage le llevó a abordar la construcción de tablas matemáticas libres de
errores. Para ello incluso diseñó sistemas tipográficos para reducir la probabilidad de la aparición de
errores en las tablas. Sin embargo, el problema era siempre el mismo. Una persona calculaba los valores y escribía un borrador de la tabla con la consiguiente posibilidad de error. Luego, el borrador era
traducido a mano en tipos de imprenta para imprimir las tablas, con la adicional posibilidad de error.
Babagge llegó a la conclusión de que la única forma de evitar los errores humanos era automatizar
8
Introducción a la programación con orientación a objetos
todo el proceso. Su idea era la de una máquina capaz de calcular e imprimir sin intervención humana
las tablas matemáticas deseadas. En la época, las tablas se calculaban aproximando las funciones a calcular por formas polinómicas y manejando las formas polinómicas con el método de diferencias. Usando el método de diferencias para representar un polinomio se evitaba tener que realizar operaciones de
multiplicación y división. Este método puede aún verse explicado en textos de cálculo numérico aplicado al problema de la interpolación de funciones (Demidovich y Maron, 1977; Kopchenova y Maron,
1987). Babbage imaginó su máquina de cálculo de tablas como una Difference Engine, Máquina de
Diferencias, que aplicara de forma automática el método de diferencias. Babbage construyó un
pequeño prototipo y solicitó ayuda oficial para la construcción del diseño completo. El problema era
que la tecnología mecánica no estaba suficientemente avanzada en aquel entonces para la construcción
de algunas partes de la máquina. El mismo Babbage colaboró en el desarrollo de nuevas herramientas
de fabricación mecánica que permitieran construir las piezas de la máquina. Este trabajo adicional y
las demoras oficiales en la provisión de fondos hicieron que el trabajo se parara numerosas veces y
que finalmente la máquina no acabara de construirse. Durante uno de estos períodos de inactividad
Babbage trabajaba en un rediseño de la máquina y se le ocurrió que el resultado de las computaciones
de la máquina pudiera volver a ser introducido como dato en la propia máquina. Babbage se dio cuenta de que ese diseño circular dotaba a la máquina de una potencia de cómputo mucho mayor que la del
modelo inicial. Un diseño tal permitía el manejo de funciones que no tenían solución analítica. Babbage denominó la nueva máquina Analytical Engine (Máquina Analítica) y al respecto de la misma
escribió en una carta en mayo de 1835 (Williams, 2000):
... durante seis meses he estado dedicado a los diseños de una nueva máquina de cálculo de
mucha mayor potencia que la primera. Yo mismo estoy asombrado de la potencia de que he
podido dotar a esta máquina; hace un año no hubiera creído que este resultado fuera posible.
La máquina analítica constaba de tres partes que Babbage denominó:
The store (El almacén)
The mill (La fábrica o taller)
The control barrell (El cilindro o tambor de control)
El almacén era una memoria mecánica, el taller una unidad aritmética y el cilindro de control una
unidad de control de procesos que contenía el equivalente mecánico de un juego de instrucciones básicas de trabajo. En esencia, el diseño de Babbage respondía a la estructura moderna de un computador.
El trabajo de la máquina analítica se realizaba indicándole qué acciones elementales tenía que realizar
por medio de una serie de tarjetas perforadas, de forma similar a como entonces se introducían los
diseños en las tejedoras mecánicas de Jackard. La máquina, por lo tanto, respondía a un programa de
instrucciones externo que leía como entrada.
La máquina analítica no llegó a construirse principalmente porque Babbage no consiguió los fondos necesarios. Desde la perspectiva actual, la máquina hubiera supuesto un avance de alcance inimaginable en la época 5.
La necesidad de desarrollar el conjunto de instrucciones que compusieran un programa a ser ejecutado por la máquina analítica da carta de nacimiento a la ciencia y el arte de la programación. En
este contexto tiene especial interés la colaboración entre Babbage y Ada Augusta, condesa de Love5
Como fabulación de lo que habría ocurrido en caso de construirse la máquina analítica se recomienda la lectura de la
novela The Difference Engine (Gibson y Sterling, 1996). Aquí se nos muestra un siglo XIX alternativo, donde Babbage ha
podido construir sus máquinas y un imperio británico que ha conjugado la revolución industrial con la revolución informática controlando el mundo con sus computadoras mecánicas movidas a vapor.
Sistemas basados en computador
9
lace. Ada era hija del poeta Lord Byron y tenía una sólida formación matemática, algo muy raro en la
época para una mujer. En 1843 publicó un trabajo donde se describía la máquina analítica y la manera de programarla. En particular en el trabajo se presentaba el programa que permitía el cálculo de los
números de Bernoulli (Kim y Toole, 1999). En su trabajo, Ada mostraba la gran potencia y la flexibilidad que un programa modificable de instrucciones permitía a la máquina. Por estas razones, la condesa de Ada Lovelace es considerada la primera teórica (y práctica) de la programación.
El computador moderno
A finales de la década de 1930 aparecieron distintos grupos de trabajo interesados en la construcción
de máquinas de calcular con algún tipo de sistema automático de control. Estos esfuerzos se abordaron tanto desde el punto de vista mecánico como del electrónico.
Respecto a las máquinas mecánicas, destaca el trabajo en Alemania de Konred Zuse. Zuse, ingeniero de formación, conocía el esfuerzo de cómputo necesario para los trabajos técnicos. Se dio cuenta de que el problema fundamental, usando una regla de cálculo o una máquina sumadora mecánica,
era el almacenamiento de los resultados intermedios que se van produciendo. A tal efecto es necesario un sistema de memoria para mantener la información. En 1934 Zuse era consciente de que una calculadora automatizada sólo requiere tres unidades funcionales: un control, una memoria y una sección
aritmética. Con este diseño básico construye la Z1 (la primera máquina de la serie Z). La Z1 usaba una
memoria mecánica codificada en binario y leía la secuencia de instrucciones a realizar de una serie de
tarjetas perforadas. Al mismo tiempo en Harvard, Howard Aitken construía otra secuencia de máquinas automáticas, la serie de las Mark.
Todos estos esfuerzos se basaban aún en el uso de elementos mecánicos. La gran revolución surgió con el advenimiento de las máquinas electrónicas. Con respecto a las máquinas electrónicas uno
de los primeros esfuerzos fue el diseño de la ABC (Atanasoff-Berry Computer). El ABC no llegó a ser
operativo, pero su diseño tuvo importancia en el desarrollo de modelos posteriores. En particular, el
ABC usaba el sistema binario, lo que simplificaba los circuitos electrónicos usados. La primera computadora electrónica operativa fue la ENIAC (Electronic Numerical Integrator and Computer) que trabajaba en sistema decimal.
Todas estas máquinas estaban programadas con algún tipo de instrucciones en tarjetas perforadas
o directamente como conexiones (cableado). El siguiente paso se gestó en el equipo de desarrollo del
ENIAC y se trata de la invención del concepto de programa almacenado. En este asunto tuvo cierta
participación John von Neumann (físico, químico y matemático) aunque no fue el inventor del concepto. Sólo el hecho de que él escribiera el borrador del informe que se presentó a los patrocinadores
militares del proyecto ENIAC, y que recogía la idea de problema almacenado en memoria, fue la causa de que se asociara con él dicho concepto y hoy se hable de máquinas de von Neumann. Este nuevo
concepto formó parte del diseño de la descendiente del ENIAC, la EDVAC (Electronic Discrete Variable Arithmetic Computer). La EDVAC almacenaba el programa en memoria, con lo que las instrucciones se leían a mucha mayor velocidad que haciéndolo una a una desde una fuente externa como las
tarjetas perforadas.
1.3.
CONCEPTO DE INFORMÁTICA
Como hemos visto, el origen del ordenador o computador se debe a la necesidad de realizar cálculos
de forma automática. Sin embargo, el procesamiento numérico no es la única utilidad de un ordenador. La posibilidad de realizar operaciones lógicas le dota de la capacidad de usarse para el procesamiento de información, entendida desde un punto de vista general. El cuerpo de conocimiento que se
encarga de todo lo relacionado con el desarrollo y uso de ordenadores para el tratamiento de información (numérica o no) es la informática. Veamos una definición más precisa.
10
Introducción a la programación con orientación a objetos
1.3.1.
DEFINICIÓN DE INFORMÁTICA
Informática del francés informatique es la designación castellana de Computer Science and Engineering
en inglés. Según la Real Academia Española se define como el conjunto de conocimientos científicos y
técnicas que hacen posible el tratamiento automático de la información por medio de ordenadores.
La siguiente pregunta es obvia: ¿qué se entiende por información?
1.3.2.
DATOS E INFORMACIÓN
En primer lugar es necesario distinguir con precisión entre los conceptos de datos e información:
a) Datos
Como tales se entiende el conjunto de símbolos usados para representar un valor numérico, un hecho,
una idea o un objeto. Individualmente los datos tienen un significado puntual. Como ejemplo de dato
tenemos el número de la seguridad social de un empleado, un número de teléfono, la edad de una persona, etc.
b) Información
Por tal se entiende un conjunto de datos procesados, organizados, es decir, significativos. La información implica tanto un conjunto de datos como su interrelación. Dependiendo de esta última el mismo
conjunto de datos suministra diferente información. Por ejemplo, imaginemos los datos de los trabajadores de una empresa:
Nombre
Edad
Estudios
Salario
Por separado se trata de un conjunto de datos individuales. Sin embargo, si los organizamos por
edad y salario tenemos un informe sobre la distribución del sueldo en función de la edad. Por otro lado,
si organizamos por estudios y salario tendremos un informe diferente que nos indica la distribución
del salario en función de la formación de los empleados.
Como no vamos a tratar específicamente sistemas de gestión de información consideraremos datos
e información como sinónimos.
1.3.3.
REPRESENTACIÓN DE LA INFORMACIÓN
Habiendo definido el concepto de información el problema es cómo representarla para poder manejarla de forma automática. Es posible idear muchas maneras de hacerlo, pero la clasificación básica
nos lleva a la distinción entre técnicas analógicas y digitales. Veamos la diferencia.
a) Representación analógica
Cuando una magnitud física varía para representar la información tenemos una representación analógica. Por ejemplo, el voltaje en función de las variaciones de presión producidas por la voz en un
micrófono.
Descargar