La descarga está en progreso. Por favor, espere

La descarga está en progreso. Por favor, espere

Aspectos de diseñó de los lenguajes de programación

Presentaciones similares


Presentación del tema: "Aspectos de diseñó de los lenguajes de programación"— Transcripción de la presentación:

1 Aspectos de diseñó de los lenguajes de programación
(Tema 2)

2 Introducción Los primeros lenguajes al ejecutarse en equipos costosos se proyectaban para producir un código de máquina eficiente, aún cuando la escritura de los programas era difícil. Ejemplos: Fortran y LISP

3 Introducción En la actualidad los equipos son de bajo costo, por lo que, permiten el desarrollo de programas que son fáciles de escribir correctamente aunque se ejecuten con lentitud algo mayor. Ejemplos: C++, Java, Ada Pero, ¿cómo se diseñan esta clase de lenguajes?

4 ¿Cómo diseñar un lenguaje?
Se tiene que tomar en cuenta tres influencias principales: La computadora subyacente en donde se van a ejecutar los programas escritos en el lenguaje. El modelo de ejecución, o computadora virtual, que apoya a ese lenguaje en el equipo real. El modelo de computación que el lenguaje implementa.

5 Organización y operación de una computadora
La arquitectura de una computadora la podemos describir como la unión de microprocesadores, memoria y dispositivos de I/O.

6 Organización y operación de una computadora
Una computadora es un conjunto de tipos de datos, operaciones y características, capaz de almacenar y ejecutar programas. A partir de la definición de una computadora siempre es posible construir la computadora en hardware.

7 Tipos de Arquitecturas
Arquitectura Tradicional Von Newmann Arquitecturas Alternativas Multiprocesadores

8 UCP Archivos externos dispositivos de entrada y salida
Memoria Principal Memoria Caché UCP Registro de Direcciones Registros de Datos Intérprete Operación Primitiva Operación Primitiva Organización de una computadora convencional

9 Componentes Fundamentales de una Computadora
Datos Operaciones Primitivas Control de Secuencia Acceso a Datos Gestión de Almacenamiento Entorno de Operación.

10 Datos Elementos de información integrados a la
computadora, manipulables directamente a través de operaciones primitivas de hardware.

11 Operaciones Primitivas
Una computadora debe contener un conjunto de operaciones primitivas interconstruidas, útiles para la manipulación de datos.

12 Control de Secuencia Una computadora debe proporcionar mecanismos para controlar el orden en el que se van a ejecutar las Operaciones primitivas.

13 Acceso a Datos Una computadora debe incorporar algún medio para
designar operandos y un mecanismo para recuperar operandos de un designador de operandos dado.

14 Gestión de Almacenamiento
Una computadora debe proveer mecanismos para la asignación de almacenamiento para programas.

15 Entorno de Operación El entorno de operación de una computadora
consiste ordinariamente en un conjunto de dispositivos periféricos de almacenamiento de entrada / salida

16 Estados de Computadoras
Representación dinámica de la computadora durante la ejecución de los programas.

17 Computadoras de Firmware
Es la computadora simulada por un microprograma que se ejecuta en una computadora microprogramable de hardware especial. Su lenguaje de máquina consiste en un conjunto de microinstrucciones de nivel extremadamente bajo.

18 Traductores y computadoras simuladas por Software
I. Traducción Preprocesador Compilador Ensamblador Cargador II. Simulación de software

19 Programa Fuente Preprocesador Programa Fuente estándar Compilador Código Objeto Ensamblador Código Máquina Cargador Ejecutable

20 Preprocesador Básicamente es un procesador de texto, toma como entrada una forma ampliada de un lenguaje fuente y su salida es una forma estándar del mismo lenguaje fuente.

21 Compilador Un compilador es un traductor cuyo lenguaje fuente
es un lenguaje de alto nivel y cuyo lenguaje objeto se aproxima al lenguaje máquina de una computadora real , ya sea que se trate de un lenguaje ensamblador o alguna variedad de lenguaje máquina.

22 Ensamblador Es un traductor cuyo lenguaje objeto es también alguna variedad de lenguaje máquina para una computadora real, pero cuyo lenguaje fuente, un lenguaje ensamblador, constituye en gran medida una representación simbólica del código de máquina objeto.

