PONTIFICIA UNIVERSIDAD CATÓLICA MADRE Y MAESTRA FACULTAD DE CIENCIAS DE LA INGENIERÍA DEPARTAMENTO DE INGENIERÍA DE SISTEMAS Y COMPUTACIÓN ALGORITMOS FUNDAMENTALES (ISC-205-T) SEMESTRE: 20112012-01 Ing. Carlos Camacho TEMA NO.1: INTRODUCCIÓN Historia de la Computación El ábaco El primer dispositivo de cálculo que el hombre utilizó fueron los dedos de sus manos y pies. Es posible que el ábaco haya sido el primer dispositivo mecánico para contar. Se ha podido determinar que su antigüedad se remonta unos 3,000 años antes de Cristo. Su nombre procede del término griego ábacos, que significa superficie plana. La Pascalina En 1642 un joven francés Blaise Pascal, construyó la primera máquina mecánica de sumar. Se le dio el nombre de Pascalina. Tenía las dimensiones de una caja de zapatos y en su interior disponía unas ruedas dentadas conectadas entre sí que formaban una cadena de transmisión. Las ruedas representaban el sistema decimal de numeración; cada rueda constaba de diez pasos, para lo cual estaba convenientemente marcada con números del 0 al 9. El número total de ruedas ascendía a ocho, distribuidas de la siguiente manera: o 6 ruedas para representar los números enteros, y o 2 ruedas más en el extremo derecho para indicar dos posiciones Página 1 de 8 decimales. La Calculadora Universal El sucesor ilustre de Pascal en esta carrera inventiva fue el filósofo y matemático alemán Gottfied Wilhelm Leibniz. Desde muy joven, Leibniz hizo patente su interés hacia la matemática. Esto le movió a estudiar la máquina de cálculo de Pascal y mejorarla. En el año de 1671, Leibniz construyó su Calculadora Universal. Esta máquina no sólo sumaba y restaba, sino que también podía multiplicar y dividir. Aportando grandes avances a la tecnología. Pero el aporte más significativo de Leibniz a la ciencia de la computación es la invención del Sistema de Numeración Binario. Hoy en día, el sistema de numeración binario rige totalmente el lenguaje que hablan las computadoras actuales. La Máquina Analítica. Charles Babbage avanzó en el estado del equipo de cálculo al inventar una Máquina de Diferencias, capaz de calcular tablas matemáticas. En 1834, mientras trabajaba en mejoras a esa máquina, concibió la idea de una Máquina Analítica. Esta máquina era, en esencia, una computadora de aplicación general. Si Babbage hubiera nacido en la era de la tecnología electrónica, es posible que la computadora electrónica se hubiera inventado mucho antes. El Telar de Tejido Inventado en 1801 y aún en uso, se controlaba por medio de tarjetas perforadas. Lo inventó el francés Joseph Marie Jacquard. La idea consistía en hacer perforaciones estratégicamente situadas en tarjetas, colocándose estas en secuencia para indicar un diseño específico del tejido. Página 2 de 8 La Máquina Tabuladota La oficina del Censo de Estados Unidos no logró completar el censo de 1880 hasta casi 1888. La administración de la oficina llegó a la conclusión de que el censo de 1890 requeriría más de diez años para realizarse. La oficina comisionó al Dr. German Hollerith, un especialista en estadística, para que aplicara sus conocimientos en el empleo de tarjetas perforadas y realizara dicho censo. Utilizando el procesamiento de tarjetas perforadas y la Máquina Tabuladora de Tarjetas Perforadas, inventada por él mismo, el censo se concluyó en dos años y medio. Así empezó a surgir el Procesamiento Automático de Datos. La máquina Tabuladora era eléctrica y detectaba los huecos o perforaciones en las tarjetas, basándose en la lógica de Boole (ceros y unos). Hollerith fundó la "Tabulating Machine Company" que es la antecesora comercial de la actual IBM. Generaciones de la Computadora o Primera. 1951 – 1958 Se utilizó bulbos o tubos al vacio. Ej. UNIVAC I, IBM 701, IBM 650 o Segunda. 1959-1964 Se utilizo el transistor. Ej. Burroughs, Univac, NCR. o Tercera. 1964-1971 circuitos integrados. Ej. IBM 360 o Cuarta. 1971 a la fecha Microprocesador, Chips de memoria. Ej. IBM AT. o Quinta. Igual a la cuarta, pero con más eficiencia. Manejo de Multimedia. Uso de inteligencia artificial y la Robótica Tipos de Computadores Actuales o o o o Supercomputadoras. Mainframes. Minicomputadoras y Microcomputadoras. Página 3 de 8 Supercomputadoras. Son las computadoras más potentes en función del procesamiento. Son útiles para problemas que requieren cálculos complejos. Son las más costosas. Algunos ejemplos: Búsqueda y estudio de la energía y armas nucleares. Búsqueda de yacimientos petrolíferos con grandes bases de datos sísmicos. El estudio y predicción de tornados. El estudio y predicción del clima de cualquier parte del mundo. La elaboración de maquetas y proyectos de la creación de aviones, simuladores de vuelo Mainframes Por lo general tienen muchas terminales conectadas a ellas, manejan cantidades muy grandes de entradas, salidas y de almacenamiento. De alguna forma los mainframes son más poderosos que las supercomputadoras porque soportan más programas simultáneamente. PERO las supercomputadoras pueden ejecutar un solo programa más rápido que un mainframe. Las Minicomputadoras Son más pequeñas que los mainframes, orientada a tareas específicas. Por lo general tienen múltiples terminales Las minicomputadoras, en tamaño y poder de procesamiento, entre los mainframes y las microcomputadoras. En minicomputadora, es un sistema multiproceso. Actualmente almacenar grandes bases de datos, automatización industrial Página 4 de 8 se encuentran general, una se usan para y aplicaciones multiusuario. Las microcomputadoras Son conocidas más comúnmente como computadoras personales. El término PC se deriva de que para el año de 1981 , IBM®, sacó a la venta su modelo "IBM PC", la cual se convirtió en un tipo de computadora ideal para uso "personal", de ahí que el término "PC" se estandarizó y los clones que sacaron posteriormente otras empresas fueron llamados "PC y compatibles", usando procesadores del mismo tipo que las IBM , pero a un costo menor y pudiendo ejecutar el mismo tipo de programas. Existen otros tipos de PC, como la Macintosh®, que no son compatibles con la IBM, pero que en muchos de los casos se les llaman también "PC´s", por ser de uso personal. En la actualidad existen variados tipos en el diseño de PC´s: 1. Computadoras personales, con el gabinete tipo mini-torre u Horizontal. Separadas del monitor 2. Computadoras personales portátiles "Laptop" o "Notebook". 3. Computadoras personales que están en una sola unidad compacta el monitor y el CPU. 4. Estaciones de trabajo o Workstations. Entre otras. Sistemas operativos de Microsoft o DOS dominó el mercado de sistemas operativos durante los 80’s, pero gradualmente se volvió obsoleto. o Windows 3.0, 3.1 y 3.11 son ambientes operativos que proporcionan una GUI (grafic user interfase) para computadoras que corren DOS. o Las ventajas de Windows 95, son su interfaz simplificada, su multitareas de 32 bits y su capacidad para correr los programas de Windows y DOS más antiguos. o Las características de Windows 98 incluyen capacidades avanzadas para Internet, una interfaz de usuario mejorada llamada Escritorio Activo (Active Desktop) y un desempeño reforzado del sistema de archivo. Página 5 de 8 o Microsoft Windows NT ofreció una arquitectura de 32 bits verdadera y excelentes capacidades para conexión en red. o Windows CE lleva muchas capacidades de Windows 95 a dispositivos electrónicos de consumo, como los asistentes personales digitales. o Windows 2000, XP basados en la misma tecnología que Windows NT ofrecen mayor seguridad que los anteriores. o Macintosh ha sido un favorito desde hace mucho entre los fanáticos de la GUI, así como entre editores, desarrolladores de multimedia, artistas gráficos y escuelas, sobre todo debido a su interfaz consistente, su capacidad de conexión en red incorporada y su capacidad de conectar y usar para hardware. o El sistema operativo de IBM es el OS/2 Wrap, un sistema multitarea para un solo usuario para máquinas basadas en Intel. o UNIX fue el primer sistema operativo multiusuario, multiprocesamiento en computadoras personales, pero ha ido perdiendo participación en el mercado. Evolución de los lenguajes de Programación La evolución de los lenguajes de programación ha estado guiada por la evolución de: o o o o o Las computadoras y sus sistemas operativos. Las aplicaciones. Los métodos de programación. Los fundamento teóricos. La importancia dada a la estandarización. Programar es la forma de dar órdenes a la computadora. Para programar se utilizan los lenguajes de programación Lenguajes de Programación. Es un conjunto de símbolos, caracteres y reglas (programas) que les permiten a las personas comunicarse con la computadora. Tienen un conjunto de instrucciones que nos permiten realizar operaciones de entrada-salida, cálculos, manejo de textos, lógica/comparación y almacenamiento-recuperación. El único lenguaje que una computadora comprende es su lenguaje máquina. Sin embargo las personas tienen dificultad para entender el código máquina. Como resultado, los investigadores desarrollaron primero un lenguaje ensamblador y luego lenguajes de nivel superior. Página 6 de 8 Los lenguajes de nivel superior al lenguaje máquina, se enfocan en lo que el programador quiere que la máquina haga, no en cómo la máquina ejecutará esos comandos. Categorías de los lenguajes de programación Se dividen en: o Bajo nivel: Son dependientes de la máquina, están diseñados para ejecutarse en una determinada computadora. o Alto Nivel: Son independientes de la máquina y se pueden utilizar en una variedad de computadoras. Los lenguajes de más alto nivel no ofrecen necesariamente mayores capacidades de programación, pero si ofrecen una interacción programador/computadora más avanzada. Cuanto más alto es el nivel del lenguaje, más sencillo es comprenderlo y utilizarlo. Los lenguajes máquinas son los lenguajes más básicos. Consisten en hileras de números y son definidos por el diseño del hardware. Esto nos dice que el lenguaje máquina para una Macintosh no es el mismo que el de una PC. Esencialmente, el código máquina consiste por completo de los 0 y 1 del sistema numérico binario. Una computadora comprende solo su lenguaje máquina original. Los lenguajes ensambladores fueron desarrollados usando nemotécnicos similares a las palabras del idioma inglés. Los archivos fuente contienen instrucciones para que la computadora las ejecute, pero tales archivos deben primero traducirse al lenguaje máquina. Los lenguajes de alto nivel fueron desarrollados para hacer más fácil la programación. Estos lenguajes son llamados de alto nivel porque su sintaxis es más cercana al lenguaje humano que el código del lenguaje máquina o ensamblador. Los comandos (instrucciones) escritos en cualquier lenguaje ensamblador o de alto nivel deben ser traducidas de nuevo a código máquina antes de que la computadora pueda ejecutar los comandos. Estos programas traductores se denominan compiladores. Generaciones de los lenguajes de Programación Los lenguajes de programación son discutidos algunas veces en términos de generaciones, a pesar de que estas categorías son arbitrarias de alguna manera. Se considera que cada generación sucesiva contiene lenguajes que son más Página 7 de 8 fáciles de usar y más poderosos que los de la generación previa. Los lenguajes máquina son considerados de primera generación, y los ensambladores de segunda generación. Los lenguajes de alto nivel comenzaron con la tercera generación. Los lenguajes de la tercera generación tienen la capacidad de soportar programación estructurada, lo cual significa que proporcionan estructuras explícitas para control y ciclos. Los miembros de un equipo de desarrollo pueden leer el código de los demás y comprender la lógica y el flujo de control del programa. Estos programas son portátiles. Ejemplo: FORTRAN, COBOL, BASIC, PASCAL, C, C++, JAVA Los lenguajes de la cuarta generación (4GL) son principalmente lenguajes de programación para propósitos especiales, que son más fáciles de usar que los de tercera generación. Con los 4GL se pueden crear aplicaciones rápidamente. La mayoría de los 4GL tienen capacidad para interactuar con bases de datos. Ejemplo: Visual Basic, PowerBuilder, VBA, Delphi La quinta generación de los lenguajes de cómputo incluye inteligencia artificial y sistemas expertos. Estos tienen por objeto pensar y anticipar las necesidades de sus usuarios, en lugar de sólo ejecutar un conjunto de órdenes. Página 8 de 8