You are on page 1of 16

1.- Introduccion 1.

1 Breve resea de la computacin


La computacin es el estudio de los fundamentos tericos de la informacin que procesan las computadoras, y las distintas implementaciones en forma de sistemas computacionales. Puede usarse como sinnimo de informtica. Algunos autores consideran que no hay una sola persona a la que se le pueda atribuir el haber inventado la computadora, sino que fue el esfuezo de muchas personas. Sin embargo en el antiguo edificio de Fsica de la Universidad de Iowa aparece una p laca con la siguiente leyenda: "La primera computadora digital electrnica de operacin automtica del mundo, fue construida en este edificio en 1939 por John Vincent Atanasoff, matemtico y fsico de la Facultad de la Universidad, quien concibi la idea, y por Clifford Edward Berry, estudiante graduado de fsica." Mauchly y Eckert, despus de varias conversaciones con el Dr. Atanasoff, leer apuntes que describan los principios de la computadora ABC y verla en persona, el Dr. John W. Mauchly colabor con J.Presper Eckert, Jr. para desarrollar una mquina que calcul ara tablas de trayectoria para el ejrcito estadounidense. El producto final, una computadora electrnica completamente operacional a gran escala, se termin en 1946 y se llam ENIAC (Electronic Numerical Integrator And Computer), Integrador numric o y calculador electrnico. La ENIAC construida para aplicaciones de la Segunda Guerra mundial, se termin en 30 meses por un equipo de cientficos que trabajan bajo reloj. La ENIAC, mil veces ms veloz que sus predecesoras electromecnicas, irrumpi como un importante descubrimiento en la tecnologa de la computacin. Pesaba 30 toneladas y ocupaba un espacio de 450 mts cuadrados, llenaba un cuarto de 6 m x 12 m y con tena 18,000 bulbos, tena que programarse manualmente conectndola a 3 tableros que contenan ms de 6000 interruptores. Ingresar un nuevoprograma era un proceso muy tedioso que requera das o incluso semanas. A diferencia de las computadoras actuales que operan con un sistema binario (0,1) la ENIAC operaba con uno decimal (0,1,2..9) La ENIAC requera una gran cantidad de electricidad. La leyenda cuenta que la ENIAC, construida en la Universidad de Pensilvania, bajaba las luces de Filadelfia siempre que se activaba. La imponente escala y las numerosas aplicaciones generales de la ENIAC sealaron el comienzo de la primera generacin de computadoras. En 1945, John von Neumann, que haba trabajado con Eckert y Mauchly en la Universidad de Pennsylvania, public un artculo acerca del almacenamiento de programas. El concepto de programa almacenado permiti la lectura de un programa dentro de la memoria d e la computadora, y despus la ejecucin de las instrucciones del mismo sin tener que volverlas a escribir. La primera computadora en usar el citado concepto fue la la llamada EDVAC (Eletronic DiscreteVariable Automatic Computer, es decir computadora aut omtica electrnica de variable discreta), desarrollada por Von Neumann, Eckert y Mauchly. Los programas almacenados dieron a las computadoras una flexibilidad y confiabilidad tremendas, hacindolas ms rpidas y menos sujetas a errores que los programas mecnicos. Una computadora con capacidad de programa almacenado podra ser utilizada para v arias aplicaciones cargando y ejecutando el programa apropiado. Hasta este punto, los programas y datos podra ser ingresados en la computadora slo con la notacin binaria, que es el nico cdigo que las computadoras "entienden". El siguiente desarrollo importante en el diseo de las computadoras fueron los programas intrpretes, que permitan a las personas comunicarse con las computadoras utilizando medios distintos a los numeros binarios. En 1952 Grace Murray Hoper una oficial de la Marina de E.U., desarroll el primer compilador, un programa que puede traducir enunciados parecidos al ingls en un cdigo binario comprensible para la maquina llamado COBOL (COmmon Business-Oriented Langu aje). EL ABACO; quiz fue el primer dispositivo mecnico de contabilidad que existi. Se ha calculado que tuvo su origen hace al menos 5000 aos y su efectividad ha soportado la prueba del tiempo. LA PASCALINA; El inventor y pintor Leonardo Da Venc (1452-1519) traz las ideas para una sumadora mecnica. Siglo y medio despus, el filsofo y matemtico francs Balic Pascal (1623-1662) por fin invent y construy la primera sumadora mecnica. Se le llamo Pascalina y funcionaba como maquinaria a base de engranes y ruedas. A pesar de que Pascal fue enaltecido por toda Europa debido a sus logros, la Pascalina, result un desconsolador fallo financiero, pues para esos momentos, resultaba ms costosa que la labor humana para los clculos artimticos.

