1. Introducción a las Ciencias de la Computación
1.1. ¿Qué es la computación?
Etimológicamente, el término computación proviene del latín computatiōnis (cálculo o cuenta). Coloquialmente, la computación es la actividad de utilizar hardware y software de computador.
Formalmente, no hay una definición única de computación. Según algunas publicaciones académicas, podemos encontrar las siguientes definiciones:
* En general, es posible definir computación como cualquier actividad orientada a metas, que requiera computadores, se beneficie de computadores, o en donde se creen computadores. Por lo tanto, la computación incluye:
o El diseño y construcción de sistemas de software y hardware para un rango amplio de propósitos: tratamiento, ordenamiento y administración de tipos variados de información.
o La realización de estudios científicos utilizando computadores.
o El hacer que los sistemas de computadores se comporten de forma “inteligente”.
o La creación y utilización de medios de comunicación y entretenimiento.
o Encontrar y reunir información relevante para algún propósito particular, entre otros. Esta lista es virtualmente interminable, y las posibilidades son amplias.
* La disciplina de la computación es el estudio sistemático de procesos algorítmicos que describen y transforman información. Esta disciplina abarca:
o Teoría.
o Análisis.
o Diseño.
o Eficiencia.
o Implementación.
o Aplicación.
La pregunta fundamental que subyace a toda la computación es: “¿Qué puede ser automatizado de forma eficiente?”.
* El significado de “computación” también depende del contexto, ya que tiene distintos significados dependiendo del tipo de contexto:
o Por ejemplo, un especialista en sistemas de información verá la computación de manera ligeramente distinta a cómo la ve un ingeniero de software.
o Independiente del contexto, el hacer “buena computación” puede ser complicado y difícil. Debido a que la sociedad necesita gente que haga “buena computación”, debemos pensar en la computación no solo como una profesión, sino que además como una disciplina.
1.2. ¿Qué es un computador?
Un computador es una máquina que lee, almacena, manipula y entrega datos. Los ejemplos más comunes de computadores modernos son:
* Los computadores personales (PC).
* Teléfonos celulares.
* Reproductores de música.
* Consolas de videojuegos, entre otros.
Un computador no tiene por qué necesariamente funcionar a base de electricidad. Las máquinas de cálculo mecánicas existentes en la antigüedad también pueden clasificarse como computadores, ya que cumplen con las funciones básicas de un computador y solían utilizarse para automatizar y/o asistir la realización de cálculos.
Algunos ejemplos de “computadores antiguos” son:
* El Mecanismo de Anticitera (87 a. C.).
* La calculadora pascalina (s. XVII).
* La regla de cálculo (S. XVII).
* Las máquinas diferenciales (la primera concebida en 1786 y construida en 1822).
Desde el descubrimiento y primeras aplicaciones de la electricidad, se comenzó a simplificar la construcción de los computadores. El auge de la electrónica a inicios del siglo XX permitió la construcción a gran escala de los componentes elementales necesarios para manipular la electricidad según principios físicos y modelos matemáticos ya conocidos.
Tal como los computadores antiguos permitían resolver problemas de cálculo utilizando leyes de la física mecánica para imitar comportamientos de la vida real, el auge de la electrónica permitió utilizar nuevas leyes para el mismo propósito, aunque con mayor eficiencia. Entre girar manualmente varias manivelas y accionar un par de interruptores para hacer circular electricidad, hay un menor tiempo de acción y reacción al hacer uso de la electricidad, lo cual permite hacer una mayor cantidad de cálculos en menor tiempo.
1.3. ¿Qué es “analógico” y qué es “digital”?
En la actualidad, la gran mayoría de los computadores existentes son de tipo digital. Sin embargo, los primeros computadores (desde los computadores mecánicos antiguos hasta los primeros computadores electrónicos) eran solamente de tipo analógico.
A continuación se explica el significado de ambos términos.
1.3.1. Computador analógico
El término “analógico” hace alusión a la analogía o semejanza de comportamientos, en términos matemáticos, entre el computador y el fenómeno que se estudia a través de él.
Por ejemplo; el Mecanismo de Anticitera es un computador analógico que se utilizó para calcular la posición del sol, la luna y algunos planetas, con la finalidad de predecir eclipses. En este computador analógico, los cuerpos celestes están simulados mediante engranajes, de modo que al mover algunos de ellos, se mueve el resto, de forma análoga a las leyes de gravitación de los planetas.
Ilustración 1: Imagen original del Mecanismo de Anticitera |
Los computadores analógicos de tipo electrónico funcionan bajo el mismo principio. En este caso, los componentes mecánicos necesarios para realizar algún tipo de cálculo son sustituidos por componentes electrónicos, de modo que al variar el nivel y comportamiento de una corriente eléctrica en una parte del circuito, ocurra una variación relacionada, pero de una magnitud distinta, en otra parte del mismo circuito. En este caso, el comportamiento electrónico permite establecer la analogía con el hecho o cálculo matemático en estudio.
Ilustración 2: Computador analógico electrónico |
Todos los computadores analógicos son máquinas de propósito específico. Es decir, solamente son capaces de resolver un tipo de problema puntual.
Se han diseñado computadores analógicos específicamente para cada uno de los siguientes problemas:
* Cálculo de la posición de determinados planetas.
* Tabulación de funciones polinómicas.
* Operaciones aritméticas.
* Cálculo de razones trigonométricas.
* Cajas registradoras.
*Simulación de fenómenos físicos, entre otros.
1.3.2. Computadores digitales
La palabra “digital” proviene del latín digitus (dedo o dígito). Los dedos son utilizados para contar, y los dígitos son los símbolos que, inicialmente, se crearon con el objetivo de formar los números que permiten contar objetos (números cardinales).
Los computadores analógicos (también llamados computadores reales) utilizan funciones continuas o de valores reales para representar la información. En cambio, los computadores digitales utilizan funciones discretas para representar la información.
Una función discreta es aquella cuyo dominio es un conjunto numerable. Por ejemplo, una función que tenga como dominio un subconjunto de los números naturales y/o cardinales es una función discreta.
Para resolver un problema mediante un computador digital, se debe convertir el problema analógico correspondiente a una representación simbólica adecuada. Esta representación simbólica está compuesta por muchas instrucciones y operaciones que dan como resultado un conjunto determinado de estados. La representación simbólica más usual de los resultados de las operaciones de computación digital es el conjunto de valores verdadero y falso, representados por los dígitos 1 y 0 respectivamente.
Por una parte, el primer código digital existente fue el código Morse, creado en 1836 para transmitir información a distancia. Por otra, el primer fundamento teórico que sustenta la capacidad de procesar información mediante un sistema digital es el álgebra de Boole, que es una estructura algebraica que permite operar la lógica proposicional. Dicho esto, los computadores digitales fundamentalmente resuelven operaciones de lógica proposicional.
Los computadores digitales pueden ser máquinas de propósito general o de propósito específico. El hecho de que los computadores digitales puedan ser programados (dotados de instrucciones) hace que teóricamente sean máquinas de propósito general, es decir, destinadas a resolver muchos tipos de problemas. Un computador digital es de propósito específico cuando solamente puede ser reprogramado para resolver tipos específicos de problemas o cuando está optimizado para resolver de forma más eficiente cierta clase de problemas.
1.3.3. Computadores híbridos
Existe un dispositivo intermedio entre los computadores analógicos y los computadores digitales, llamado computador híbrido:
* Los componentes digitales normalmente sirven como controladores y proporcionan operaciones lógicas.
* Los componentes analógicos sirven normalmente como solucionadores de ecuaciones diferenciales o generadores de valores aleatorios con muy baja probabilidad de predicción.
Ilustración 3: Computador híbrido polaco WAT-1001 |
En general, los computadores analógicos son extremadamente rápidos, ya que solucionan ecuaciones altamente complejas a la velocidad en la que la electricidad atraviesa un circuito de una sola vez, además de poder manejar un rango continuo de valores de solución. Por otro lado, la precisión de los computadores analógicos no es buena, ya que está sujeta a las características físicas y eléctricas de sus componentes.
Los computadores digitales no son tan rápidos, ya que deben descomponer las operaciones en varias instrucciones, además de utilizar aproximaciones para resolver problemas complejos y manejar un menor rango de valores de solución, estando limitado este rango por el tamaño de los datos que cada computador maneja. Por ejemplo, para resolver una ecuación se busca el resultado mediante métodos basados en el ensayo y error, o bien los cálculos de alta complejidad se simplifican en sumas y restas.
El modelo de computador híbrido es poco utilizado hoy en día, ya que el tamaño de las memorias, dispositivos de almacenamiento y potencia de procesamiento son lo suficientemente elevados para hacer que temas como la lentitud inherente y el tamaño máximo de los datos en los computadores digitales pase inadvertida y deje de ser una limitación.
Una aplicación actual de la computación híbrida consiste en la obtención de valores aleatorios que sean lo más impredecibles posible. Un computador digital puede generar valores pseudoaleatorios, es decir, no se trata de valores realmente aleatorios, puesto que se puede conocer cómo se generan mirando qué sucede dentro del computador. Esto se puede mejorar añadiendo al computador digital un componente analógico que se encargue de generar los valores aleatorios extrayendo información del medioambiente o de cualquier otra fuente a la que no se le pueda predecir u observar el comportamiento con exactitud. Entonces, el valor aleatorio es generado por el componente analógico y luego convertido para que el computador lo pueda manipular de forma digital.
1.4. ¿Por qué es necesaria una “ciencia de la computación”?
En la época de los computadores analógicos, la computación basaba sus principios completamente en otras ciencias, tales como la física y la electrónica. Posteriormente, con el surgimiento de los computadores digitales, la física y la electrónica dejaron de ser el instrumento solucionador de los problemas de computación, pasando la máquina a ser en el ámbito de la computación digital simplemente el soporte físico (hardware) utilizado para ejecutar sobre él las instrucciones que solucionan los problemas (software). La construcción física y electrónica de los computadores digitales se ha basado en principios similares desde hace más de 60 años. Sin embargo, lo que ha ido evolucionando es la forma en la que se organizan los componentes y, por sobre todo, las técnicas de programación que permiten sacar mayor provecho a éstos.
Precisamente, la ciencia de la computación utiliza una gran cantidad de áreas de conocimiento para permitir que máquinas (generalmente digitales) solucionen problemas y manipulen información de la forma más eficiente posible.
Algunas de las áreas de conocimiento más notorias utilizadas por la ciencia de la computación son:
* Lógica y álgebra de Boole: codificación de demostraciones, conjuntos, decisiones y expresiones.
* Matemática discreta: estudio de conjuntos de elementos numerables y grafos.
* Métodos numéricos: métodos para solucionar de forma aproximada problemas matemáticos analíticos.
* Teoría de la información: leyes matemáticas que rigen el procesamiento de información.
* Teoría de autómatas: modelos matemáticos de máquinas teóricas capaces de resolver problemas computables.
* Análisis de algoritmos: estudio de la eficiencia y complejidad de diversas estrategias para solucionar problemas computacionales.
* Teoría de la computabilidad: clasificación de problemas según si pueden ser resueltos o no por un computador.
En adelante, y para efectos de los siguientes contenidos del curso y todo tema relacionado, se habla de “computador” solamente en referencia a los computadores digitales, que son el objeto de estudio principal de las ciencias de la computación.
1.5. ¿Cuál es la diferencia entre “computación” e “informática”?
Coloquialmente, ambos términos se utilizan como sinónimos, pero en profundidad hay una gran diferencia entre ellos.
Como ya se vio con anterioridad, el término computación proviene del latín computatiōnis (cálculo o cuenta). En cambio, el término informática proviene del francés informatique, cuyo significado es “tratamiento automatizado de la información”.
Para efectos de este curso, utilizaremos “computación” como sinónimo de “ciencia de la computación”.
Finalmente, la computación comprende la solución de problemas y manipulación de información de manera eficiente por parte de las máquinas; y la informática comprende las herramientas utilizadas exclusivamente para el tratamiento automatizado de la información. Cuando se habla de informática, se habla también de computación; pero cuando se habla de computación, no necesariamente se habla de informática.
1.6. Historia y generaciones de la computación
Hasta el día de hoy, existen 6 generaciones de computadores. Otros autores mencionan 5 generaciones, dependiendo la definición de la época de edición de los respectivos materiales académicos:
* 1ª generación: hasta 1958. Se inicia con el ábaco, siguen las calculadoras y los computadores de tubos de vacío. Su utilidad principal es procesar información.
* 2ª generación: desde 1959 a 1964. Se crea el transistor, reduciendo tamaño y nivel de fallas. También se incorporan las memorias basadas en redes de núcleos magnéticos.
* 3ª generación: desde 1964 a 1971. Se desarrollan los primeros circuitos integrados, logrando reducción de tamaño y rapidez de funcionamiento.
* 4ª generación: desde 1971 a 1981. Se remplazan las memorias de núcleos magnéticas por microchips.
* 5ª generación: desde 1982 a 1989. Es llamada la “era de la inteligencia artificial”. Se implementan las telecomunicaciones entre computadores.
* 6ª generación: desde 1990 a la actualidad. Se dan avances en la tecnología portátil. Inicialmente surgen los notebook, pasando por todo tipo de dispositivos portátiles hasta llegar a los Tablet y Smartphone.
1.7. La arquitectura de Von Neumann
El diseño conceptual y estructura fundamental de un sistema de computación es conocido como “arquitectura”. La arquitectura determina la forma en que las distintas partes de un computador están interconectadas y las funciones de cada una de estas partes.
Los componentes principales identificables en la arquitectura de un computador son:
* Unidad Central de Procesamiento (CPU): es el componente principal de un computador. Se encarga de interpretar las instrucciones contenidas en los programas y procesar datos.
o Unidad Aritmético-Lógica (ALU): está dentro de la CPU y su función es calcular operaciones aritméticas (suma, resta, multiplicación, división) y lógicas (Y, O, NO, implica), entre dos valores dados.
o Unidad de Control (UC): también está dentro de la CPU. Su función es buscar las instrucciones en la memoria principal del computador, interpretarlas y ejecutarlas empleando la ALU y los registros.
o Registros: componentes de la CPU que permiten almacenar resultados de las operaciones realizadas por la ALU y otros datos extraídos desde la memoria principal.
* Memoria Principal (o memoria central, o memoria de trabajo): es la memoria en donde se encuentran las instrucciones y datos que debe emplear la CPU para resolver los problemas.
* Sistemas de Entrada y Salida (E/S o periféricos): son los dispositivos auxiliares conectados a la CPU, cuyas funciones son conectar al computador con el mundo exterior, y/o archivar información a largo plazo.
* Bus (canal de comunicación): son los canales que transfieren información entre los componentes del computador. El bus se puede descomponer en 3 subtipos de buses:
o Bus de datos: transfiere los datos que necesita procesar, calcular o almacenar el computador.
o Bus de direcciones: comunica la ubicación de los datos que cada componente necesita acceder.
o Bus de control: controla el uso de los buses de datos y de direcciones por parte de los diversos componentes del computador.
No hay comentarios:
Publicar un comentario