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 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. 2
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 engrana jes 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 LoveComo 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. 5
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 traba jadores 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 mane jarla 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.
11
Sistemas basados en computador
Representación digital
b)
En este caso la información se divide en trozos y cada trozo se representa numéricamente. Lo que se maneja al final es ese conjunto de números. La cantidad de trozos en que se divide lo que se quiere representar está relacionada con la calidad de la representación. La Figura 1.4 ilustra este concepto considerando una cierta magnitud, X, que varía con el tiempo, t. En el caso de la Figura 1.4 (a) el espaciado entre los puntos tomados sobre el eje de abscisas no es suficiente para representar el pico central. En el segundo caso, sin embargo, sí recogemos el pico y la representación es más fiel a la realidad. Cuanto menor sea el intervalo entre puntos más fiable es la representación, aunque mayor es el número de datos que necesitamos para representar el mismo intervalo (temporal en este ejemplo). Lo que al final almacenaríamos para representar la información representada por la curva anterior sería el conjunto de valores de ordenada para cada punto tomado sobre el eje de abscisas. En los ordenadores modernos toda la información está almacenada digitalmente, desde los números al texto pasando por el audio o el vídeo. Esto nos lleva a una cuestión: ¿cómo está representado el texto en un ordenador? En un ordenador el texto está representado por un código numérico. Cada carácter (letras mayúsculas y minúsculas, signos de puntuación, signos especiales como #, @, &, etc.) tiene asociado un valor numérico. Estos valores numéricos son arbitrarios y se asigna un valor u otro dependiendo del código usado. Un código típico y tradicional es el código ASCII ( American Standard Code for Information Interchange) pero el conjunto de caracteres es muy limitado, sólo el conjunto básico necesitado en inglés, sin caracteres acentuados, por ejemplo. Existen otros códigos, como el Unicode que puede codificar 216 posibilidades (usa 16 bits), con lo que se pueden representar los caracteres de multitud de lenguajes sin tener que estar mezclando códigos. Por ejemplo, en Unicode la frase “Hola, Pepe.” queda como: H
o
1
a
,
72
111
108
97
44
32
P
e
p
e
.
80
101
112
101
46
En el ejemplo anterior cada carácter muestra en la parte inferior el correspondiente código Unicode. Obsérvese que el blanco es un carácter con su código (el ordenador lo tiene que almacenar para saber que está ahí) y que las mayúsculas tienen código distinto de las minúsculas. Al final lo que habría en el ordenador sería la secuencia anterior de números. Otro problema es cómo representar los números. Resulta conveniente, por su simplicidad, usar el sistema de numeración binario donde sólo tenemos 2 dígitos: 0 y 1. Estos dos dígitos se pueden representar fácilmente en los circuitos electrónicos, por ejemplo como conducción o no conducción o, en
Figura 1.4. Ilustración del efecto del incremento de muestras sobre una señal
12
Introducción a la programación con orientación a objetos
general, por cualquier método que pueda distinguir entre dos estados. La base dos se maneja con notación posicional igual que la decimal. Al construir el número se comienza con el 0, luego se pasa al 1 y al agotar la base se coloca un 0 o un 1 a la izquierda, véase la Tabla 1.1. Tabla 1.1. Equivalencia decimal-binario
Decimal 0 1 2 3
Binario 0 1 10 11
En informática un dígito binario se denomina bit (contracción de binary digit). Otra unidad común es el conjunto de 8 bits, denominado byte: 1 byte < > 8 bits Es interesante saber cuál es el mayor valor numérico que se puede representar con un cierto número de bits. Puesto que con un bit se pueden representar dos posibilidades, con 2 bits tendremos cuatro (2 3 2) y en general, con N bits tenemos 2N, véase la Tabla 1.2. Tabla 1.2. Número de posibilidades en función del número de bits
Bits
Posibilidades
0 1 2 3 4 5 6 7 8 (1 byte) 9 10
2051 2152 2254 2358 24516 25532 26564 275128 285256 295512 21051024
Esta secuencia de valores es muy típica, aparece por ejemplo en los valores de la memoria de los ordenadores (aunque referida a un múltiplo del byte, el kilobyte como veremos más adelante).
1.3.4. SISTEMAS INFORMÁTICOS Llega ahora el momento de considerar dos conceptos nuevos de importancia, el de sistema y a partir de él, el de sistema informático (o sistema basado en computador). Comencemos por la definición de sistema.
Sistemas basados en computador
13
Un sistema es un conjunto de entidades que interrelacionan para un fin común.
El concepto de sistema es ubicuo en el campo informático y aparece en múltiples contextos. Así, hablamos de sistemas físicos, de sistemas de información o de sistemas software. Un sistema informático es un conjunto de ciertas entidades que tienen como objetivo un determinado tipo de procesamiento de información. Estas entidades pueden ser: — Físicas (Hardware 6 ) — Lógicas (Software 6 ) — Humanas (“Peopleware”) La parte física del ordenador está constituida por los dispositivos que conforman el ordenador. La palabra hardware es inglesa y literalmente significa material de ferretería. Con el advenimiento de la informática se empieza a aplicar en el contexto que aquí se describe. Se suele coloquialmente decir que todo lo que se puede tocar es hardware. En el siguiente apartado consideraremos en más detalle la parte física de un ordenador. La parte lógica está formada por los programas y toda la información asociada a ellos (información de desarrollo y documentación del programa). En inglés se denomina software, haciendo un juego de palabras con hardware, cambiando el hard (rígido o duro) por soft (blando). El software es la componente lógica, intangible, de un sistema informático. Siguiendo con los juegos de palabras la componente humana de un sistema informático se denomina a veces peopleware. La componente humana de un sistema se refiere generalmente a los usuarios del mismo. Puesto que la programación (una parte del proceso de desarrollo de software) va a ser el tema que nos ocupe en este texto, vamos a considerar el software con algo más de detalle en el siguiente apartado.
1.3.5. CONSIDERACIONES SOBRE EL SOFTWARE Comúnmente se considera software como sinónimo de programa. Sin embargo, desde el punto de vista informático el concepto de software es más general, abarcando no sólo el código generado, sino también toda la documentación asociada. Tradicionalmente, el software se clasifica en dos grandes grupos, software de sistemas y software de aplicación. El software de sistemas es software usado por otro software. El ejemplo clásico es el del sistema operativo, que es el programa que permite comunicarse con, y usar de forma cómoda, el hardware. El sistema operativo es la conexión con el hardware que usan el resto de programas que se ejecutan en un ordenador. Por otro lado, el software de aplicación es el destinado a su utilización por un usuario y no por otros programas. Una hoja de cálculo, un procesador de textos o un programa de juego son ejemplos típicos. La comunicación del usuario con el software se realiza hoy casi generalizadamente a través de interfaces gráficas de usuario. Lo primero es indicar qué interfaz representa en informática una entidad (hardware o software) que actúa como intermediario o conexión entre otras dos, por ejemplo, entre un usuario y un programa. En una interfaz gráfica de usuario las capacidades del programa están representadas por medio de símbolos gráficos (iconos) a los que se puede acceder por medio de algún dispositivo apunta6
cual.
Tanto hardware como software son palabras que el uso ha adoptado en nuestro idioma y en este texto se utilizan tal
See discussions, stats, and author profiles for this publication at: https://www.researchgate.net/publication/31737252
Introducción a la programación con orientación a objetos / C. Muñoz Caro, A. Niño Ramos, A. Vizcaíno Barceló. January 2002 Book · January Source: OAI
CITATIONS
READS
0
567
3 authors, including:
Alfonso Niño
Aurora Vizcaino
University of Castilla-La Mancha
University of Castilla-La Mancha
108 PUBLICATIONS
32 PUBLICATIONS
SEE PROFILE
926 CITATIONS
260 CITATIONS
SEE PROFILE
Available from: Alfonso Niño Retrieved on: 12 October 2016