LA LOCURA DE BABBAGE, Charles Babbage (1793-1871), visionario ingls y catedrtico de Cambridge, hubiera podido acelerar el desarrollo de las computadoras si l y su mente inventiva hubieran nacido 100 aos despus. Adelant la situacin del hardware computacional al inventar la "mquina de diferencias", capaz de calcular tablas matemticas. En 1834, cuando trabajaba en los avances de la mquina de diferencias Babbage concibi la idea de una "mquina analtica". En esencia, sta era una computadora de propsitos generales. Conforme con su diseo, la mquina analtica de Babbage poda suma r, substraer, multiplicar y dividir en secuencia automtica a una velocidad de 60 sumas por minuto. El diseo requera miles de engranes y mecanismos que cubriran el rea de un campo de futbol y necesitara accionarse por una locomotora. Los escpticos l e pusieron el sobrenombre de "la locura de Babbage". Charles Babbage trabaj en su mquina analtica hasta su muerte. Los trazos detallados de Babbage describan las caractersticas incorporadas ahora en la moderna computadora electrnica. Si Babbage hubiera vivido en la era de la tecnologa electrnica y las partes de precisin, hubiera adelantado el nacimiento de la computadora electrnica por varas dcadas. Ironicamente, su obra se olvid a tal grado, que algunos pioneros en el desarrollo de la computadora electrnica ignoraron por completo sus conceptos sobre memoria, impresoras, tarjetas perforadas y control de pro grama secuencia. LA PRIMERA TARJETA PERFORADA; El telar de tejido, inventado en 1801 por el Francs Joseph-Marie Jackard (17531834), usado todava en la actualidad, se controla por medio de tarjetas perforadas. El telar de Jackard opera de la manera siguiente: las tarje tarjetas se perforan estratgicamente y se acomodan en cierta secuencia para indicar un diseo de tejido en particular. Charles Babbage quiso aplicar el concepto de las tarjetas perforadas del telar de Jackard en su motor analtico. En 1843 Lady Ada Augusta Lovelace sugiri la idea de que las tarjetas perforadas pudieran adaptarse de manera que propiciaran que el motor de Babbage repitiera ciertas operaciones. Debido a esta sugerencia algunas personas consideran a Lady Lovelace la primera programadora. Herman Hollerit (1860-1929) La oficina de censos estadounidense no termin el censo de 1880 sino hasta 1888. La direccin de la oficina ya haba llegado a la conclusin de que el censo de cada diez aos tardara mas que los mismo 10 aos para terminarlo. La oficina de censos comisiono al estadstica Herman Hollerit para que aplicara su experiencia en tarjetas perforadas y llevara a cabo el censo de 1890. Con el procesamiento de las tarjetas perforadas y el tabulador de tarjetas perforadas de Hollerit, el censo se termin en slo 3 a aos y la oficina se ahorr alrededor de $5,000,000 de dlares. As empez el procesamiento automatizado de datos. Hollerit no tom la idea de las tarjetas perforadas del invento de Jackard, sino de la "fotografa de perforacin" Algunas lneas ferroviarias de la poca expedan boletos con descripciones fsicas del pasajero; los conductores hacan orificios en los boletos que describan el color de cabello, de ojos y la forma de nariz del pasajero. Eso le di a Hollerith la idea para hacer la fotografa perforada de cada persona que se iba a tabular. Hollertih fund la Tabulating Machine Company y vendi sus productos en todo el mundo. La demanda de sus mquinas se extendi incluso hasta Rusia. El primer censo llevado a cabo en Rusia en 1897, se registr con el Tabulador de Hollerith. En 1911, la Tabulating Machine Company, al unirse con otras Compaas, form la Computing-Tabulating-Recording-Company. Las mquinas electromecnicas de contabilidad (MEC) Los resultados de las mquinas tabuladoras tenan que llevarse al corriente por medios manuales, hasta que en 1919 la Computing-Tabulating-Recording-Company. anunci la aparicin de la impresora/listadora. Esta innovacin revolucion la manera en que las Compaas efectuaban sus operaciones. Para reflejar mejor el alcance de sus intereses comerciales, en 1924 la Compaa cambi el nombre por el de international Bussines Machines Corporation (IBM) Durante dcadas, desde mediados de los cincuentas la tecnologa de las tarjetas perforadas se perfeccion con la implantacin de ms dispositivos con capacidades ms complejas. Dado que cada tarjeta contena en general un registro (Un nombre, direcci n, etc) el procesamiento de la tarjeta perforada se conoci tambin como procesamiento de registro unitario. La familia de las mquinas electromecnicas de contabilidad (EAM) eloctromechanical accounting machine de dispositivos de tarjeta perforada comprende: la perforadora de tarjetas, el verificador, el reproductor, la perforacin sumaria, el intrprete, e l clasificador, el cotejador, el calculador y la mquina de contabilidad. El operador de un cuarto de mquinas en una instalacin de tarjetas perforadas tena untrabajo que demandaba mucho esfuerzo fsico. Algunos cuartos de mquinas asemejaban la actividad de una fbrica; las tarjetas perforadas y las salidas impresas se cambiaban de un dispositivo a otro en carros manuales, el ruido que produca eran tan intenso como el de una planta ensambladora de automviles.

