Capı́tulo 2 Generalidades Computacionales 2.1. Introducción a los Computadores Definición: Un computador es un dispositivo electrónico que puede transmitir, almacenar, recuperar y procesar información (datos). Es capaz de realizar cálculos y tomar decisiones lógicas a velocidades de millones(incluso miles de millones) de veces mas rápidas que los humanos. Los computadores realizan el procesamiento de los datos, por medio de un conjunto de instrucciones llamados programas. El ordenamiento y la lógica de los programas esta definida por un conjunto de personas llamados programadores. El computador se divide fundamentalmente en una parte fı́sica llamada Hardware y una parte lógica, es decir un conjunto de instrucciones que hacen funcionar el computador llamada Software. 11 12 CAPÍTULO 2. GENERALIDADES COMPUTACIONALES 2.2. Hardware La parte fı́sica del computador agrupa una serie de dispositivos que se dividen de acuerdo a las tareas que realiza en: Dispositivos de entrada/salida. Dispositivos de memoria. Dispositivos de comunicación. Dispositivo de procesamiento. 2.2.1. Dispositivos de entrada/salida Los dispositivos de entrada/salida son los dispositivos que permiten la comunicación entre el usuario y el computador. Al igual que los dispositivos de almacenamiento secundario, a los dispositivos de Entrada/Salida también se les denomina periféricos que normalmente son externos al computador. Los dispositivos de entrada son los que permiten ingresar datos al computador que normalmente son almacenados en la memoria central y algunos de ellos son el teclado, el ratón, el scaner, el micrófono, etc. los dispositivos de salida son aquellos que permiten mostrar resultados de la información procesada. Entre estos dispositivos los más comunes son el monitor y la impresora. Las ultimas generaciones de computadores pueden dar entrada o salida de información a través de redes locales o globales como la Internet. 2.2. HARDWARE 2.2.2. 13 Dispositivos de memoria Los dispositivos de memoria son aquellos donde el computador puede almacenar información nueva y/o recuperar información previamente guardada. Los más comunes son los discos duros, discos flexibles, usb, CDs y DVDs. La memoria es una zona organizada en unidades o celdas individuales de almacenamiento. La mı́nima unidad de almacenamiento es denominada byte, la cual tiene capacidad para almacenar un carácter de información. Un byte esta conformado por 8 bits (binary digit), que son dı́gitos binarios 0 y 1. 2.2.3. Dispositivos de comunicación Los dispositivos de comunicación son aquellos que permiten al computador comunicarse con otros equipos en red o a Internet para permitir la entrada y salida de información. Algunos de estos dispositivos son el módem, la tarjeta de red y los Routers. 2.2.4. Dispositivo de Procesamiento El dispositivo de procesamiento le permite al computador dirigir y controlar tanto el procesamiento de la información como el funcionamiento de los demás dispositivos. Se encuentra conformado por 3 partes fundamentales: La unidad central de proceso La Memoria El bus de datos y direcciones 14 CAPÍTULO 2. GENERALIDADES COMPUTACIONALES 2.2.4.1. La unidad central de proceso La unidad central de proceso o CPU (Central Process Unit), es el cerebro del computador y es la que manipula la información de la memoria, realizando los cálculos y comunicándose con los diferentes dispositivos mediante el bus de datos. La unidad central de proceso consta de 2 componentes: la Unidad de Control y la unidad aritmético lógica(ALU). Unidad de Control: Es la encargada de coordinar las actividades del computador, sincronizando las operaciones para que se realicen en un orden especı́fico, solicitando la datos de los dispositivos de entrada, enviándolos a la unidad aritmético lógica, coordinando como deben ser procesados y enviando la información procesada a los dispositivos de salida. Unidad Aritmético lógica: Es la encargada de realizar las operaciones aritméticas y comparaciones lógicas. 2.2.4.2. La Memoria Debido a que el procesador no tiene la gran cantidad de memoria necesaria para almacenar instrucciones y datos de programa, deben emplearse transistores como elementos de memoria auxiliar en combinación con el microprocesador. Los tipos de memoria auxiliar son: RAM:(Random Access Memory) Esta es la memoria de acceso aleatorio, que puede ser leı́da y escrita por el procesador tantas veces como sea necesario mientras el computador este encendido, ya que su información es temporal y se borra una vez se apaga el computador. 2.3. SOFTWARE 15 ROM:(Read Only Memory) Esta memoria es de solo lectura ya que puede ser leı́da pero no modificada. En esta memoria se almacenan el software de arranque del sistema operativo y no se altera una vez se apague el computador. Cache: Esta memoria es de reserva temporal para los datos que recientemente fueron leı́dos o escritos y sirve para evitar demoras en el manejo de los datos del disco duro o memorias secundarias, ya que por ejemplo cuando se solicita información del disco duro, parte de ésta se almacena en cache y si nuevamente se solicita la información no se busca en el disco duro sino en cache haciendo más rápido el proceso. 2.2.4.3. El bus de datos y direcciones Es un conjunto de lı́neas conductoras de información, utilizadas para la transmisión de datos entre los diferentes componentes del computador, como el procesador, el disco duro, los dispositivos de memoria y los puertos de entrada/salida. El bus que conecta componentes internos de la computadora se llama bus local o bus del procesador y el que conecta las estaciones de red de denomina bus de red. 2.3. Software 2.3.1. Programa Los programas son una lista de instrucciones que se ejecutan secuencialmente, que le indican a un computador las acciones que debe realizar, como resolver un problema o las decisiones que debe tomar. La ejecución secuencial indica que cada instrucción debe ejecutarse una después de otra, pero aunque este tipo de programas son los más comunes, actualmente se viene desarrollando otro tipo de programación llamada programación en paralelo. 16 CAPÍTULO 2. GENERALIDADES COMPUTACIONALES La programación en paralelo permite que las instrucciones se pueden ejecutar simultáneamente en varios procesadores del mismo equipo, si la configuración del computador lo permite, o distribuida en una red, para que varios equipos por ejemplo de una misma empresa, realicen una parte de los cálculos que conforman entre si una tarea general. Un conjunto de programas se denomina Software. El software se clasifica en tres grupos: Software de sistema. Software de desarrollo Software de aplicación. 2.3.2. Software de sistema A este tipo de software pertenecen los sistemas operativos, que son los programas que controlan y supervisan todas las actividades para que el computador funcione. El sistema operativo ofrece e interpreta comandos para que el usuario siendo o no programador pueda interactuar con el computador, ya sea mediante información tecleada o mediante interpretes gráficos que son más fáciles de manejar mediante un ratón haciendo click en la opción deseada. 2.3.3. Software de desarrollo El software de desarrollo es un software especial para crear y mantener nuevo software, además de permitir la comunicación usuario/maquina. Ejemplos de este software son programas como C, el pascal, el fortran y el Visual Basic entre otros. 2.4. LENGUAJES DE PROGRAMACIÓN 2.3.4. 17 Software de aplicación Este tipo de software es también llamado paquetes y es construido para que realice una tarea especı́fica que no es la de crear nuevos programas. Ejemplo de este software son las editores de texto, las hojas de cálculo, los manejadores de bases de datos, diseñadores de gráficos, reproductores de sonido y los juegos entre otros. 2.4. Lenguajes de programación Los lenguajes de programación permiten al usuario escribir algoritmos, es decir una secuencia de instrucciones para que sean interpretadas por un computador. Los lenguajes de programación se clasifican en: Lenguaje de Máquina. Lenguaje ensamblador. Lenguaje de alto nivel. 2.4.1. Lenguaje de Máquina El lenguaje de máquina es el único usado directamente por el computador y compuesto de instrucciones en código binario. Es de difı́cil utilización por los usuarios y de lenta implementación hasta para realizar los programas mas sencillos. 18 2.4.2. CAPÍTULO 2. GENERALIDADES COMPUTACIONALES Lenguaje ensamblador Este lenguaje es más fácil de programar que el lenguaje de máquina ya que sus instrucciones son nemotécnicas, es decir son abreviaturas de fácil recordación, algunas de estas son STORE(grabar), ADD(adicionar o sumar) y JUMP(saltar), entre otras. El lenguaje ensamblador interpreta instrucciones que son llevadas a lenguaje de maquina para ser ejecutadas por el hardware. El gran inconveniente de programar en lenguaje ensamblador es que las instrucciones dependen de la maquina en la que se trabaja y si cambia a otro computador, todas la instrucciones cambian. El requerimiento de que los programas tuvieran instrucciones más estándar y de fácil estructuración, además de que funcionaran independiente de la máquina en la que se este trabajando, insidio para la creación de los lenguajes de alto nivel. 2.4.3. Lenguaje de alto nivel Los lenguajes de alto nivel son lenguajes fabricados especı́ficamente para que los usuarios realicen sus propios programas, los cuales traen muchas ayudas, poseen en muchos casos un entorno visual que es más amigable para el usuario y facilita su utilización. Los programas escritos en lenguajes de alto nivel son independientes del hardware y pueden funcionar en un computador diferente al que fue realizado, ya que el manejo de direcciones y otros requerimientos fı́sicos son manejador internamente por el programa. Los lenguajes de alto nivel se dividen en Interpretes y Compiladores. 2.4. LENGUAJES DE PROGRAMACIÓN 2.4.3.1. 19 Interpretes Los interpretes son traductores de código que toman un programa fuente de alto nivel y lo convierten en lenguaje de máquina para que el procesador pueda ejecutar las operaciones requeridas. Algunos ejemplos de este tipo de programas son el BASIC1 y el LOGO2 . Un inconveniente que tienen los interpretes es que cuando traducen ciclos3 , que son muy comunes en programación, se genera una lı́nea de código de máquina nueva por cada vez que se repite el ciclo, generado un volumen considerable de nuevas instrucciones y haciendo más lenta la ejecución que los programas en lenguaje de máquina. 2.4.3.2. Compiladores Los compiladores toman un archivo fuente escrito en un lenguaje de alto nivel y lo traducen integro a un código llamado código objeto que contiene instrucciones de lenguaje de máquina, con lo que hace que ejecutarlo sea tan rápido como si hubiera sido escrito en lenguaje de máquina. Algunos de los compiladores más conocidos son el C, El pascal, Fortran4 , QuickBasic, entre otros. 1 Beginners All-purpose Symbolic Instruction Code (Código de Instrucciones Simbólicas de Uso General para Principiantes).El lenguaje BASIC se suele enseñar a los programadores principiantes porque es fácil de utilizar y de comprender. 2 El LOGO posee un entorno gráfico sencillo que utiliza una tortuga que deja un rastro con movimientos básicos arriba,abajo, izquierda o derecha. 3 Un ciclo es un conjunto de instrucciones que la computadora ejecuta repetidamente, mientras una condición permanezca verdadera. 4 FORmula TRANslation (traducción de fórmulas). El primer lenguaje de programación de alto nivel para computadoras desarrollado 1954 por Jim Backus, en la actualidad es rara vez usado por existir otros más potentes y flexibles. 20 2.5. CAPÍTULO 2. GENERALIDADES COMPUTACIONALES Computadores personales y cliente servidor En el principio de la industria computacional, solo era un sueño que un computador pudiera estar en los hogares. Debido a los grandes tamaños de los primeros computadores y los costos que implicaba adquirirlos y mantenerlos; solo era posible para potencias que financiaban proyectos de algunas universidades, que en la mayorı́a de los casos eran con fines militares. Solo hasta 1977,Apple Computers gracias a que la tecnologı́a permitió fabricar equipos más económicos, introduce los llamados computadores personales para los negocios y por primera vez para el hogar; ya que hasta el momento los equipos que fabricaban las grandes empresas, por su gran volumen requieran de varias personas para hacerlos operar. En 1981 la IBM,(mayor vendedor de computadores del mundo para la época), masificó la utilización del computador personal en la entidades tanto del estado, las industrias, las grandes y pequeñas empresas, para hacerse rápidamente común en los hogares de los paı́ses desarrollados. En las empresas los computadores de cada puesto de trabajo que inicialmente no tenian mucha capacidad de computo, se interconectan entre si para formar una pequeña red y fue ası́ como se pone en practica la llamada computación distribuida donde las tareas ha realizar, se distribuyen en toda la red para que los equipos con menor carga de trabajo realicen procesamiento de aquellos con mayor carga. En cuanto las computadoras tienen mayor capacidad de procesamiento, se hacia más evidente que los usuarios desperdiciaban esta capacidad, a la espera de repuesta de los lentos dispositivos de entrada y salida; es por esto que se implemento el concepto de tiempo compartido donde los usuarios que solo tienen un monitor y un teclado comparten una misma maquina central(estructura muy utilizada en los bancos), que es tan rapida en sus respuestas, que pareciera que las tareas las resolviera simultáneamente o en paralelo. 2.5. COMPUTADORES PERSONALES Y CLIENTE SERVIDOR 21 Actualmente a pesar de que los equipos tienen mayor capacidad de almacenamiento, en algunas empresas no se requiere que todos las estaciones de trabajo de la red, tengan todos los programas y los datos que son comunes entre ellas; Esta información es almacenada en un equipo central llamado servidor que realiza el control, gestiona el procesamiento, el envio y la recepcion de los datos de los clientes como son llamadas todas las estaciones de trabajo de la red, con lo que se genera la computación Cliente-Servidor. Los lenguajes C, C++ y java permiten desarrollar programas como sistemas operativos, software para computación distribuida y aplicaciones Cliente-Servidor.