PDF de programación - Tema 1 - Paradigmas de programación - Programación Avanzada

Imágen de pdf Tema 1 - Paradigmas de programación - Programación Avanzada

Tema 1 - Paradigmas de programación - Programación Avanzadagráfica de visualizaciones

Publicado el 12 de Diciembre del 2018
1.309 visualizaciones desde el 12 de Diciembre del 2018
347,5 KB
37 paginas
Creado hace 11a (04/02/2013)
Asignatura 780014

Programación Avanzada

TEMA 1 – PARADIGMAS DE PROGRAMACIÓN

Paradigmas de Programación

Como primera idea

 Un paradigma de programación (PdP) es una

forma de pensar a la hora de programar

 Por ejemplo, nuevos lenguajes han inducido nuevos PdP

 Fortran (1957 - imperativo)
 Lisp (1959 - funcional)
 Prolog (1972 - lógico)
 Simula (1979 - orientado a objetos)

PdP en el ciclo de desarrollo software

Paradigmas de Programación

 Programación concurrente.
 Programación declarativa.
 Programación distribuida.
 Programación de tiempo real.
 Programación estructurada.
 Programación funcional.
 Programación imperativa.
 Programación lógica.
 Programación modular.
 Programación orientada a módulos.
 Programación orientada a objetos.
 Programación orientada a procedimientos.
 Programación cliente/servidor.

UTILIDAD Y CUMPLIMIENTO DE LOS PDP

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

Establecer características de un nuevo

lenguaje
 Planificar sus características para que se ajuste a lo deseado

Niveles de cumplimiento de un paradigma

Paradigma no permitido

 Un PdP no puede ser utilizado o conseguido con este lenguaje porque

las construcciones del mismo no lo permiten.

Paradigma permitido

 Es posible programar siguiendo el paradigma pero no es sencillo o

cómodo porque el lenguaje no favorece su utilización.

Paradigma soportado

 Cuando es la recomendación más común para el lenguaje, cuando la
programación habitual lo sigue e incluso resulta complejo y difícil no
cumplir el paradigma.

Paradigma obligatorio

 Será imposible no seguir el paradigma porque no hay construcciones

en el lenguaje que permitan salir de la norma que define el
paradigma.

Niveles de cumplimiento de un paradigma

Pascal, y la programación estructurada.

 Soporta la programación estructurada aunque es posible utilizar la

orden "goto" y romper con este PdP.

Java, y la programación orientada a objetos

 No es posible realizar ni un solo programa que no defina una clase y

use objetos.

C, y la programación estructurada

 "return“ y "break“ permiten romper los bloques de código y

funciones en contra de la programación estructurada.

Fortran, y la programación orientada a objetos

 Paradigma no permitido ya que no existe ninguna forma de crear

objetos

Ejemplos de niveles de cumplimiento

Esta tabla presenta ejemplos de posibles niveles de

cumplimiento de algunos lenguajes y paradigmas

Relaciones entre PDP

Se pueden observar las relaciones entre los PDP

desde distintas perspectivas según se atienda a los
distintos matices de cada paradigma

 Perspectiva de clasificación
 Perspectiva evolutiva
 Perspectiva de relación con el hardware.

Perspectiva de clasificación

Podemos agrupar paradigmas según la

clasificación que crean sobre los lenguajes

 Paradigmas generales

 Establecen una partición sobre el total de los lenguajes de

programación

 Paradigmas complementarios

 Pares de paradigmas con la particularidad de que no cumplir uno

implica cumplir el otro
 Un ejemplo muy claro de este tipo de paradigmas son el

paradigma imperativo y el declarativo.

Perspectiva de clasificación

Paradigmas específicos

 Establecen una partición que afecta a todos los lenguajes

 Cada lenguaje, cumple o no el paradigma
 En este caso, el hecho de no cumplir el paradigma no tendrá

relevancia ninguna para la caracterización de un lenguaje.
 Un ejemplo de este tipo de paradigmas es la programación en

tiempo real

Perspectiva de clasificación

Clasificaciones de lenguajes solapadas

Perspectiva de clasificación

La clasificación también puede ser según el tipo de

restricciones que el paradigma establece en los
lenguajes que lo cumplen: dos categorías:

 Paradigmas orientados a establecer la misión del lenguaje o

“Paradigmas de Objetivo”

 Paradigmas orientados a establecer la forma que deberán

tener los programas de un lenguaje o “Paradigmas de
Estructura”

Paradigmas de objetivo

Establecen el significado de las sentencias

 En su traducción a código máquina
 Y en su representación de conceptos modelados en la fase de

diseño.

 Un ejemplo de este tipo de paradigmas:

 P. de tiempo real, que describe capacidades que no forman parte

de ningún otro paradigma

 Más ejemplos:

 Programación Concurrente, Declarativa, Distribuida, Funcional,

Imperativa, Lógica.

Paradigmas de estructura

Establecen recomendaciones de estructura de
programas para evitar problemas inherentes u
obtener ventajas
 Ejemplos de estos paradigmas:

 Programación Estructurada.
 Programación Modular.
 Programación Orientada a Módulos.
 Programación Orientada a Objetos.
 Programación Orientada a Procedimientos.

Perspectiva evolutiva

La evolución de los paradigmas es la evolución de la

programación.

 Paradigma imperativo -> declarativo contrapuesto

 Paradigmas sin organización -> paradigma estructurado ->

orientado a objetos -> orientado a aspectos

 Paradigma secuencial -> paradigma concurrente ->

programación distribuida -> cliente/servidor

Perspectiva de relación con el hardware