23 Cargador Es un traductor cuya entrada es un lenguaje objeto y la salida es un programa en lenguaje máquina relocalizable.

24 Máquina Virtual Son las estructuras de datos y algoritmos de un lenguaje que se emplean durante el tiempo de ejecución de un programa. Programa en C ADD #1, AX MOV BX, 300 Máquina virtual de C Oculta las operaciones y estructuras de bajo nivel

25 Relación entre Lenguaje y Máquina Virtual
Una máquina define un lenguaje Un lenguaje define una máquina Código en C if (x==n) { var1 = 1; var2 = 0; } else { var1 = 0; var2 = 1; } Máquina virtual de C

26 Jerarquía de Máquinas Virtuales
Una computadora con n niveles puede verse como n máquinas virtuales diferentes, cada una de las cuales tiene un lenguaje especial. Programador Nivel de lenguaje orientado a problemas Nivel de lenguaje ensamblador Nivel del Sistema Operativo Nivel del Sistema Convencional Nivel de Microprogramación Los RISC no cuentan con una descripción de microinstrucciones 0101 Nivel de Lógica Digital Nivel de Dispositivo Física Estado Sólido

27 Traductor para la Máquina Virtual
Se debe suministrar un traductor para traducir programas de usuario al lenguaje de máquina de la computadora virtual definida por el lenguaje. Programa en C traductor Computadora virtual de C traductor Computadora virtual de Ensamblador traductor ... Computadora de Hardware Real

28 Jerarquía de Máquinas Virtuales
Cada nivel representa una abstracción con objetos y operaciones diferentes Cada nivel esta construido sobre su predecesor Si se quiere escribir programas para la máquina virtual del nivel n, no se necesita conocer los interpretes ni los traductores de los niveles de abajo. Las computadoras están diseñadas como una serie de niveles Para diseñar nuevos niveles, se necesita conocer todos.

29 La Máquina Virtual de Java
¿Por qué están de moda los Bytecodes Habrás oído que con el lenguaje de programación Java, puedes "escribir una vez, ejecutar en cualquier parte". Esto significa que cuando se compila un programa, no se generan instrucciones para una plataforma específica. En su lugar, se generan bytecodes Java, que son instrucciones para la Máquina Virtual Java (Java VM). Si tu plataforma- sea Windows, UNIX, MacOS o un navegador de internet-- tiene la Java VM, podrá entender los bytecodes.

30 Enlaces y tiempo de enlace
Un enlace es la asignación de atributos a una celda de memoria para un elemento de programa. El momento en que el programa hace esta elección se conoce como el tiempo de enlace. nombre tipo dirección a entero a Tabla de Símbolos Memoria

31 Tipos de tiempos de enlace
Tiempo de ejecución El enlace de parámetros formales a reales A través de la asignación de valores a variables Tiempo de compilación Tipos para las variables Como se guardan las estructuras de datos y sus descriptores Tiempo de carga Fusionar los subprogramas en un ejecutable único enlazando las variables a direcciones reales de memoria

32 Tipos de tiempos de enlace
Tiempo de implantación del lenguaje Representación de números y operaciones aritméticas en la computadora de hardware subyacente Tiempo de definición del lenguaje Todas las posibles formas opcionales de enunciados, tipos de estructuras de datos, estructuras de programa. Por ejemplo, cuántos tipos de enlace tiene este sencillo enunciado de asignación escrito en un lenguaje L: X := X + 10

33 Tipos de tiempos de enlace
Cuando un enlace se efectúa durante el tiempo de ejecución, se dice que es de tipo dinámico. Ejemplos: Prolog, LISP y ML El enlace que ocurre durante el tiempo de compilación es de tipo estático. Ejemplos: C, Pascal y Fortran

34 Alcance de una variable
Es el conjunto de enunciados en el que el identificador de la variable es válido. Alcance estático: El alcance se determina de acuerdo al lugar donde el identificador es definido. Se le llama también alcance lexicográfico. El alcance estático se determina fácilmente utilizando diagramas de contorno.

35 Alcance estático Diagrama de Contorno x,l,m A l B C m,r D x,y,z