Generaciones de computadoras Primera Generacin (de 1951 a 1958) Las computadoras de la primera Generacin emplearon bulbos para procesar informacin. Los operadores ingresaban los datos y programas en cdigo especial por medio de tarjetas perforadas. El almacenamiento interno se lograba con un tambor que giraba rpida mente, sobre el cual un dispositivo de lectura/escritura colocaba marcas magnticas. Esas computadoras de bulbos eran mucho ms grandes y generaban ms calor que los modelos contemporneos. Eckert y Mauchly contribuyeron al desarrollo de computadoras de la 1era Generacin formando una Cia. privada y construyendo UNIVAC I, que el Comit del cens utiliz para evaluar el de 1950. La IBM tena el monopolio de los equipos de procesamiento de datos a base de tarjetas perforadas y estaba teniendo un gran auge en productos como rebanadores de carne, bsculas para comestibles, relojes y otros artculos; sin embargo no haba logrado el contrato para el Censo de 1950. Comenz entonces a construir computadoras electrnicas y su primera entrada fue con la IBM 701 en 1953. Despus de un lento pero exitante comienzo la IBM 701 se convierti en un producto comercialmente viable. Sin embargo en 1954 fuen introducido e l modelo IBM 650, el cual es la razn por la que IBM disfruta hoy de una gran parte del mercado de las computadoras. La administracin de la IBM asumi un gran riesgo y estim una venta de 50 computadoras. Este nmero era mayor que la cantidad de computadoras instaladas en esa poca en E.U. De hecho la IBM instal 1000 computadoras. El resto es historia. Aunque caras y de uso limitado las computadoras fueron aceptadas rpidamente por las Compaas privadas y de Gobierno. A la mitad de los aos 50 IBM y Remington Rand se consolidaban como lderes en la fabricacin de computadoras. Segunda Generacin (1959-1964) Transistor Compatibilidad limitada El invento del transistor hizo posible una nueva generacin de computadoras, ms rpidas, ms pequeas y con menores necesidades de ventilacin. Sin embargo el costo seguia siendo una porcin significativa del presupuesto de una Compaia. Las computadoras de la segunda generacin tambin utilizaban redes de nucleos magnticos en lugar de tambores giratorios para el almacenamiento primario. Estos ncleos contenan pequeos anillos de material magntico, enlazados entre s, en los cuales pod podrian almacenarse datos e instrucciones. Los programas de computadoras tambin mejoraron. El COBOL desarrollado durante la 1era generacin estaba ya disponible comercialmente. Los programas escritos para una computadora podan transferirse a otra con un mnimo esfuerzo. El escribir un programa ya no requera entender plenamente el hardware de la computacin. Las computadoras de la 2da Generacin eran substancialmente ms pequeas y rpidas que las de bulbos, y se usaban para nuevas aplicaciones, como en los sistemas para reservacin en lneas areas, control de trfico areo y simulaciones para uso general . Las empresas comenzaron a aplicar las computadoras a tareas de almacenamiento de registros, como manejo de inventarios, nmina y contabilidad. La marina de E.U. utiliz las computadoras de la Segunda Generacin para crear el primer simulador de vuelo (Whirlwind I). HoneyWell se coloc como el primer competidor durante la segunda generacin de computadoras. Burroughs, Univac, NCR, CDC, HoneyWell, los ms grandes competidores de IBM durante los 60s se conocieron como el grupo BUNCH (siglas). Tercera Generacin (1964-1971) circuitos integrados Compatibilidad con equipo mayor Multiprogramacin Minicomputadora Las computadoras de la tercera generacin emergieron con el desarrollo de los circuitos integrados (pastillas de silicio) en las cuales se colocan miles de componentes electrnicos, en una integracin en miniatura. Las computadoras nuevamente se hicieron ms pequeas, ms rpidas, desprendan menos calor y eran energticamente ms eficientes. Antes del advenimiento de los circuitos integrados, las computadoras estaban diseadas para aplicaciones matemticas o de negocios, pero no para las dos cosas. Los circuitos integrados permitieron a los fabricantes de computadoras incrementar la flexib ilidad de los programas, y estandarizar sus modelos. La IBM 360 una de las primeras computadoras comerciales que us circuitos integrados, poda realizar tanto anlisis numricos como administracin procesamiento de archivos. Los clientes podan escalar sus sistemas 360 a modelos IBM de mayor tamao y podan todava correr sus programas actuales. Las computadoras trabajaban a tal velocidad que proporcionaban la capacidad de correr ms de un programa de manera simultnea (multiprogramacin). Por ejemplo la computadora poda estar calculando la nomina y aceptando pedidos al mismo tiempo. Minicomputadoras, Con la introduccin del modelo 360 IBM acapar el 70% del mercado, para evitar competir directamente con IBM la empresa Digital Equipment Corporation DEC redirigi sus esfuerzos hacia computadoras pequeas. Mucho menos costosas de compra r y de operar que las computadoras grandes, las Minicomputadoras se desarrollaron durante la segunda generacin pero alcanzaron su mayor auge entre 1960 y 70. Cuarta Generacin (1971 a la fecha) Microprocesador

Chips de memoria. Microminiaturizacin Dos mejoras en la tecnologa de las computadoras marcan el inicio de la cuarta generacin: el reemplazo de las memorias con ncleos magnticos, por las de Chips de silicio y la colocacin de muchos ms componentes en un Chic: producto de la microminiaturi zacin de los circuitos electrnicos. El tamao reducido del microprocesador de Chips hizo posible la creacin de las computadoras personales. (PC) Hoy en da las tecnologas LSI (Integracin a gran escala) y VLSI (integracin a muy gran escala) permiten que cientos de miles de componentes electrnicos se almacn en un clip. Usando VLSI, un fabricante puede hacer que una computadora pequea rivalice con una computadora de la primera generacin que ocupara un cuarto completo.

Quinta Generacin En vista de la acelerada marcha de la microelectrnica, la sociedad industrial se ha dado a la tarea de poner tambin a esa altura el desarrollo del software y los sistemas con que se manejan las computadoras. Surge la competencia internacional por el dominio del mercado de la computacin, en la que se perfilan dos lderes que, sin embargo, no han podido alcanzar el nivel que se desea: la capacidad de comunicarse con la computadora en un lenguaje ms cotidiano y no a travs de cdigos o lenguajes de control especializados. Japn lanz en 1983 el llamado "programa de la quinta generacin de computadoras", con los objetivos explcitos de producir mquinas con innovaciones reales en los criterios mencionados. Y en los Estados Unidos ya est en actividad un programa en desarrollo que persigue objetivos semejantes, que pueden resumirse de la siguiente manera: Procesamiento en paralelo mediante arquitecturas y diseos especiales y circuitos de gran velocidad. Manejo de lenguaje natural y sistemas de inteligencia artificial. El futuro previsible de la computacin es muy interesante, y se puede esperar que esta ciencia siga siendo objeto de atencin prioritaria de gobiernos y de la sociedad en conjunto.