los lenguajes de programación son siempre

abstracciones del HW

clasificar los paradigmas en función de su cercanía

al HW

imperativo VS declarativo

Descripción de algunos PdP

Veremos los más importantes:

 Programación imperativa
 Programación declarativa
 Programación concurrente
 Programación orientada a objetos
 Programación de tiempo real

Programación imperativa

Lenguajes orientados a la acción (máquina de

Von Neumann)

describen “cómo” obtener los resultados
Sentencias de asignación y sentencias de control

de flujo

Ejemplos:

 Fortran (1957), Algol (1960), Pascal (1971), C (1972), C++

(1985), o Java (1995)

Programación imperativa

Fortran

Programación declarativa

Los programas describen “qué” se desea realizar con

la memoria, pero no el manejo directo sobre ella
 Se pueden dividir en dos: funcionales y lógicos

 P.Funcional: se modelan mediante funciones y expresiones. No

hay procedimientos explícitos. Uso extensivo de la recursión.

 P.Lógica: hechos y relaciones como medio para representar las

tareas que se quieren realizar.

Programación funcional

Ventajas:

 Gran expresividad
 Extensibilidad
 Facilidad de corrección
 Ausencia de efectos laterales

Inconvenientes:

 Ineficiente (primeras implementaciones)
 Complicada
Ejemplos:

 LISP (1959), APL (1962), ISWIM (1966), SCHEME (1975), FP

(1977), HOPE (1980), MIRANDA (1985), ML (1986),
HASKELL (1988), CAML(), HUGS()

Programación lógica

Basada en el razonamiento lógico
Sistemas que tratan responder a las demandas del

usuario

Manejan relaciones entre datos (hechos) en vez de

funciones

Ejemplo:

 PROLOG (1972)

Programación concurrente

Capaces de realizar simultáneamente varias tareas
Algoritmos que permitan dividir el trabajo en tareas
Uso de técnicas, lenguajes, librerías y hardware

específico, para conseguir el paralelismo

Dos enfoques distintos de paralelismo:

 Programación concurrente de memoria compartida
 Programación concurrente distribuida.

Programación de memoria común

Múltiples tareas de ejecución simultánea sobre una

única máquina con una única memoria.
 El comportamiento es independiente del número de

procesadores.

 El rendimiento aumenta con el número de procesadores.

 La concurrencia plantea problemas nuevos

Programación distribuida

Se supera la barrera de la máquina única y la

memoria única.

Los procesos intercambian información a través de

una red de comunicaciones.

El paradigma más utilizado es el que implementa el

modelo Cliente-Servidor

Programación orientada a objetos

Evolución del Paradigma Estructurado
 El Objeto como entidad central del paradigma

 Objeto = tipo de datos que engloba características
(estructuras de datos) del objeto del mundo real

 Los objetos modelan las características (atributos) y los

algoritmos para manipularlas (métodos).

Programación orientada 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.

Programación orientada a objetos

Lenguajes O.O.:
Simula (1967)
Smalltalk (1980)
Eiffel (1988)
Muchos de los actuales:

 C++, Objetive C, CLOS, Ada o Java.

Programación de tiempo real

Proporciona las técnicas para controlar el
funcionamiento de sistemas bajo ciertas

restricciones de tiempo

Control permanente y simultáneo sobre la ejecución
Manejo de interrupciones para cumplir las

restricciones.

Necesitan acceder directamente al HW de E/S.

Aplicaciones de control donde el sistema reacciona

ante un cambio de estado.

Ejemplos de programas

Modula-2
(* Copyright (C) 1987, 1990 Jensen & Partners
International *)
IMPLEMENTATION MODULE Strings;
PROCEDURE Assign ( source : ARRAY OF
CHAR ;
VAR dest : ARRAY OF CHAR ) ;
BEGIN
Str.Copy(dest,source) ;
END Assign ;
PROCEDURE Insert ( substr : ARRAY OF
CHAR;
VAR str : ARRAY OF CHAR ;
inx : CARDINAL ) ;
BEGIN
Str.Insert ( str,substr,inx ) ;
END Insert ;

PROCEDURE Pos ( substr : ARRAY OF
CHAR;
VAR str : ARRAY OF CHAR ) :
CARDINAL ;

BEGIN
RETURN Str.Pos(str,substr) ;
END Pos ;

PROCEDURE Copy ( str : ARRAY OF CHAR ;
inx : CARDINAL ;
len : CARDINAL ;
VAR result : ARRAY OF CHAR ) ;
BEGIN
Str.Slice(result,str,inx,len) ;
END Copy ;

PROCEDURE Concat ( s1,s2 : ARRAY OF
CHAR ;
  • Links de descarga
http://lwp-l.com/pdf14505

Comentarios de: Tema 1 - Paradigmas de programación - Programación Avanzada (0)


No hay comentarios
 

Comentar...

Nombre
Correo (no se visualiza en la web)
Valoración
Comentarios...
CerrarCerrar
CerrarCerrar
Cerrar

Tienes que ser un usuario registrado para poder insertar imágenes, archivos y/o videos.

Puedes registrarte o validarte desde aquí.

Codigo
Negrita
Subrayado
Tachado
Cursiva
Insertar enlace
Imagen externa
Emoticon
Tabular
Centrar
Titulo
Linea
Disminuir
Aumentar
Vista preliminar
sonreir
dientes
lengua
guiño
enfadado
confundido
llorar
avergonzado
sorprendido
triste
sol
estrella
jarra
camara
taza de cafe
email
beso
bombilla
amor
mal
bien
Es necesario revisar y aceptar las políticas de privacidad