Herramientas de Programación Prof. Yudith Cardinale email: [email protected], [email protected] Ofic.: Mys 220-A Contenido ➢ ➢ ➢ ➢ ➢ Presentación del curso Evolución histórica de los sistemas de computación Evolución de los lenguajes de programación Clasificación de los lenguajes de programación Compilación e interpretación Evaluación Examen escrito (20%) Presentación oral (20%) Proyecto (30%) Informe (10%) Programa (20%) Talleres (30%) Tema de expocisiones Programación orientada a aspectos Haskel Prolog PHP JSP Javascript Eclipse (plugins C++, C, PHP,..) App Inventor Gambas Exposiciones 15-20 min Contenido ◦ Definición ◦ Areas de aplicación ◦ Ejemplos Básicos ◦ Relaciones con otras herramientas (versiones, plugins, interfaces) Historia de la Computación Ábaco: - Instrumento de cálculo más antiguo - Se considera su origen desde hace más de 5000 años La Pascalina Leonardo Da Vinci (1452-1519) Blaise Pascal (1623-1662) Se considera el antepasado Remoto del actual computador Historia de la Computación “Locura de Babbage”: Máquina de diferencias: 1811 propone el diseño 1822 presentó el modelo 60 sumas por minuto sumar, restar, logaritmos, polinomios Máquina analítica: 1833 propone el diseño de una máquina programable Tarjetas perforadas No construyó un modelo Historia de la computación Tarjeta perforadora por Joseph-Marie Jackard (1753-1834) En 1843 Lady Ada Augusta Lovelace sugiere adaptar las tarjetas perforadoras al motor de Babbage (Primera programadora) Historia de la Computación International Bussines Machines Corporation (IBM) Máquina electromagnética de Contabilidad (Herman Hollerit (1860-1929) primer informático) - la el el la el el el el la perforadora de tarjetas, verificador, reproductor, perforación sumaria, intérprete, clasificador, cotejador, calculador y máquina de contabilidad Historia de la computación ENIAC, 1946 Electronic Numerical Integrator And Computer (Atanasoff Berry Computer, 1938 o Z1, 1938 ) Fue el primer ordenador totalmente electrónico, estaba compuesta por 20.000 válvulas de vacío, 70.000 resistores y 500.000 soldaduras hechas a mano. La unidad necesitaba 160 kw de electricidad Pesaba 30 toneladas y ocupaba un espacio de 450 mts cuadrados Conectada a un tablero con más de 6000 Interruptores Sistema decimal Primera Generación de Computadoras (de 1951 a 1958) Notación binaria Interpretador COBOL Common business oriented Language (1952) EDVAC (Eletronic Discrete-Variable Automatic Computer) Von Neumann 1945 Primera Generación de Computadoras (de 1951 a 1958) Gran tamaño Escasa capacidad de cómputo y Almacenamiento Programados en lenguaje de máquina Posteriormente Surgen los lenguajes ensambladores Segunda Generación (1959-1964) Transistores Compatibilidad Sistemas limitada batch Múltiples programas en disco Tercera Generación (1964-1971) Circuitos integrados Compatibilidad con equipo mayor Multiprogramación Minicomputadora Transistores Interacción con el usuario (tiempo compartido) Tercera Generación (1964-1971) Multiprogramación Interrupt Processing Device Drivers Job Sequencing Control Language Interpreter Monitor Boundary Tercera Generación (1964-1971) Tiempo compartido Interrupt Processing Device Drivers Job Sequencing Control Language Interpreter Monitor Terminal Terminal job1 Usuarios job2 job3 free Terminal Terminal La cuarta Generación (1971 a la fecha) Microprocesador – Computadores personales Chips de memoria. Microminiaturización Interfaces gráficas Eficiencia Redes - Internet Arquitectura de un computador Arquitectura de un computador Evolución de los Lenguajes de Programación Razones de la diversidad de lenguajes de programación Evolución Propósitos especiales Prefrencias personales Razones del éxito de un lenguaje de programación Poder Expresivo Facilidad de uso para novatos Facilidad de implementación Excelentes compiladores Economía, patronato e inercia Clasificación de los lenguajes Nivel de abstracción Forma de ejecución Paradigma de programación Nivel de Abstracción Máquina Bajo nivel Medio nivel Alto nivel Forma de ejecución Lenguajes compilados Lenguajes Interpretados Paradigma de programación Imperativo o por procedimientos Funcional Lógico Orientado por Objetos Lenguaje Imperativo Instrucciones ejecutadas secuencialmente Declaración de variables, tipos y procedimientos Baja al nivel de la máquina para describir el proceso llevado a cabo por el programa Ejemplos: Pascal, C, Fortran, Java Lenguaje funcional Constituido por definiciones de funciones matemáticas No hay asignación de variables, ni las secuencias o iteración Ejemplos: Haskell, Miranda, R, Lisp, Scala, Scheme, ML, Erlang Lenguaje funcional Lenguaje funcional Factorial (en LISP) Break 114 [117]> (defun factorial(n) (if (= n 0) 1 (* n (factorial (- n 1))))) FACTORIAL Break 114 [117]> (FACTORIAL 5) 120 Lenguaje lógico Programas escritos en un subconjunto de lógica de primer orden Una base de datos de relaciones lógicas y detalles que se cumplen para la aplicación Especificación (reglas) Datos (hechos) Ejemplos: Máquina lógica Resultados Prolog, Alf, Mercury Lenguaje Lógico Lenguaje Orientado a Objetos Usa objetos y sus interacciones para diseñar aplicaciones Un objeto incluye toda la información que permite definirlo e identificarlo. Java C++ ¿Porqué estudiamos los lenguajes? Facilita el aprendizaje del lenguaje Permite entender características del lenguaje Ayuda a la escogencia entre alternativas Contribuye a hacer buen uso de las herramientas relacionadas. Compilación e Interpretación COMPILADOR Compilación e Interpretación COMPILADOR Compilación e Interpretación Interpretador Traductor Enlazador (link) Compilador + Assembler Material de apoyo Capítulo 1 Libro “Cómo programar en Java” de Deitel & Deitel http://www.portalplanetasedna.c om.ar/computacion.htm http://www.ldc.usb.ve/~yudith/do cencia/Telematica/organizacionhe rramientas.html