36 Alcance Dinámico El alcance se determina de acuerdo al lugar donde se hizo la última definición del identificador. Se puede decir que va siguiendo “la historia del programa”. El alcance dinámico se determina utilizando los registros de activación. Enlace dinámico Enlace estático Dir. de retorno Valor de retorno Variables Locales Parámetros Quien lo llamó

37 Diferencias entre Alcance Estático y Alcance Dinámico
Diagrama de Contorno a = 7 B P1 P2 a = 0 Imprime 7 Alcance estático

38 Diferencias entre Alcance Estático y Alcance Dinámico
Registros de Activación Enlace dinámico Enlace estático Dir. de retorno Valor de retorno Enlace dinámico Enlace estático Dir. de retorno Valor de retorno a = 0 P1 a = 7 P2 B Imprime 0 Alcance dinámico

39 Funciones Virtuales en C++
mini radio=1.0 plastico radio=24.0 luna radio=1e+024

40 Funciones Virtuales en C++
mini radio=1.0 plastico radio=24.0 luna radio=1e+024

41 Consecuencias del tiempo de enlace
Dependiendo del tipo de enlace un programa puede ser más eficiente o más flexible

42 Paradigmas de los lenguajes de programación
En ciencias de la computación un paradigma se puede definir como un conjunto de conceptos que permiten modelar el mundo. Un paradigma es usado para formular una solución de cómputo a un problema.

43 Paradigmas de los lenguajes de programación
Existen 5 modelos que describen los lenguajes de programación Lenguajes imperativos o de procedimientos Lenguajes aplicativos o funcionales Lenguajes con base en reglas o lógicos Lenguajes orientados a objetos Lenguajes concurrentes

44 1. Lenguajes imperativos o de procedimientos
Se caracterizan por ser claros, formales y elegantes. Son controlados por enunciados imperativos enunciado 1; enunciado 2; ... La ejecución de un enunciado hace que el interprete cambie el valor de una o mas localidades en memoria Ejemplos: Fortran, Pascal, C, Algol, Ada, PL/1

45 FORTRAN

46 2. Lenguajes aplicativos o funcionales
Se caracterizan por ser muy eficientes, expresivos y semanticamente elegantes. Los lenguajes aplicativos hacen uso de las funciones puras con composición funcional, recursión y expresiones condicionales Tienen 4 componentes: un conjunto de funciones primitivas un conjunto de formas funcionales la operación de aplicación un conjunto de objetos de datos Ejemplos: LISP, ML

47 LISP

48 3. Lenguajes con base en reglas o lógicos
Se caracterizan por ser eficaces y veloces Se ejecutan verificando una condición, que cuando se satisface ejecutan una acción condición 1 entonces acción 1 condicion 2 entonces accion 2 ... Ejemplo: Prolog

49 PROLOG Pam Liz Ann Tom Bob Jim Pat

50 4. Lenguajes orientados a objetos
Se caracterizan por trabajar con entes abstractos (objetos) que reflejan las propiedades y características de objetos o entes reales Las actividades a realizarse se tornan alrededor de los objetos mediante métodos (funciones) La comunicación con el objeto se da a través de mensajes Un aspecto fundamental es el concepto de herencia que se da cuando los objetos pertenecen a la misma clase Ejemplos: Simula, Smalltalk, Java

51 Java

52 Java

53 5. Lenguajes Concurrentes
Su principal objetivo es mejorar la velocidad de computo, compartir recursos y distribuir la carga de trabajo Diferentes tipos de arquitecturas: Redes de cobertura amplia Redes Locales Multiprocesadores (Clusters) Comunicación y cooperación entre aplicaciones a través de : Envío y recepción de mensajes Llamado a procedimiento remoto Comunicación de grupo Memoria Virtual Distribuida Ejemplos: PVM, CSP, Ada

54 Ada

55

56 Bibliografía Pratt, Terrence W.
Programming languages: design and implementation. 4th Ed. Prentice Hall. ISBN Bruce Eckel Aplique C++ / Madrid ; México : Osborne McGraw-Hill, c1991 ISBN

57 Fin


Descargar ppt "Aspectos de diseñó de los lenguajes de programación"

Presentaciones similares


Anuncios Google