1-1-1 Impacto de las computadoras en la sociedad Hoy puede decirse que est en marcha una nueva revolucin, la Revolucin de la Informacin. La materia de objeto de esta nueva revolucin es la informacin, o sea, datos, conocimientos y programas. La Revolucin de la Informacin tendr consecuencias ms amplias. No es la nica innovacin de los ltimos aos, pero constituye el factor comn que permite y acelera todas las dems. Sobre todo en la medida que la informtica transforma el tratamiento, el almacenamiento y la transmisin de la informacin, va a modificar el sistema de las organizaciones y de la sociedad en su conjunto. En definitiva, asistimos al nacimiento de una nueva sociedad de la informacin donde la gestin, la calidad y la velocidad de informacin se convierten en factor clave de la competitividad: como insumo para el conjunto de la industria y como servicio prestado a los consumidores finales, las tecnologas de la informacin y la comunicacin condicionan la economa en todas sus etapas. Unido a los cambios que estn produciendo la aplicacin de nuevas tecnologas de la informacin y de la comunicacin, los avances de las ciencias de la vida - biotecnologas- generarn modificaciones en la productividad comparables a los citados, mediante actividades de creacin e innovacin en mbitos muy competitivos de la industria y la agricultura. La mayora de los expertos consideran que las Nuevas Tecnologas son bsicamente las siguientes: Tecnologas de la informacin. Telecomunicaciones. Biotecnologa. Nuevos materiales. Tecnologa nuclear. Tecnologa espacial. A continuacin hacemos una clasificacin de las Nuevas Tecnologas en relacin con el sector de la economa en el que ms influencia tienen. SECTOR PRIMARIO: Biotecnologas. Ingeniera gentica. Nuevas tecnologas agrcolas SECTOR SECUNDARIO: Autmatas programables. Control numrico. Energas alternativas. Fabricacin asistida por computadora. Fabricacin integrada por computadora. Hidrulica y mecnica. Lser. Robtica. Tecnologas aplicadas a los nuevos materiales. Reciclaje de residuos y tecnologas limpias. SECTOR TERCIARIO: Diseo asistido por computadora. Domtica. Multimedia. Ofimtica. Realidad virtual. Telecomunicaciones.

1.2 Elementos de la computadora A pesar de que las tecnologas empleadas en las computadoras digitales han cambiado mucho desde que aparecieron los primeros modelos en los aos 40, la mayora todava utiliza la Arquitectura de von Neumann, publicada a principios de los aos 1940 por John von Neumann, que otros autores atribuyen aJohn Presper Eckert y John William Mauchly. La arquitectura de Von Neumann describe una computadora con 4 secciones principales: la unidad aritmtico lgica (ALU por sus siglas del ingls: Arithmetic Logic Unit), la unidad de control, la memoria central, y los dispositivos de entrada y salida (E/S). Estas partes estn interconectadas por canales de conductores denominados buses: La memoria es una secuencia de celdas de almacenamiento numeradas, donde cada una es un bit o unidad de informacin. La instruccin es la informacin necesaria para realizar lo que se desea con el computador. Las celdas contienen datos que se necesitan para llevar a cabo las instrucciones, con el computador. El nmero de celdas varan mucho de computador a computador, y las tecnologas empleadas para la memoria han cambiado bastante; van desde los rels electromecnicos, tubos llenos de mercurio en los que se formaban los pulsos acsticos, matrices de imanes permanentes, transistores individuales a circuitos integrados con millones de celdas en un solo chip. En general, la memoria puede ser reescrita varios millones de veces (memoria RAM); se parece ms a una pizarra que a una lpida (memoria ROM) que slo puede ser escrita una vez. El procesador (tambin llamado Unidad central de procesamiento o CPU) consta de manera bsica de los siguientes elementos:

Un tpico smbolo esquemtico para una ALU: A y B son operandos; R es la salida; F es la entrada de la unidad de control; D es un estado de la salida. La unidad aritmtico lgica o ALU es el dispositivo diseado y construido para llevar a cabo las operaciones elementales como las operaciones aritmticas (suma, resta, ...), operaciones lgicas (Y, O, NO), y operaciones de comparacin o relacionales. En esta unidad es en donde se hace todo el trabajo computacional. La unidad de control sigue la direccin de las posiciones en memoria que contienen la instruccin que el computador va a realizar en ese momento; recupera la informacin ponindola en la ALU para la operacin que debe desarrollar. Transfiere luego el resultado a ubicaciones apropiadas en la memoria. Una vez que ocurre lo anterior, la unidad de control va a la siguiente instruccin (normalmente situada en la siguiente posicin, a menos que la instruccin sea una instruccin de salto, informando al ordenador de que la prxima instruccin estar ubicada en otra posicin de la memoria). Los procesadores pueden constar de adems de las anteriormente citadas, de otras unidades adicionales como la unidad de Coma Flotante Los dispositivos de Entrada/Salida sirven a la computadora para obtener informacin del mundo exterior y/o comunicar los resultados generados por el computador al exterior. Hay una gama muy extensa de dispositivos E/S como teclados, monitores, unidades de disco flexible o cmaras web.

