LENGUAJES DE PROGRAMACIÓN
(Gp:) Presentación de los diferentes paradigmas de los lenguajes de programación. Así como de sus carácterísticas fundamentales. Introducción a un lenguaje típico de cada paradigma. Análisis de los conceptos clave sobre los que se construyen los diferentes lenguajes. Introducción a las formas de descripción formal de los lenguajes de programación.
(Gp:) Objetivos
Bibliografía
Construcción de Software Orientado a Objetos. Bertrand Meyer.
Java, How to program. 6/E. Deitel & Deitel
Indice
¿ Qué es un lenguaje de programación ?
Abstracciones
Paradigmas de computación
Definición del lenguaje
Traducción del lenguaje
Historia
Preguntas
1.1 ¿ Qué es un LP ?
Computación
Máquina Turing, tesis de Church
Legibilidad por parte de la máquina
Legibilidad por parte del ser humano
Definición: Un lenguaje de programación es un sistema notacional para describir computaciones de una forma legible tanto para la máquina como para el ser humano.
1.2 Características
Eficiencia
Expresividad
Capacidad de mantenimiento
Legibilidad
Confiabilidad
Seguridad
Simplicidad
Productividad
1.3 Abstracciones
Clases: Datos y control
Niveles: básicas, estructuradas y unitarias
Abstracciones de datos:
Básicas: tipos básicos (enteros, reales, …)
Estructuradas: tipos estructurados (arreglos, registros)
Unitarias: Tipos abstractos de datos (TDAs), paquetes, módulos, clases, componentes
1.3 Abstracciones
Abstracciones de control
Básicas: asignación, goto
Estructuradas: condicionales e iteradores
Unitarias: paquetes, módulos, hilos y tareas.
Un lenguaje de programación es completo en Turing siempre que tenga variables enteras y aritméticas, y que ejecute enunciados en forma secuencial, incluyendo enunciados de asignación, selección e iteración.
1.4 Paradigmas de programación
Imperativo
modelo de Von Neuman, cuello de botella de Von Neuman
Orientado a Objetos
TDAs, encapsulación, modularidad, reutilización
Funcional
noción abstracta de función, cálculo lambda, recursividad, listas
Lógico
Lógica simbólica, programación declarativa
1.5 Definición del lenguaje
Sintaxis (estructura)
Gramáticas libres de contexto, estructura léxica, tokens
Semántica (significado)
Lenguaje natural
Semántica operacional
Semántica denotacional
1.6 Traducción del lenguaje
Traductor es un programa que acepta otros programas escritos en un lenguaje y:
los ejecuta directamente (interprete)
los transforma en una forma adecuada para su ejecución (compilador).
entrada
código fuente
salida
intérprete
1.6 Traducción
Pseudointérpretes: intermedio entre interprete y compilador: lenguajes intermedios
Operaciones de un traductor: analizador léxico (tokens), analizador sintáctico, analizador semántico, preprocesador
código fuente
traducción
adicional
compilación
código objeto
código ejecutable
1.6 Traducción
Tiempo de compilación y tiempo de ejecución
Propiedades estáticas: tiempo de compilación
Propiedades dinámicas: tiempo de ejecución
Recuperación de errores (compilación y ejecución)
Eficiencia y optimización (compilación o ejecución)
(Gp:) 1.7 Historia
FORTRAN
AlGOL 60 COBOL
50
60
70
80
90
Simula
Smalltalk
Pascal
Ada
C
PL/I
LISP
ML
Miranda
Prolog
1.7 Historia
(Gp:) 1950
(Gp:) 1960
(Gp:) 1970
(Gp:) 1980
(Gp:) 1990
(Gp:) Fortran(54)
(Gp:) PL/I(66)
(Gp:) Ada(95)
(Gp:) Java(96)
(Gp:) Basic(66)
(Gp:) C(72)
(Gp:) Pascal(70)
(Gp:) Cobol(58)
(Gp:) Algol(60)
(Gp:) Simula(67)
(Gp:) Smalltalk(80)
(Gp:) C++(89)
ENSAMBLADOR
(Gp:) Eiffel (86)
(Gp:) Ada(83)
1.8 Preguntas
Clasifica los siguientes lenguajes (C, Ada, C++, Java, LISP, Prolog, Visual Basic, JavaScript, C#, PHP) en base a :
Paradigma
tipos de traductor (compilador, interprete, pseudointérprete)
Propiedades estáticas y dinámicas
Eficiencia
Extraed conclusiones de esta clasificación
1.8 Preguntas
Evalua los lenguajes del punto anterior respecto a las características del punto 1.2
Extrae conclusiones de las dos clasificaciones