Cobol C Pascal Fortran 1. INTRODUCCIÓN SmallTalk Java C++

1 Cobol C Pascal Fortran 1. INTRODUCCIÓN SmallTalk Java C...
Author: Plácido Del Toro
0 downloads 0 Views

1 Cobol C Pascal Fortran 1. INTRODUCCIÓN SmallTalk Java C++

2 Evolución de Conceptos

3 Evolución de conceptosABSTRACCIÓN DE DATOS Tipos de datos Elementales (HW) Estructurados (LP) Abstractos (U)

4 Tipos de datos: ElementalesEnteros Reales Booleanos Caracteres Nivel de máquina Primitivos Proporcionados por el Hw

5 Tipos de datos: EstructuradosArreglos Estructuras (registros) Nivel de lenguaje de programación (LP) Con base en tipos elementales Se utilizan constructores de tipo que  al LP

6 Tipos de datos: AbstractosStacks Colas Heaps, etc. Nivel de usuario Con base en tipos elementales y estructurados Permiten extender un LP

7 Evolución de conceptosABSTRACCIÓN DE CONTROL Lógica del código Sentencias Unidades de Programas

8 Sentencias Constructores de código que facilitan la programación estructurada Asignación Decisión Iteración

9 Unidades de programas Permiten programación modularGeneralizan la noción de operador Permiten encapsular parte de un algoritmo Tienen una única definición Tienen múltiples activaciones

10 Clasificación de los Lenguajes

11 Clasificación Lenguajes Naturales De Programación De MáquinaSimbólicos Bajo nivel Alto Nivel Imperativos Funcionales Lógicos OO

12 Niveles de abstracciónL ENS LM LAN ForTran COBOL Pascal C C++ Delphi Mayor grado de abstracción

13 Lenguajes ImperativosLos primeros LP fueron creados en los 50's: Fortran, COBOL, Pascal, C, Ada Se denominan también, procedurales Tienen como característica cambiar el estado de las variables por asignación Están influenciados por la máquina en la que deben "correr": Máquina de Von Neuman CPU RAM

14 Lenguajes FuncionalesLos primeros aparecieron en los 60's: Lisp, Apl, Forth Aplican funciones, ya sea, recursivamente o por composición Se caracterizan por una programación basada en expresiones (sin asignaciones) Los usuarios NO deben preocuparse de manejar el almacenamiento de datos