1.3 Definiciones 1.3.1 Unidades de medida Bit Es el elemento ms pequeo de informacin de la computadora. Un bit es un nico dgito en un nmero binario (0 o 1) los cuales agrupados forman unidades ms grandes de datos en los sistemas de las computadoras, siendo el byte (8 bits) siendo el ms conocido de estos Byte Llamado tambin objeto el cual se describe como la unidad bsica de almacenamiento de informacin, generalmente equivalente a 8 bits pero el tamao del bit depende del cdigo de informacin en el que se defina. Kilobyte Es una unidad de medida utilizada en informtica que equivale a 1024 bytes. Es una unidad comn para la capacidad de memoria o almacenamiento de las microcomputadoras . Megabyte Es una unidad de medida de cantidad de datos informticos. Es un mltiplo binario del byte que equivale a un milln de bytes (1 048576 bytes) Gigabyte Es un mltiplo del byte de smbolo gb que se describe como la unidad de medida ms utilizada en los discos duros. El cual tambin es una unidad de almacenamiento. Un gigabyte es con exactitud (1,073,742,824 bytes o mil 1024 megabytes) Terabyte Es la unidad de medida de la capacidad de memoria y de dispositivos de almacenamiento informtico. Su smbolo es TB y coincide con algo ms de un trilln de bytes

1 cuarteto=4 bits 1 byte= 8 bits 1 kilobytes=1024 x 8= 8192 bits 1 megabyte= 1024 x 1024 x 8= 8388608 bits 1 gigabytes=1024 x 1024 x 1024 x 8= 8589934592bits Ejercicio 64Gb a bits= 549 755 813 888bits 256mb a bits=2147483648bits 16mb a kb=16384kb 128kb a byte=131072bytes 4mb a byte=4194304bytes 30kb a bits=245760bits 2Gb a MB=2048mb 15 Mb a bits=125829120bits 20 GB a bits=171 798 691 840 bits

1.3.2 Lenguaje de alto nivel, bajo nivel, ensamblador y mquina Un lenguaje de programacin es un lenguaje inventado para controlar una mquina, (normalmente, un ordenador). Hay muchsimos, de toda clase de tipos y caractersticas, inventados para facilitar el abordaje de distintos problemas, el mantenimiento del software, su reutilizacin, mejorar la productividad, etc. Los lenguajes de programacin se pueden clasificar segn varios criterios. He encontrado doce en total: Nivel de abstraccin, propsito, evolucin histrica, manera de ejecutarse, manera de abordar la tarea a realizar, paradigma de programacin, lugar de ejecucin, concurrencia, interactividad, realizacin visual, determinismo y productividad. Hay que tener en cuenta tambin, que en la prctica, la mayora de lenguajes no pueden ser puramente clasificados en una categora, pues surgen incorporando ideas de otros lenguajes y de otras filosofas de programacin, pero no importa al establecer las clasificaciones, pues el autntico objetivo de las mismas es mostrar los rangos, las posibilidades y tipos de lenguajes que hay. 1. Nivel de abstraccin. Segn el nivel de abstraccin, o sea, segn el grado de cercana a la mquina: Lenguaje mquina Es el sistema de cdigos directamente interpretable por un circuito microprogramable, como el microprocesador de una computadora o el microcontrolador de unautmata. Este lenguaje est compuesto por un conjunto de instrucciones que determinan acciones al ser tomadas por la mquina. Un programa consiste en una cadena de estas instrucciones ms un conjunto de datos sobre el cual se trabaja. Estas instrucciones son normalmente ejecutadas en secuencia, con eventuales cambios de flujo causados por el propio programa o eventos externos. El lenguaje de mquina es especfico de la arquitectura de la mquina, aunque el conjunto de instrucciones disponibles pueda ser similar entre arquitecturas distintas. Los circuitos microprogramables son sistemas digitales, lo que significa que trabajan con dos nicos niveles de tensin. Dichos niveles, por abstraccin, se simbolizan con los nmeros 0 y 1, por eso el lenguaje de mquina slo utiliza dichos signos. Esto permite el empleo de las teoras del lgebra booleana y del sistema binario en el diseo de este tipo de circuitos y en su programacin. Lenguaje ensamblador: Es un lenguaje de programacin de bajo nivel para los computadores, microprocesadores, microcontroladores y otros circuitos integrados programables. Implementa una representacin simblica de los cdigos de mquinabinarios y otras constantes necesarias para programar una arquitectura dada de CPU y constituye la representacin ms directa del cdigo mquina especfico para cada arquitectura legible por un programador. Esta representacin es usualmente definida por el fabricante de hardware, y est basada en los mnemnicos que simbolizan los pasos de procesamiento (las instrucciones), los registros del procesador, las posiciones de memoria y otras caractersticas del lenguaje. Un lenguaje ensamblador es por lo tanto especfico de cierta arquitectura de computador fsica (o virtual). Lenguajes de bajo nivel: Es aquel en el que sus instrucciones ejercen un control directo sobre el hardware y estn condicionados por la estructura fsica de la computadora que lo soporta. La programacin se realiza teniendo muy en cuenta las caractersticas del procesador. Ejemplo: Lenguajes ensamblador. Lenguajes de nivel medio: Permiten un mayor grado de abstraccin pero al mismo tiempo mantienen algunas cualidades de los lenguajes de bajo nivel. Ejemplo: C puede realizar operaciones lgicas y de desplazamiento con bits, tratar todos los tipos de datos como lo que son en realidad a bajo nivel (nmeros), etc. Lenguajes de alto nivel: Se caracteriza por expresar los algoritmos de una manera adecuada a la capacidad cognitiva humana, en lugar de a la capacidad ejecutora de las mquinas. Ms parecidos al lenguaje humano. Manejan conceptos, tipos de datos, etc.,

