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

Slides:



Advertisements
Presentaciones similares
DISEÑO DE TRANSFERENCIA ENTRE REGISTROS
Advertisements

UNIVERSIDAD DEL VALLE DE MEXICO CAMPUS CHAPULTEPEC
¿Qué es Sofware? Son el conjunto de instrucciones que dirigen las actividades del Hardware Consiste en programas, módulos de soporte y archivos de datos,
Intoduccion a la Arquitectura y Organizaciòn del Computador
UNIX COMP 240.
ASPECTOS DEL DISEÑO DE SD
Lenguajes de programación
Computación PROGRAMACIÓN.
INSTITUTO TECNOLOGICO DE MINATITLAN
Lenguajes de programación
Introducción a la Programación
INTRODUCCION A LOS ALGORITMOS (Conceptos previos)
Unidad 1. Introducción al proceso de compilación.
Historia La base del C proviene del BCPL (lógica programable en codigo binario), escrito por Martin Richards, y del B escrito por Ken Thompson en 1970.
GENERACIONES DE LENGUAJES DE PROGRAMACIÓN
UNIVERSIDAD NACIONAL AUTÓNOMA DE MÉXICO
Programación 1 Introducción
Introducción a la programación
Lenguajes de programación
METODOLOGIA DE LA PROGRAMACION
Introducción al Software
Conceptos Fundamentales
ALGORITMOS Y ESTRUCTURAS DE DATOS
Introducción. Agenda Clase 1 ● Preámbulo histórico. ● Razones de la Diversidad de Lenguajes. ● Razones del Éxito de un Lenguaje. ● Clasificación ● Motivación.
UNIDAD I Conceptos Básicos.
ALGORITMOS, LENGUAJES Y TECNICAS DE PROGRAMACION
Elemento Lógico (Software)
Paradigmas de Programación
M.C. Meliza Contreras González
Cobol C Pascal Fortran 1. INTRODUCCIÓN SmallTalk Java C++
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Tema 1 Entorno de la programación. Conceptos elementales Algoritmo  Secuencia ordenada de pasos exentos de ambigüedad que conduce a la resolución de.
Inteligencia artificial
 Fue en el año 1945 cuando el matemático Jhon Von Neumann, fascinado por las posibilidades del ENIAC, demostró que una computadora podía tener una estructura.
Programación I MC José Andrés Vázquez Flores
FUNDAMENTOS DE PROGRAMACIÓN ISC. GABRIEL ZEPEDA MARTÍNEZ EST. ABRAHAM F. MACHUCA VAZQUEZ.
MÁQUINAS MULTINIVEL NIVEL 5 Lenguajes de alto nivel
Introducción a los Sistemas Operativos
PROGRAMACIÓNPROGRAMACIÓN FCC-BUAP. 1. INTRODUCCIÓN A LA PROGRAMACIÓN.
LENGUAJES DE PROGRAMACIÓN
Programación de Sistemas
Metodología para la construcción de programas
Introducción a la tecnología Realizado por: Miguel Ángel Arias.
Prof. Gabriel Matonte Programación I Prof. Gabriel Matonte
 Un LENGUAJE DE PROGRAMACION es un idioma artificial diseñado para expresar computaciones que pueden ser llevadas al cabo por maquinas como las computadoras.
Alumno: Nelson Domínguez, C.I.: Materia: Intr. A los Lenguajes de Programación Sección: SAIA Profesora: Olgamar Garrido CABUDARE, NOVIEMBRE 2010.
Tema 6. Introducción a la programación
Unidad 1. Introducción a los Compiladores.
Facultad de Ingeniería
Lenguajes de Programación
PROGRAMAS INFORMATICOS
Estructura de los Sistemas Operativos
LE, EI, Profesor Ramón Castro Liceaga UNIVERSIDAD LATINA (UNILA) TRADUCTORES Y ANALIZADOR LEXICOGRÁFICO.
Metodología de la programación
“PARADIGMAS Y LENGUAJES DE PROGRAMACION”
Prof. Flor Narciso Departamento de Computación
Elaboración de algoritmos usando lógica de programación
Lenguaje programación
Son los atributos de un sistema que son visibles para un programador, es decir aquellos atributos que impactan directamente en la ejecución lógica de un.
Tipos de Lenguajes Ensamblador.
Es un tipo especial de software que nos permite *Crear *Desarrollar *Programar otras aplicaciones. Haciendo uso de sus conocimientos lógicos y lenguajes.
UNIDAD I INTRODUCCION A LOS S.O.
Programación Java y Desarrollo de Aplicaciones Modulo 1 Arquitectura de ordenadores Tema 3 Programas.
Programación de Sistemas
 Panorama General Fundamentos de Programación M.I. Jaime Alfonso Reyes Cortés.
HISTORIA DE LOS LENGUJAES DE PROGRAMACIÓN HARDWARE: Computadoras primivas en programación MÉTODOS: Subprogramas Estructuras de datos Posibilidad.
Fundamentos de Programación Unidad I Conceptos Básicos.
SOFTWARE DE COMPUTADORAS
Presentación De UML Lenguaje estándar para escribir planos de software Se usa para visualizar, especificar, construir y documentar los artefactos de un.
Omar Herrera Caamal Rigoberto Lizárraga Luis Cetina Luna.
Transcripción de la presentación:

Aspectos de diseñó de los lenguajes de programación (Tema 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

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?

¿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.

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.

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.

Tipos de Arquitecturas Arquitectura Tradicional Von Newmann Arquitecturas Alternativas Multiprocesadores

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

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

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

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

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

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.

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

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

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

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.

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

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

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.

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.

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.

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

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 010111011 Oculta las operaciones y estructuras de bajo nivel

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

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

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

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.

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.

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

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

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

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

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.

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

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ó

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

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

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

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

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

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.

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

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

FORTRAN

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

LISP

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

PROLOG Pam Liz Ann Tom Bob Jim Pat

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

Java

Java

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

Ada

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

Fin