15 Lenguajes FuncionalesEjemplo en Scheme: Función f(x) = (x + 1)2 + (2x)2 (define cuad x) (* x x)) (define (sum x) (+ x x)) (define (mult x y) (* x y)) (define (f x) (sum (cuad (sum (x 1)) (cuad (mult (2 x)))) (f 2) 25

16 Lenguajes Lógicos Aparecieron en los 70's : PROLOGFueron pensados principalmente para aplicaciones de inteligencia artificial (IA) Revisan la presencia de cierta condición, la cual, si es verdadera se ejecuta una acción Establecen relaciones de inferencia entre clases de objetos

17 Lenguajes Lógicos Ejemplo en Prolog: El cero es un número naturalSi X es un número natural, entonces s(X) (sucesor de X) también es un número natural natural(0). natural(s(X)) :- natural(X). 0 + X = X Si X + Y = Z entonces s(X) + Y = s(Z) suma(0, X, X). suma(s(X), Y, s(Z)) :- suma(X, Y, Z).

18 Lenguajes OO Algunos de ellos son Smalltalk, Eiffel, C++, JavaRepresentan un modelo de interacción entre objetos, cada uno de los cuales actúa en función un estado y un comportamiento Se construyen objetos complejos a partir de objetos simples, bajo el principio de la reutilización de código

19 Sintaxis

20 Sintaxis Conjunto de reglas que determinan si las sentencias de un programa están bien formadas o no Su objetivo es proveer una notación que permita la comunicación entre el programador y el procesador del lenguaje

21 Criterios SintácticosLegibilidad: COBOL: Write sueldo after advancing 2 lines Facilidad de escritura: APL: AA* Invierte una matriz Facilidad de traducción: El compilador debiera generar poco código

22 Criterios SintácticosAusencia de ambigüedad: Evitar que una estructura tenga más de un significado Por ejemplo, en Fortran M(i) puede significar: un elemento del arreglo M, ó una llamada a la función M con parámetro i

23 Elementos SintácticosSet de Caracteres Identificadores Símbolos para operadores Palabras claves y reservadas Comentarios Abreviaciones Espacios

24 Elementos SintácticosDelimitadores Formatos Fijo y Libre Expresiones Sentencias Estructura de Unidades de programa

25 Gramáticas

26 Gramática Representa la definición formal de la sintaxis de un lenguaje Consta de un conjunto de reglas que especifican las NORMAS de escritura para formar estructuras en un lenguaje

27 Gramática formal destinada a la descripción de un lenguajeMetalenguaje Gramática formal destinada a la descripción de un lenguaje Existen tres metalenguajes de uso común BNF (Backus-Naur-Form) Diagramas sintácticos CBL (COBOL-Like) donde BNF es el referente base

28 BNF Notación desarrollada por los especialistas Backus y Naur para definir lenguaje Algol 60 Metasímbolos: < >: indica símbolo NO-TERMINAL o meta variable ::= : "Se define como" |: "o" { }n: Repetición. Mínimo n veces identificador: Palabra reservada, constante o símbolo TERMINAL

29 BNF Número real ::= . ::= {}0 ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Identificador ::= { |}0 ::= A | B | C | … | Z | a | b | c | … | z

30 BNF Sentencia if ::= if ( ) | if ( ) else Sentencia while ::= while ( ) Sentencia do-while ::= do ( <> )

31 BNF Recursiva Número entero ::= | ::= 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 Número real ::= . ::= |

32 BNF Recursiva ::= | ::= | ::= | Multilista: (1 2 (3 4 (5) 6) 7 8) ::= () | () ::= | ::= <átomo> |

33 BNF Recursiva Sentencia ::= | ::= | | | ::= {} ::= ; | ;

34 BNF Recursiva x a*b  c/d a * b Expresión aritméticatérmino término a*b  c/d a * b factor ::= | | ::= | ::= | | () ::= + |  ::= * | /

35 BNF Recursiva (a +b) *c * + Expresión Término Factor TérminoIdentificador Término + Expresión Factor Término c Identificador Factor a Identificador b

36 Diagramas SintácticosConstituyen un método de descripción de lenguajes, equivalente a la BNF, originalmente propuesto por N. Wirth. para definir sintáxis de Pascal Equivalencias entre BNF y Diagramas sintácticos:

37 Diagramas Sintácticos ::= | ··· | Cada ocurrencia de un símbolo terminal corresponde al diagrama Vn V1 V2 Cada ocurrencia de un símbolo no terminal corresponde al diagrama X

38 Diagramas SintácticosUna producción de la forma: ::= {}0 corresponde al siguiente diagrama Una producción de la forma: ::= {}0 corresponde al siguiente diagrama (mientras) (repetir) X X

39 Diagramas SintácticosIdentificador Letra A B z _ Letra Dígito Dígito 1 9

40 Diagramas SintácticosNúmero entero Dígito Número real Dígito

41 CBL (COBOL – Like) Constituye una extensión de la BNF destinada a la descripción sintáctica del lenguaje Cobol. Elementos opcionales se denotan entre paréntesis cuadrados  x  Elementos alternativos se listan verticalmente entre paréntesis llave { x } Elementos alternativos opcionales se listan verticalmente entre paréntesis cuadrados   La repetición de los elementos se indica mediante tres puntos a continuación de una ocurrencia del elemento  x …

42 CBL (COBOL – Like) ::= [ + ] ... - ::= IS NOT NUMERIC ALPHABETIC ::=

43 Semántica

44 Semántica Sintaxis  ¡Cómo se expresa un concepto!Semántica  ¡Qué significa ese concepto! Se define como un conjunto de reglas que describen el comportamiento de un lenguaje en tiempo de ejecución ¿Qué ocurre con la ejecución de un programa ? ¿Qué sentencias se ejecutarán? ¿Qué valores se asignan a determinadas variables? ¿Qué salidas se obtienen?

45 Semántica Una expresión sintáctica, mediante BNF, como puede tener dos interpretaciones semánticas Por ejemplo, 09/04/2002 se entiende como 9 de Abril de 2002 en Chile 4 de Septiembre de 2002 en EEUU ::= //

46 Semántica Métodos formales de especificación semántica:Operacional : Máquina teórica Axiomático : Cálculo del predicados (PROLOG) Denotacional : Teoría de las funciones (Lisp) La especificación de la semántica de una sentencia se hará mediante la notación usada por los diccionarios enciclopédicos

47 Procesadores de Lenguajes

48 Procesador DEFINICIÓNUn procesador es una máquina capaz de ejecutar acciones expresadas en algún lenguaje concreto Actualmente, el único lenguaje concreto que existe es el lenguaje de máquina

49 Traductor Preprocesador Compilador Ensamblador Ligador CargadorEs un decodificador que acepta programas escritos en algún lenguaje fuente y genera programas, funcionalmente equivalentes, en algún lenguaje objeto Programa en Lenguaje Fuente Traductor Programa en Lenguaje Objeto Preprocesador Compilador Ensamblador Ligador Cargador

50 Programa en extensión de LANPre-procesador Es un traductor cuyo lenguaje fuente es una extensión de un lenguaje de alto nivel lenguaje objeto es el estándar del lenguaje de alto nivel Por ejemplo, C y C++ Programa en extensión de LAN Preprocesador Programa en LAN estándar Pre-procesador Compilador Ensamblador Cargador C++ C Leng. Ensam. Código Reubicable Ejecutable

51 Compilador Es un traductor cuyolenguaje fuente es un lenguaje de alto nivel lenguaje objeto es un lenguaje intermedio orientado a la máquina código objeto Programa en Lenguaje de Alto Nivel Compilador Programa en L orientado a la Máquina Análisis lexicográfico Análisis sintáctico Generación de código Optimización de código

52 Compilador Análisis lexicográficoReconocimiento y clasificación de tokens básicos: Constantes Identificadores Palabras reservadas, etc Construcción de la tabla de símbolos Lista de todos los símbolos y sus atributos usados en un programa (variables, etiquetas, rutinas, etc)

53 Compilador Análisis sintáctico + a + b*c *Generación de un árbol de reconocimiento usando una representación interna de la gramática del lenguaje Expresión Término + Factor Identificador a * b c a + b*c

54 Enlace entre la sintaxis y la semántica de un lenguajeCompilador Generación de código Enlace entre la sintaxis y la semántica de un lenguaje Convierte el árbol de reconocimiento en una lista equivalente de instrucciones en lenguaje de máquina

55 Compilador Optimización de códigoRefinamiento del código generado para mejorar el rendimiento en tiempo de ejecución Ubicación de Construcciones semánticas redundantes Uso ineficiente de registros Etc.

56 Ensamblador Es un traductor cuyoLenguaje fuente es un lenguaje ensamblador (representación simbólica del lenguaje de máquina) Lenguaje objeto es el lenguaje de máquina del computador Programa en Leng. Ensam. Ensamblador Programa en LM

57 Programa en lenguaje de máquinaLigador Es un traductor cuyo Lenguaje fuente es el lenguaje de máquina Integra, en un único módulo de carga, el código compilado de la aplicación con el código compilado preexistente correspondiente a las librerías utilizadas Lenguaje objeto es el lenguaje máquina, pero en la versión denominada código reubicable Programa en lenguaje de máquina Linker Programa en leng. de máquina código reubicable

58 Programa como código reubicableCargador Es un traductor cuyo Lenguaje fuente es el código reubicable (lenguaje de máquina con direcciones relativas) Carga el programa en la RAM, actualizando las tablas de datos, es decir, transformado direcciones relativa en absolutas Lenguaje objeto es el código real (lenguaje de máquina con direcciones absolutas) Programa Ejecutable Programa como código reubicable Loader Programa como código real

59 Intérprete Es un procesador cuyo lenguaje concreto es un lenguaje de alto nivel Hoy, ningún computador es capaz de ejecutar código distinto al de máquina Se debe simular mediante software la existencia de un computador cuyo lenguaje de máquina es un lenguaje de alto nivel (máquina virtual)

60 Compilador-IntérpreteDiferencias Compilador Sólo traduce Traduce sólo una vez cada sentencia Acepta las instrucciones de acuerdo a su secuencialidad física Intérprete Decodifica y ejecuta Puede procesar varias veces algunas e ignorar completamente otras instrucciones Acepta las instrucciones según su secuencialidad lógica