Professional Documents
Culture Documents
Paradigmas de programación
Un paradigma de programación es un caso específico de paradigma. Por lo que necesitamos conocer la definición de paradigma
para entender la de paradigma de programación.
De esta manera, el paradigma sirve como guía a la hora de implementar un cierto lenguaje de programación, el cual tendrá que
cumplir lo diseñado.
Establecen clasificaciones:
o Clasifican los lenguajes de programación facilitando el entendimiento de su evolución, sus relaciones y sus
características.
Describen el lenguaje de programación:
o Podemos decir las características de un lenguaje en concreto en base al paradigma que cumple.
Ayuda a seleccionar el lenguaje que debemos utilizar en un desarrollo:
o Debido a unas necesidades en el desarrollo, recurriremos a un paradigma u a otro.
Ayuda a crear un nuevo lenguaje basándonos en los paradigmas que queremos que cumpla.
Niveles de cumplimento
No todos los lenguajes son blanco y negro, hay escala de grises por lo que necesitamos determinar el nivel de
cumplimento de los paradigmas en un lenguaje, de esta manera, distinguimos:
Paradigma obligatorio
o El paradigma se cumple inevitablemente.
Paradigma soportado
o El paradigma está muy preparado para ser utilizado, sería muy difícil hacer algo sin cumplir ese paradigma.
Paradigma permitido
o El paradigma es difícil de conseguir puesto que el lenguaje no está preparado para él, pero no imposible.
Paradigma no permitido
o El paradigma en cuestión es imposible de conseguir.
Clasificaciones de los paradigmas en súper-conjuntos. En base a una perspectiva.
Realizaremos clasificaciones de los PdP, mediante una perspectiva elevada.
Paradigmas de visión
Lenguajes de Paradigmas elevada, en base a una
Clasifica a Clasifica a perspectiva
programación
1. Perspectiva de clasificación
a. Según la clasificación que crean sobre los lenguajes:
i. Paradigmas generales:
1. Particionan el total de los
lenguajes de programación
2. No cumplir el paradigma tiene
relevancia
ii. Paradigmas complementarios
1. Pares de paradigmas dondeNo cumplir uno
significa cumplir el otro
iii. Paradigmas específicos:
1. Partición que afecta a todos los lenguajes, los cuales pueden cumplir o no el paradigma.
2. No cumplir el paradigma Es irrelevante
b. Según el tipo de restricciones que el paradigma establece en los lenguajes que lo cumplen:
i. Paradigmas de Objetivo:
1. Establecen la misión del lenguaje
2. Establece el significado de las sentencias (contenido del código)
ii. Paradigmas de Estructura:
1. Establecen la forma que debería seguir el programaPara evitar problemas y conseguir ventajas.
2. Perspectiva de evolución:
a. Primera línea evolutiva, el control de la memoria:
i. Imperativo > Declarativo
b. Segunda línea evolutiva, la estructura del código:
i. Sin organización > Estructurado > Orientado a Objetos > Orientado a Aspectos
c. Tercera línea evolutiva:
i. Secuencial > Concurrente > Distribuida > Cliente/Servidor
3. Perspectiva de relación con el hardware
a. Imperativo vs Declarativo:
i. Imperativo:
1. Como el hardware actual
ii. Declarativo:
1. Más cercano al estilo humano
2. Independiente del hardware.
b. Concurrencia paralela vs Concurrencia no paralela
c. Orientado a objetos:
i. Lejano del hardware
o Imperativa:
Orientado a la acción, describen como se utiliza la memoria para obtener los resultados.
Se sigue un control de flujo explícito que modifica el estado del programa. En este control, se ejecutan
sentencias que pueden ser:
De asignación (variables, expresiones, funciones, operadores)
De control de flujo (saltos, iteraciones, tratamiento de excepciones, etc.)
o Declarativo:
Describen qué se desea realizar con la memoria, no el manejo directo de ella.
No hay control de flujo explícito.
Dos tipos de paradigmas que cumplen el paradigma declarativo:
Funcional:
o Basado en funciones y expresiones, sin variables ni procedimientos explícitos y con un
uso acusado de la recursión.
o Ventajas:
Gran expresividad, extensibilidad y fácil de corregir
Ausencia de efectos laterales (sin problemas de seguridad)
o Inconvenientes:
Complicado(recursividad)
Lógico:
o Basado en la lógica de predicados, en el razonamiento lógico para responder a las
demandas del usuario.
o Maneja relaciones entre datos(hechos) en vez de funciones.
o Concurrente
Capaz de realizar simultáneamente varias tareas, dividimos mediante algoritmos el trabajo en tareas y
necesitamos nuevas librerías y hardware específico.
Dos enfoques distintos:
Concurrente de memoria compartida:
o Una única memoria para toda la máquina
o Comportamiento independiente del nº de procesadores
o Más procesadores Mayor rendimiento
Concurrencia distribuida:
o Varias máquinas y no memoria única.
o Los procesos se intercambian información a través de una red de comunicaciones.
o Orientado a objetos
El objeto:
Entidad central del paradigma
tipo de datos que engloba características del objeto del mundo real
Modela los atributos y contienen los algoritmos para manipularlos (métodos)
Es una evolución del paradigma de estructura, en donde se sigue una organización del código para
evitar problemas y obtener ventajas.
Ventajas:
Encapsulación Alto grado de reutilización del código
Abstracción
Facilidades, flexibilidad, proceso de creación más rápido.
o De tiempo real
Funcionamiento bajo Restricciones de tiempo
Características: Control permanente y simultáneo sobre la ejecución
Uso mayoritario en aplicaciones de control