de una manera cercana al pensamiento humano ignorando (abstrayndose) del funcionamiento de la mquina. Ejemplos: Java, Ruby. Hay quien slo considera lenguajes de bajo nivel y de alto nivel, (en ese caso, C es considerado de alto nivel). 2. Propsito. Segn el propsito, es decir, el tipo de problemas a tratar con ellos: Lenguajes de propsito general: Aptos para todo tipo de tareas: Ejemplo: C. Lenguajes de propsito especfico: Hechos para un objetivo muy concreto. Ejemplo: Csound (para crear ficheros de audio). Lenguajes de programacin de sistemas: Diseados para realizar sistemas operativos o drivers. Ejemplo: C. Lenguajes de script: Para realizar tareas varias de control y auxiliares. Antiguamente eran los llamados lenguajes de procesamiento por lotes (batch) o JCL (Job Control Languages). Se subdividen en varias clases (de shell, de GUI, de programacin web, etc.). Ejemplos: bash (shell), mIRC script, JavaScript (programacin web).

3. Evolucin histrica. Con el paso del tiempo, se va incrementando el nivel de abstraccin, pero en la prctica, los de una generacin no terminan de sustituir a los de la anterior: Lenguajes de primera generacin (1GL): Cdigo mquina. Lenguajes de segunda generacin (2GL): Lenguajes ensamblador. Lenguajes de tercera generacin (3GL): La mayora de los lenguajes modernos, diseados para facilitar la programacin a los humanos. Ejemplos: C, Java. Lenguajes de cuarta generacin (4GL): Diseados con un propsito concreto, o sea, para abordar un tipo concreto de problemas. Ejemplos:NATURAL, Mathematica. Lenguajes de quinta generacin (5GL): La intencin es que el programador establezca el qu problema ha de ser resuelto y las condiciones a reunir, y la mquina lo resuelve. Se usan en inteligencia artificial. Ejemplo: Prolog. 4. Manera de ejecutarse. Segn la manera de ejecutarse: Lenguajes compilados: Un programa traductor traduce el cdigo del programa (cdigo fuente) en cdigo mquina (cdigo objeto). Otro programa, el enlazador, unir los ficheros de cdigo objeto del programa principal con los de las libreras para producir el programa ejecutable. Ejemplo: C. Lenguajes interpretados: Un programa (intrprete), ejecuta las instrucciones del programa de manera directa. Ejemplo: Lisp. Tambin los hay mixtos, como Java, que primero pasan por una fase de compilacin en la que el cdigo fuente se transforma en bytecode, y este bytecode puede ser ejecutado luego (interpretado) en ordenadores con distintas arquitecturas (procesadores) que tengan todos instalados la mismamquina virtual Java. 5. Manera de abordar la tarea a realizar. Segn la manera de abordar la tarea a realizar, pueden ser: Lenguajes imperativos: Indican cmo hay que hacer la tarea, es decir, expresan los pasos a realizar. Ejemplo: C. Lenguajes declarativos: Indican qu hay que hacer. Ejemplos: Lisp, Prolog. Otros ejemplos de lenguajes declarativos, pero que no son lenguajes de programacin, son HTML (para describir pginas web) oSQL (para consultar bases de datos). 6. Paradigma de programacin. El paradigma de programacin es el estilo de programacin empleado. Algunos lenguajes soportan varios paradigmas, y otros slo uno. Se puede decir que histricamente han ido apareciendo para facilitar la tarea de programar segn el tipo de problema a abordar, o para facilitar el mantenimiento del software, o por otra cuestin similar, por lo que todos corresponden a lenguajes de alto nivel (o nivel medio), estando los lenguajes ensambladores atados a la arquitectura de su procesador correspondiente. Los principales son:

Lenguajes de programacin procedural: Divide el problema en partes ms pequeas, que sern realizadas por subprogramas (subrutinas, funciones, procedimientos), que se llaman unas a otras para ser ejecutadas. Ejemplos: C, Pascal. Lenguajes de programacin orientada a objetos: Crean un sistema de clases y objetos siguiendo el ejemplo del mundo real, en el que unos objetos realizan acciones y se comunican con otros objetos. Ejemplos:C++, Java. Lenguajes de programacin funcional: La tarea se realiza evaluando funciones, (como en Matemticas), de manera recursiva. Ejemplo: Lisp. Lenguajes de programacin lgica: La tarea a realizar se expresa empleando lgica formal matemtica. Expresa qu computar. Ejemplo: Prolog. Hay muchos paradigmas de programacin: Programacin genrica, programacin reflexiva, programacin orientada a procesos, etc.

