Está en la página 1de 23

Lenguajes de Programación

Tema 1. Introducción y
conceptos generales

Pedro García López


pgarcia@etse.urv.es/
Copyright
• © University Rovira i Virgili

• Permission is granted to copy, distribute and/or


modify this document under the terms of the GNU
Free Documentation License, Version 1.1 or any
later version published by the Free Software
Foundation; provided its original author is
mentioned and the link to http://libre.act-europe.fr/
is kept at the bottom of every non-title slide. A
copy of the license is available at:
• http://www.fsf.org/licenses/fdl.html
LENGUAJES DE PROGRAMACIÓN

Objetivos
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.
LENGUAJES DE PROGRAMACIÓN

Programa
I - Introducción (5h). Conceptos y constructores. Descripciones
formales: sintaxis y semántica. Paradigmas del los lenguajes de
programación. Breve repaso histórico.

II - Paradigmas de los lenguatges de programación (35h).


Paradigma funcional: Haskell. Paradigma lógico: Prolog.
Paradigma imperativo: Ada. Programación orientada a objetos:
Smalltalk, Java.

III - Conceptos y constructores (10h). Valores.


Almacenamiento y variables. Enlaces (bindings). Abstracción.
Encapsulación. Sistema de tipos. Secuenciadores.
LENGUAJES DE PROGRAMACIÓN

Programa
IV - Descripción formal de los lenguajes de programación
(8h). Sintaxis. Semántica. Modelos de los lenguajes de
programación.

V - Conclusiones (2h).
LENGUAJES DE PROGRAMACIÓN
Bibliografía
•“Lenguaje de programación, principios y práctica”,
Segunda edición. Kenneth C Louden. Thomson 2004.
•"Programming Language Concepts and Paradigms
D. A.Watt Ed.Prentice-Hall, 1990
•"Programming Language Syntax and Semantics
D. A.Watt Ed.Prentice-Hall, 1990.
•"Programming in PROLOG”
W. F.Clocksin, C.S.Mellish Ed.Springer.
•“Introducción a la programación funcional con
Haskell. “ Richard Bird, Ed.Prentice-Hall, 1999.
Bibliografía
• Construcción de Software Orientado a
Objetos. Bertrand Meyer.
• Java, How to program. 6/E. Deitel & Deitel
Evaluación
• Examen (Febrero) 50 %
– 75% POO, 25% Funcional y Lógico
• Prácticas 50%
– Grupos unipersonales
– Lenguajes: Java, Python, Haskell, Prolog
• Se hace media en Febrero a partir de 4
• Tutorías:
– tutorias_etse@hotmail.com (MSN)
– pgarcia@etse.urv.es
– Despacho 238
Asignaturas relacionadas
• Programación 1
• Programación 2
• Estructuras de datos
• Lenguajes, Gramáticas y autómatas
Indice
1. ¿ Qué es un lenguaje de programación ?
2. Abstracciones
3. Paradigmas de computación
4. Definición del lenguaje
5. Traducción del lenguaje
6. Historia
7. Preguntas
1.1 ¿ Qué es un LP ?
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.

• Computación
– Máquina Turing, tesis de Church
• Legibilidad por parte de la máquina
• Legibilidad por parte del 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).
código
fuente

entrada intérprete salida


1.6 Traducción

código código
fuente objeto
compilación traducción código
adicional ejecutable

• Pseudointérpretes: intermedio entre interprete


y compilador: lenguajes intermedios
• Operaciones de un traductor: analizador
léxico (tokens), analizador sintáctico,
analizador semántico, preprocesador
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)
1.7 Historia

50
FORTRAN
60 AlGOL 60 COBOL LISP
Simula PL/I Prolog
70 Pascal
Smalltalk
C
80 Ada ML

90 Miranda
1.7 Historia
1950 1960 1970 1980 1990

PL/I(66) Eiffel (86)


Ada(95)

Ada(83)
Cobol(58)
ENSAMBLADOR

Pascal(70)
Java(96)
Algol(60)
C(72) C++(89)

Fortran(54)
Simula(67) Smalltalk(80)

Basic(66)
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

También podría gustarte