Tema 01 - Paradigmas
Tema 01 - Paradigmas
Tema 01 - Paradigmas
Programación Avanzada
2
Paradigmas de Programación
¿Por qué?
En este punto:
Alcanzado un nivel de programación básico
Varios lenguajes conocidos (Python, Java, C++)
Hay que preguntarse:
– ¿Sólo soy un programador o soy un ingeniero?
– ¿Cómo de lejos estoy de ser un programador experimentado?
3
Índice
1.Concepto de paradigma
2.Niveles de cumplimiento
3.Características de los paradigmas
4.Algunos paradigmas
5.Ejemplos de programas
6.Ejercicios
4
Concepto de paradigma
http://en.wikipedia.org/wiki/Programming_paradigm
5
Concepto de paradigma: algunos ejemplos
Programación concurrente
– Programación distribuida (subtipo)
• Programación cliente/servidor (sub-subtipo)
Programación imperativa
Programación declarativa
– Programación funcional (subtipo)
– Programación lógica (subtipo)
Programación estructurada
Programación orientada a módulos
Programación orientada a objetos
Programación orientada a procedimientos
6
Concepto de paradigma: utilidad
Establecer clasificaciones
Ayuda a comprender la evolución, relaciones y características de los lenguajes de
programación.
Describir lenguajes
En base a los paradigmas que cumplen.
7
Concepto de paradigma: utilidad
Fase donde se
usan los PdP
8
Niveles de cumplimiento de un paradigma
9
Niveles de cumplimiento: ejemplos
C, y la programación estructurada
Permitido: "return“ y "break“ permiten romper los bloques de código y funciones, en
contra de la programación estructurada.
10
Características de los PdP: relaciones
Paradigmas
Super-conjuntos
Paradigmas
Lenguajes
11
Super-conjuntos: según clasificación (tipo 1)
1. Paradigmas generales
Establecen una partición sobre el total de los lenguajes de programación
No cumplir el paradigma tiene relevancia
Ejemplo: estructurado / no estructurado
2. Paradigmas complementarios
Pares de paradigmas con la particularidad de que no cumplir uno implica cumplir el
otro
Ejemplo: paradigma imperativo y paradigma declarativo
12
Super-conjuntos: según clasificación (tipo 1)
3. Paradigmas específicos
Establecen una partición que afecta a todos los lenguajes
Cada lenguaje, cumple o no el paradigma
No cumplir el paradigma no tendrá relevancia para la caracterización de un
lenguaje
Ejemplo: programación en tiempo real
13
Super-conjuntos: según clasificación (tipo 2)
14
Super-conjuntos: según clasificación (tipo 2)
Paradigmas de Objetivo
Establecen el significado de las sentencias (contenido del código)
En su traducción a código máquina
Y en su representación de conceptos modelados en la fase de diseño
Más ejemplos:
Programación Concurrente
Programación Distribuida
Programación Imperativa
15
Super-conjuntos: según clasificación (tipo 2)
Paradigmas de Estructura
Establecen recomendaciones de estructura de programas para evitar
problemas inherentes u obtener ventajas (organización del código)
16
Super-conjuntos: según la evolución
Aspectos
17
Super-conjuntos: según relación con el HW
18
Algunos paradigmas
Programación declarativa
Programación concurrente
19
Algunos paradigmas: imperativo
Sentencias de:
Asignación: intervienen variables, expresiones, valores literales, funciones
predefinidas, operadores
Control de flujo: saltos, bifurcaciones, iteraciones, invocaciones a
subrutinas, tratamiento de excepciones
20
Algunos paradigmas: imperativo
Ejemplos:
Fortran (1957), Algol (1960), Pascal (1971), C (1972), C++ (1985), o Java (1995)
21
Algunos paradigmas: declarativo
22
Algunos paradigmas: funcional
Ventajas:
Gran expresividad
Extensibilidad
Facilidad de corrección
Ausencia de efectos laterales
Inconvenientes:
Ineficiente (primeras implementaciones)
Complicada (recursividad)
Ejemplos:
LISP (1959), APL (1962), ISWIM (1966), SCHEME (1975), FP (1977), HOPE
(1980), CAML(1985), MIRANDA (1985), ML (1986), HASKELL (1988), Scala
(2004)
23
Algunos paradigmas: lógico
24
Algunos paradigmas: concurrente
25
Algunos paradigmas: conc. memoria común
26
Algunos paradigmas: conc. distribuido
27
Algunos paradigmas: orientado a objetos
28
Algunos paradigmas: orientado a objetos
Ventajas:
Encapsulación => alto grado de reutilización del código (se incrementa
con la herencia)
Representación más directa del mundo real en el código (abstracción)
Se adapta mejor a la informática distribuida y a los modelos cliente/servidor
Se pueden crear desarrollos más flexibles y el proceso es más rápido
Ejemplos:
Simula (1967), Smalltalk (1980), Eiffel (1988), muchos de los actuales (C++,
Objetive C, CLOS, Ada o Java)
29
Algunos paradigmas: de tiempo real
Características:
Control permanente y simultáneo sobre la ejecución
Manejo de interrupciones para cumplir las restricciones
Necesitan acceder directamente al HW de E/S
30
Ejemplos de programas
Modula-2 (1978)
31
Ejemplos de programas
Python (1991)
32
Ejemplos de programas
VERSION 2.00
Begin Form FontDialog
Sub lstMatchFonts_Click ()
AutoRedraw = -1 'True
FntNum = lstMatchFonts.ListIndex
Caption = "Select Font"
ClipControls = 0 'False lblFontDemo.FontName =
... lstMatchFonts.List(FntNum)
End End Sub
...
33
Ejercicios
34
Ejercicios
35