7. Lugar de ejecucin. En sistemas distribuidos, segn dnde se ejecute: Lenguajes de servidor: Se ejecutan en el servidor. Ejemplo: PHP es el ms utilizado en servidores web. Lenguajes de cliente: Se ejecutan en el cliente. Ejemplo: JavaScript en navegadores web. 8. Concurrencia. Segn admitan o no concurrencia de procesos, esto es, la ejecucin simultnea de varios procesos lanzados por el programa: Lenguajes concurrentes. Ejemplo: Ada. Lenguajes no concurrentes. Ejemplo: C. 9. Interactividad. Segn la interactividad del programa con el usuario u otros programas: Lenguajes orientados a sucesos: El flujo del programa es controlado por la interaccin con el usuario o por mensajes de otros programas/sistema operativo, como editores de texto, interfaces grficos de usuario (GUI) o kernels. Ejemplo: VisualBasic, lenguajes de programacin declarativos. Lenguajes no orientados a sucesos: El flujo del programa no depende de sucesos exteriores, sino que se conoce de antemano, siendo los procesos batch el ejemplo ms claro (actualizaciones de bases de datos, colas de impresin de documentos, etc.). Ejemplos: Lenguajes de programacin imperativos. 10. Realizacin visual. Segn la realizacin visual o no del programa: Lenguajes de programacin visual: El programa se realiza moviendo bloques de construccin de programas (objetos visuales) en un interfaz adecuado para ello. No confundir con entornos de programacin visual, como Microsoft Visual Studio y sus lenguajes de programacin textuales (como Visual C#). Ejemplo: Mindscript. Lenguajes de programacin textual: El cdigo del programa se realiza escribindolo. Ejemplos: C, Java, Lisp. 11. Determinismo. Segn se pueda predecir o no el siguiente estado del programa a partir del estado actual: Lenguajes deterministas. Ejemplos: Todos los anteriores. Lenguajes probabilsticos o no deterministas: Sirven para explorar grandes espacios de bsqueda, (como gramticas), y en la investigacin terica de hipercomputacin. Ejemplo: mutt (generador de texto aleatorio). 12. Productividad. Segn se caractericen por tener virtudes tiles o productivas, u oscuras y enrevesadas:

Lenguajes tiles o productivos: Sus virtudes en cuanto a eficiencia, sencillez, claridad, productividad, etc., motiva que sean utilizados en empresas, administraciones pblicas y/o en la enseanza. Ejemplos: Cualquier lenguaje de uso habitual (C, Java, C++, Lisp, Python, Ruby, ). Lenguajes esotricos o exticos: Inventados con la intencin de ser los ms raros, oscuros, difciles, simples y/o retorcidos de los lenguajes, para diversin y entretenimiento de frikis programadores. A veces exploran nuevas ideas en programacin. Ejemplo: Brainfuck.

1.3.3 Compilador Un compilador es un programa informtico que traduce un programa escrito en un lenguaje de programacin a otro lenguaje de programacin, generando un programa equivalente que la mquina ser capaz de interpretar. Usualmente el segundo lenguaje es lenguaje de mquina, pero tambin puede ser un cdigo intermedio (bytecode), o simplemente texto. Este proceso de traduccin se conoce como compilacin.1 Un compilador es un programa que permite traducir el cdigo fuente de un programa en lenguaje de alto nivel, a otro lenguaje de nivel inferior (tpicamente lenguaje de mquina). De esta manera un programador puede disear un programa en un lenguaje mucho ms cercano a como piensa un ser humano, para luego compilarlo a un programa ms manejable por una computadora.

Fig. Diagrama a bloques de la operacin de un compilador La construccin de un compilador involucra la divisin del proceso en una serie de fases que variar con su complejidad. Generalmente estas fases se agrupan en dos tareas: el anlisis del programa fuente y la sntesis del programa objeto. Anlisis: Se trata de la comprobacin de la correccin del programa fuente, e incluye las fases correspondientes al Anlisis lxico (que consiste en la descomposicin del programa fuente en componentes lxicos), Anlisis sintctico (agrupacin de los componentes lxicos en frases gramaticales ) y Anlisis semntico (comprobacin de la validez semntica de las sentencias aceptadas en la fase de Anlisis Sintctico). Sntesis: Su objetivo es la generacin de la salida expresada en el lenguaje objeto y suele estar formado por una o varias combinaciones de fases de Generacin de Cdigo (normalmente se trata de cdigo intermedio o de cdigo objeto) y de Optimizacin de Cdigo (en las que se busca obtener un cdigo lo ms eficiente posible).

Alternativamente, las fases descritas para las tareas de anlisis y sntesis se pueden agrupar en Front-end y Back-end: Front-end: es la parte que analiza el cdigo fuente, comprueba su validez, genera el rbol de derivacin y rellena los valores de la tabla de smbolos. Esta parte suele ser independiente de la plataforma o sistema para el cual se vaya a compilar, y est compuesta por las fases comprendidas entre el Anlisis Lxico y la Generacin de Cdigo Intermedio. Back-end: es la parte que genera el cdigo mquina, especfico de una plataforma, a partir de los resultados de la fase de anlisis, realizada por el Front End.

Esta divisin permite que el mismo Back End se utilice para generar el cdigo mquina de varios lenguajes de programacin distintos y que el mismo Front End que sirve para analizar el cdigo fuente de un lenguaje de programacin concreto sirva para generar cdigo mquina en varias plataformas distintas. Suele incluir la generacin y optimizacin del cdigo dependiente de la mquina.

El cdigo que genera el Back End normalmente no se puede ejecutar directamente, sino que necesita ser enlazado por un programa enlazador (linker)

1.3.4 Sistemas numricos Un sistema de numeracin es un conjunto de smbolos y reglas de generacin que permiten construir todos los nmeros vlidos. Un nmero N, en un sistema de numeracin posicional, se representa como: N = dp-1*bp-1 + dp-2*bp-2 + .....+ d0*b0 + d-1*b-1 + d-q*b-q donde: b : base o raz del sistema numrico. ds: dgitos o smbolos del sistema numrico, que son los b dgitos permitidos. p : nmero de dgitos enteros. q : nmero de dgitos fraccionarios. N se puede expresar como: N = dp-1dp-2 ... d0.d-1d-2 ... d-q punto base p = 0 nmero fraccionario q = 0 nmero entero p<>0 y q<>0 nmero mixto Sistema Decimal N10 = 27,510 = 2*101 + 7*101 + 5*10-1 b (base)= 10 d (dgito)= 0,1,2,3,4,5,6,7,8,9 p=2 y q=1. Sistema Binario N2 = 101.012 = 1*22 + 0*21 + 1*20 + 0*2-1 + 1*2-2 = 4 + 0 + 1 + 0 + 1/4 = 5.2510 b (base) = 2 d (dgito)= 0,1 p=3 y q=2. Sistema Octal N8 = 34.18 = 3*81 + 4*80 + 1*8-1 = 24 + 4 + 1/8 = 28.12510 b (base) = 8 d (dgito) = 0,1,2,3,4,5,6,7 p=2 y q= 1. Sistema Hexadecimal N16 = D56.A216 = 13*162 + 5*161 + 6*160 + 10*16-1 + 2*16-2 = 3414.632810 b (base) = 16 d (smbolo) = 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F p=3 y q=2 La utilidad y conversin con el sistema binario es similar al sistema octal, con la nica diferencia que los bits se agrupan de a cuatro. Este sistema es usado como entrada/salida en muchas aplicaciones con microprocesadores, como kits de desarrollo, interfaces, etc., ya que provee un medio eficiente para especificar direcciones, datos e instrucciones (8 y 16 bits).

1.3.5. Sistemas Operativos Un sistema operativo (SO, frecuentemente OS, del ingls Operating System) es un programa o conjunto de programas que en un sistema informtico gestiona los recursos de hardware y provee servicios a los programas de aplicacin Los sistemas operativos ms utilizados son: En telfonos mviles, MP3 y MP4: Windows Mobile, Linux, Java y Symbian En SERVIDORES (ordenadores centrales en grandes redes): UNIX, Windows Server o LINUX En PC's y otros ordenadores personales: WINDOWS (95, 98, XP, Vista, 7), LINUX (Ubuntu, Red Hat, Open Suse, Debian...) y MACINTOSH (MAC OS 7, MAC OS 8, MAC OS 9 y MAC OS X) Funciones de un sistema operativo GESTIN DE RECURSOS: control de discos duros, CDROM y DVDROM, gestin de perifricos (teclado, ratn, etc...), asignacin de cantidades de memoria, etc... INTERFAZ DE USUARIO: nos referimos al modo que tiene el ordenador de presentar la informacin al usuario. sta puede ser: GRFICA (un escritorio con distintos iconos y barras de men gobernados por ratn). Es el interfaz comnmente utilizado por todos nosotros. POR MENS: las rdenes se dan escogiendo entre diversas opciones agrupadas por mens. CONSOLA DE COMANDOS: un buen ejemplo es el smbolo de sistema, en el grupo de programas de Accesorios de Windows XP. Este sistema de comunicacin consiste en teclear directamente las rdenes en el teclado del PC. ADMINISTRACIN DE ARCHIVOS: el sistema operativo de encarga de guardar los datos en distintas unidades de almacenamiento (disco duro, disquetes, CD's y DVD's), as como de recuperarlos cuando el usuario se lo pida. GESTIN DE TAREAS: los SO actuales son multitarea, es decir, pueden realizar varias tareas y ejecutar varios programas a la vez. As, mientras navegamos por Internet o escribimos una carta, el antivirus est vigilando por si se produce algn ataque, o nuestro messenger est comprobando continuamente si alguno de nuestros contactos se ha conectado y nos ha enviado algn mensaje.

1.4 Algoritmos 1.4.1 Definicin

La palabra "algoritmo" proviene del gran matemtico rabe Mohamed Al Kho Warizmi, quien escribi entre los aos 800 y 825 la obra Quitab Al Jabr Al Mugabala, donde se recoga el sistema de numeracin hind y el concepto del cero, alcanz gran reputacin por el enunciado de las reglas paso a paso para sumar, restar, multiplicar y dividir nmeros decimales; la traduccin al latn del apellido en la palabra algorismus deriv posteriormente en algoritmo. Segn, Brassard y Bratley(2000), algoritmo, es sencillamente un conjunto de reglas para efectuar algn clculo, bien sea a mano o, ms frecuentemente, en una mquina, segn Joyanes(2003), es un mtodo para resolver problemas y segn Torrealba( 2004), Un algoritmo es una descripcin de los pasos bsicos a seguir para cumplir determinada tarea.
Ejemplo. Algoritmo para comprar los boleto de entrada al cine. 1. Inicio 2. Seleccionar la pelcula 3. Llegar al lugar de proyeccin de la pelcula 4. Revisar la cartelera 5. Hacer la cola de pago 6. Esperar el turno 7. Solicitar la pelcula. Si la hay 8. Entregar el dinero 9. Esperar por los boletos y la diferencia de pago 10. Retirarse Si no hay la pelcula 11. Elegir otra pelcula o retirarse 12. Fin

PARTES DE UN ALGORITMO Todo algoritmo debe obedecer a la estructura bsica de un sistema, es decir: entrada, proceso y salida. Donde: ENTRADA Corresponde al insumo, a los datos necesarios que requiere el proceso para ofrecer los resultados esperados. PROCESO Pasos necesarios para obtener la solucin del problema o la situacin planteada. SALIDA Resultados arrojados por el proceso como solucin. CARACTERSTICAS DE LOS ALGORITMOS Las caractersticas fundamentales que debe cumplir un algoritmo son: PRECISIN Indica el orden de realizacin de cada paso dentro del proceso. DEFINICION Indica la exactitud y consistencia de los pasos descritos en el proceso, si el algoritmo se prueba dos veces, en estas dos pruebas, se debe obtener el mismo resultado. FINITUD Indica el nmero razonable de pasos, los cuales deben conllevar a la finalizacin del proceso y producir un resultado en un tiempo finito.

You might also like